Home » Archimedes archive » Acorn User » AU 1995-09.adf » !Regulars » Regulars/StarInfo/Marshall/!Lottery/!RunImage

Regulars/StarInfo/Marshall/!Lottery/!RunImage

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1995-09.adf » !Regulars
Filename: Regulars/StarInfo/Marshall/!Lottery/!RunImage
Read OK:
File size: 2FAB bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >Lottery
   20REM Chooses winning numbers (hopefully)
   30REM By P.E.Marshall
   40REM Version 1.01 12/3/95
   50
   60 quit=FALSE
   70 main_menu=TRUE
   80 DIM block% &800
   90 DIM fontarray 256
  100 FOR I%=0 TO 255:fontarray?I%=0:NEXT
  110 DIM main_menu% &200,menu_text% &200,menu2% &200
  120 DIM mainicon(20) : REM icon text addresses
  130 DIM entryicon(11)
  140 SYS"Wimp_Initialise" ,200,&4B534154,"Lotto" TO version,task
  150 spritearea=FNLoadSprites("<Lotto$Dir>.Sprites")
  160 iconbuflen = &2000
  170 DIM tempbuf iconbuflen, iconbuf iconbuflen
  180 next=iconbuf
  190 SYS "Wimp_OpenTemplate",,"<Lotto$Dir>.Templates"
  200 mainhandle = FNwindow_def("main")
  210 FOR I%=0 TO 14 : mainicon(I%) = FNiconaddr(mainhandle,I%) : NEXT
  220 SYS"Wimp_GetWindowInfo",,block%
  230 titleaddr=block%!76 : titlelen=block%!84
  240 infohandle = FNwindow_def("info")
  250 entryhandle=FNwindow_def("entry")
  260 FOR I%=0 TO 11 : entryicon(I%) = FNiconaddr(entryhandle,I%) : NEXT
  270 viewhandle  = FNwindow_def("view")
  280 namehandle = FNwindow_def("name")
  290 nameaddr =  FNiconaddr(namehandle,0)
  300 SYS"Wimp_CloseTemplate"
  310 rand=TRUE : byname=FALSE : com=FALSE : rare=FALSE
  320 PROCdefine_menus
  330 DIM number(6)
  340 DIM date$(200),drawn(7,200)
  350 date$()=""
  360 DIM freq(49)
  370 DIM col$(6)
  380 col$()="Sblack","Swhite","Sblue","Spink","Sgreen","Syellow"
  390 maxlines%=60
  400 DIM line$(maxlines%)
  410 PROCiconbar
  420 PROCopenup(mainhandle,200,1000,976,440)
  430 PROCread_data
  440 ON ERROR PROCerror
  450 REPEAT
  460   SYS"Wimp_Poll",0,block% TO reason,ptr%
  470   CASE reason OF
  480     WHEN 1:PROCredrawwindow
  490     WHEN 2:SYS "Wimp_OpenWindow",,ptr%
  500     WHEN 3:SYS "Wimp_CloseWindow",,ptr%
  510     WHEN 6:PROCclicked
  520     WHEN 8:PROCkeypress
  530     WHEN 9:PROCprocess_menu
  540     WHEN 17,18:PROCOSmessage
  550   ENDCASE
  560 UNTIL quit
  570 SYS"Wimp_CloseDown"
  580END
  590:
  600REM --------------------------------------------------------------------------
  610:
  620DEFFNLoadSprites(file$)
  630 LOCAL file%,size%,area%
  640 file%=OPENIN file$
  650 size%=(EXT#file%)+16
  660 CLOSE#file%
  670 DIM area% size%
  680 !area%=size%
  690 area%!8=0
  700 SYS "OS_SpriteOp",&109,area%
  710 SYS "OS_SpriteOp",&10A,area%,file$
  720=area%
  730:
  740DEFPROCread_data
  750 ch%=OPENIN("<lotto$Dir>.numbers")
  760 week=1
  770 REPEAT
  780   A$=GET$#ch%
  790   date$(week)=LEFT$(A$,INSTR(A$," "))
  800   N%=1
  810   REPEAT
  820     P%=INSTR(A$," ")
  830     A$=RIGHT$(A$,LENA$-P%)
  840     drawn(N%,week)=VAL(A$)
  850     N%+=1
  860   UNTIL N%=8 OR P%=0
  870   week+=1
  880 UNTIL EOF#ch%
  890 next_week=week
  900 week-=1
  910 CLOSE#ch%
  920 PROCshow_week(week)
  930ENDPROC
  940:
  950DEFPROCsave_new
  960 A$=$entryicon(0)
  970 date$(week)=A$
  980 IF A$="" THEN PROCtext_message("Enter a date in DD/MM/YY format"):ENDPROC
  990 ok=TRUE
 1000 FOR I%=1 TO 7
 1010   A$=A$+" "+$entryicon(I%)
 1020   drawn(I%,week)=VAL($entryicon(I%))
 1030   IF drawn(I%,week)<1 OR drawn(I%,week)>49 THEN ok=FALSE
 1040 NEXT
 1050 IF NOT ok THEN PROCtext_message("Error in number entry"):ENDPROC
 1060 FOR I%=1 TO week
 1070   IF week<>next_week THEN
 1080     IF INSTR(date$(I%),A$) OR INSTR(A$,date$(I%)) THEN ok=FALSE
 1090   ENDIF
 1100 NEXT
 1110 IF NOT ok THEN PROCtext_message("An entry for this date already exists"):ENDPROC
 1120 ch%=OPENUP("<lotto$Dir>.numbers")
 1130 PTR#ch%=EXT#ch%
 1140 BPUT#ch%,A$
 1150 CLOSE#ch%
 1160 next_week+=1
 1170 week+=1
 1180 PROCshow_week(week)
 1190 PROCstats
 1200 block%!0=viewhandle
 1210 SYS"Wimp_GetWindowState",,block%
 1220 PROCredrawwindow
 1230ENDPROC
 1240:
 1250DEFPROCrandom
 1260 I%=RND(-TIME)
 1270 number()=0
 1280 FOR ball=0 TO 5
 1290   REPEAT
 1300     ok=TRUE
 1310     N%=RND(49)
 1320     FOR I%=0 TO 5
 1330       IF number(I%)=N% THEN ok =FALSE
 1340     NEXT
 1350   UNTIL ok
 1360   number(ball)=N%
 1370 NEXT
 1380 PROCsort
 1390 PROCdisplay_balls
 1400ENDPROC
 1410:
 1420DEFPROCdisplay_balls
 1430 IF number(1)=0 THEN ENDPROC
 1440 SYS "OS_ReadModeVariable",MODE,9 TO r0,r1,r2
 1450 IF r2<>3 THEN col16 = TRUE ELSE col16 = FALSE
 1460 FOR ball=0 TO 5
 1470   PROCwrite_validation(mainhandle,ball,"Snull")
 1480   $mainicon(ball+8)=CHR$0
 1490   PROCupdate_icon(mainhandle,ball)
 1500   PROCwrite_validation(mainhandle,ball,FNcolour(number(ball)))
 1510   $mainicon(ball+8)=STR$(number(ball))+CHR$0
 1520   PROCupdate_icon(mainhandle,ball)
 1530 NEXT
 1540ENDPROC
 1550:
 1560DEFFNcolour(N%)
 1570 col$=col$(INT(N%/10+1))
 1580 IF col16 THEN col$=col$+"16"
 1590=col$
 1600:
 1610DEFPROCshow_week(week)
 1620 $entryicon(0)=date$(week)
 1630 $entryicon(11)=STR$(week)
 1640 PROCupdate_icon(entryhandle,11)
 1650 PROCupdate_icon(entryhandle,0)
 1660 FOR I%=1 TO 7
 1670   N%=drawn(I%,week)
 1680   IF N%<>0 THEN $entryicon(I%)=STR$N% ELSE $entryicon(I%)=""
 1690   PROCupdate_icon(entryhandle,I%)
 1700 NEXT
 1710ENDPROC
 1720:
 1730DEFPROCstats
 1740 freq()=0
 1750 FOR I%=1 TO next_week-1
 1760   FOR J%=1 TO 7
 1770     N%=drawn(J%,I%)
 1780     freq(N%)+=1
 1790   NEXT
 1800 NEXT
 1810 line$(1)=" Distribution after "+STR$(next_week-1)+" weeks:"
 1820 FOR I%=1 TO 49
 1830   line$(I%+2)="  "+RIGHT$(" "+STR$(I%),2)+"  "+STRING$(freq(I%)," �")
 1840 NEXT
 1850 line$(53)=" Totals by colour:"
 1860 line$(55)=" White   "+FNsum(1,9)
 1870 line$(56)=" Blue    "+FNsum(10,19)
 1880 line$(57)=" Pink    "+FNsum(20,29)
 1890 line$(58)=" Green   "+FNsum(30,39)
 1900 line$(59)=" Yellow  "+FNsum(40,49)
 1910ENDPROC
 1920:
 1930DEFFNsum(F%,T%)
 1940 S%=0
 1950 FOR I%=F% TO T%
 1960   S%+=freq(I%)
 1970 NEXT
 1980=STR$S%
 1990:
 2000DEFPROCsort
 2010 LOCAL J%,K%,L%
 2020 FOR K%=0 TO 5
 2030   L%=K%
 2040   FOR J%=K% TO 5
 2050     IF number(J%) < number(L%) THEN L%=J%
 2060   NEXT
 2070   SWAP number(K%),number(L%)
 2080 NEXT
 2090ENDPROC
 2100:
 2110DEFPROCnumbers_from_name
 2120 name$=$nameaddr
 2130 IF LEN name$<=6 THEN PROCtext_message("Your name needs more than 6 letters to work with"):ENDPROC
 2140 bin$="" : number()=0
 2150 REM letter in range 1 - 26, no case
 2160 FOR I%=LEN name$ TO 1 STEP -1
 2170   X%=ASC(MID$(name$,I%,1))
 2180   IF X%>32 THEN
 2190     IF X%>96 THEN X%-=96 ELSE X%-=64
 2200   ENDIF
 2210   N%=0
 2220   REM convert to 5 bit binary
 2230   REPEAT
 2240     IF (X% AND 2^N%) THEN bin$="1"+bin$ ELSE bin$="0"+bin$
 2250     N%+=1
 2260   UNTIL N%=5
 2270 NEXT
 2280 REM now a long binary string, divide into 6
 2290 N%=1 : L%=LEN(bin$)/6
 2300 FOR I%=1 TO 6
 2310   number(I%-1)=(EVAL("%"+MID$(bin$,N%,L%)) MOD49)+1
 2320   N%+=6
 2330 NEXT
 2340 PROCsort
 2350 PROCdisplay_balls
 2360 ok =TRUE
 2370 FOR I%=0 TO 5
 2380   FOR J%=0 TO 5
 2390     IF number(I%)=number(J%) AND I%<>J% THEN ok =FALSE
 2400   NEXT
 2410 NEXT
 2420 IF NOT ok THEN PROCtext_message("Sorry! your name did not generate 6 unique numbers")
 2430ENDPROC
 2440:
 2450DEFPROCrare_numbers
 2460 PROCstats
 2470 low=1E6
 2480 FOR I%=1 TO 49
 2490   X%=freq(I%)
 2500   IF X%<low THEN low=X%
 2510 NEXT
 2520 number()=0
 2530 FOR ball=0 TO 5
 2540   count=0
 2550   REPEAT
 2560     X%=RND(49)
 2570     count+=1
 2580     IF count>1000 THEN count=0 : low+=1
 2590     ok=TRUE
 2600     FOR J%=0 TO 5
 2610       IF X%=number(J%) THEN ok=FALSE
 2620     NEXT
 2630   UNTIL  freq(X%)=low AND ok
 2640 number(ball)=X%
 2650 NEXT
 2660 PROCsort
 2670 PROCdisplay_balls
 2680ENDPROC
 2690:
 2700DEFPROCcommon_numbers
 2710 PROCstats
 2720 high=0
 2730 FOR I%=1 TO 49
 2740   X%=freq(I%)
 2750   IF X%>high THEN high=X%
 2760 NEXT
 2770 number()=0
 2780 FOR ball=0 TO 5
 2790   count=0
 2800   REPEAT
 2810     X%=RND(49)
 2820     count+=1
 2830     IF count>1000 THEN count=0 : high-=1
 2840     ok=TRUE
 2850     FOR J%=0 TO 5
 2860       IF X%=number(J%) THEN ok=FALSE
 2870     NEXT
 2880   UNTIL  freq(X%)=high AND ok
 2890 number(ball)=X%
 2900 NEXT
 2910 PROCsort
 2920 PROCdisplay_balls
 2930ENDPROC
 2940:
 2950DEFFNwindow_def(name$)
 2960 SYS"Wimp_LoadTemplate",,tempbuf,next,iconbuf+iconbuflen,fontarray,name$,0 TO ,,next
 2970 tempbuf!64=spritearea
 2980 SYS"Wimp_CreateWindow",,tempbuf TO handle
 2990=handle
 3000:
 3010DEFFNiconaddr(window,icon)
 3020 block%!0=window : block%!4=icon
 3030 SYS"Wimp_GetIconState",,block%
 3040= block%!28
 3050:
 3060DEFPROCopenup(window,x,y,w,h)
 3070 block%!0=window
 3080 block%!4=x   : block%!8=y-h
 3090 block%!12=x+w: block%!16=y
 3100 block%!20=0  : block%!24=0
 3110 block%!28=-1
 3120 SYS "Wimp_OpenWindow",,block%
 3130ENDPROC
 3140:
 3150DEFPROCdefine_menus
 3160 flags=&7000121
 3170 P%=main_menu%
 3180 addr=menu_text%
 3190 PROCmenu_header("Lottery",16)
 3200 PROCmenu_item(&00,infohandle,flags,"Info")
 3210 PROCmenu_item(&00,-1,flags,"Lucky Numbers")
 3220 PROCmenu_item(&00,-1,flags,"Past Winners")
 3230 PROCmenu_item(&02,-1,flags,"Statistics")
 3240 PROCmenu_item(&80,-1,flags,"Quit")
 3250 P%=menu2%
 3260 PROCmenu_header("Choose by...",16)
 3270 PROCmenu_item(&00-rand,-1,flags,"Random")
 3280 PROCmenu_item(&00-rare,-1,flags,"Infrequent")
 3290 PROCmenu_item(&00-com,-1,flags,"Frequent")
 3300 PROCmenu_item(&80-byname,namehandle,flags,"By name")
 3310ENDPROC
 3320:
 3330DEFPROCprocess_menu
 3340 IF main_menu THEN
 3350   CASE ptr%!0 OF
 3360     WHEN 1:PROCopenup(mainhandle,200,1000,976,440)
 3370     WHEN 2:PROCopenup(entryhandle,200,800,1076,324):PROCcaret(entryhandle,0)
 3380     WHEN 3:PROCstats:PROCopenup(viewhandle,200,1000,500,900)
 3390     WHEN 4:quit=TRUE
 3400   ENDCASE
 3410 ELSE
 3420   CASE ptr%!0 OF
 3430     WHEN 0:rand=TRUE:byname=FALSE:com=FALSE:rare=FALSE:PROCdefine_menus
 3440            PROCcaption("Completely Random")
 3450            PROCrandom
 3460     WHEN 1:rand=FALSE:byname=FALSE:com=FALSE:rare=TRUE:PROCdefine_menus
 3470            PROCcaption("Rarely drawn numbers")
 3480            PROCrare_numbers
 3490     WHEN 2:rand=FALSE:byname=FALSE:com=TRUE:rare=FALSE:PROCdefine_menus
 3500            PROCcaption("Frequently drawn numbers")
 3510            PROCcommon_numbers
 3520     WHEN 3:rand=FALSE:byname=TRUE:com=FALSE:rare=FALSE:PROCdefine_menus
 3530            PROCcaption($nameaddr)
 3540            PROCnumbers_from_name
 3550     ENDCASE
 3560 ENDIF
 3570ENDPROC
 3580:
 3590DEFPROCclicked
 3600 X%=ptr%!0-64 : Y%=ptr%!4+64 : button=ptr%!8 : window=ptr%!12 : icon=ptr%!16
 3610 CASE window OF
 3620   WHEN mainhandle
 3630     CASE icon OF
 3640       WHEN 7,14: IF rand THEN PROCrandom
 3650                  IF rare THEN PROCrare_numbers
 3660                  IF com  THEN PROCcommon_numbers
 3670       WHEN 6: main_menu=FALSE : SYS "Wimp_CreateMenu",,menu2%,X%,Y%
 3680     OTHERWISE
 3690       IF button AND 2 THEN main_menu=TRUE : SYS "Wimp_CreateMenu",,main_menu%,X%,Y%
 3700     ENDCASE
 3710   WHEN entryhandle
 3720     CASE icon OF
 3730        WHEN 12:week=1 : PROCshow_week(week)
 3740        WHEN 13:IF week>1 THEN week-=1 : PROCshow_week(week)
 3750        WHEN 14:IF week<next_week THEN week+=1 : PROCshow_week(week)
 3760        WHEN 15:week=next_week : PROCshow_week(week)
 3770        WHEN 8:PROCsave_new
 3780     OTHERWISE
 3790        main_menu=TRUE : SYS "Wimp_CreateMenu",,main_menu%,X%,Y%
 3800     ENDCASE
 3810     PROCcaret(entryhandle,0)
 3820   WHEN viewhandle
 3830     IF button AND 2 THEN main_menu=TRUE : SYS "Wimp_CreateMenu",,main_menu%,X%,Y%
 3840   WHEN -2 : REM iconbar
 3850     IF button AND 2 THEN main_menu=TRUE :SYS "Wimp_CreateMenu",,main_menu%,X%,328
 3860     IF (button AND 4) THEN
 3870       block%!0=mainhandle
 3880       SYS"Wimp_GetWindowState",,block%
 3890       block%!28=-1
 3900       SYS"Wimp_OpenWindow",,block%
 3910     ENDIF
 3920 ENDCASE
 3930ENDPROC
 3940:
 3950DEFPROCmenu_header(T$,w)
 3960 $P%=T$ : P%!12=&70207 : P%!16=w*16 : P%!20=34 : P%!24=8
 3970 P%+=28
 3980ENDPROC
 3990:
 4000DEFPROCmenu_item(menflg,sub,icflg,T$)
 4010 P%!0=menflg : P%!4=sub : P%!8=icflg
 4020 P%!12=addr  : P%!16=-1 : P%!20=LEN T$
 4030 P%+=24
 4040 $addr=T$+CHR$0 : addr+=LEN T$+1
 4050ENDPROC
 4060:
 4070DEFPROCredrawwindow
 4080 handle=ptr%!0
 4090 SYS "Wimp_RedrawWindow",,ptr% TO flag
 4100 WHILE flag<>0
 4110     IF handle=viewhandle THEN PROCwrite_view_window
 4120     SYS "Wimp_GetRectangle",,ptr% TO flag
 4130 ENDWHILE
 4140ENDPROC
 4150:
 4160DEFPROCwrite_view_window
 4170 REM compact version!
 4180 P% = -ptr%!24+(ptr%!16-ptr%!40)
 4190 Q% =  ptr%!20+(ptr%!28-ptr%!4)
 4200 L% = P% DIV 32
 4210 C% = Q% DIV16+1
 4220 N% = (ptr%!36-ptr%!28)DIV16+2
 4230 Y% = ptr%!40+P%MOD32-4
 4240 X% = ptr%!28-Q%MOD16
 4250 FOR I%=0 TO (ptr%!40-ptr%!32)DIV32+1
 4260   MOVE X%,Y%
 4270   IF L%<maxlines% THEN PRINT MID$(line$(L%),C%,N%)
 4280   L%+=1 : Y%-=32
 4290 NEXT
 4300ENDPROC
 4310:
 4320DEFPROCOSmessage
 4330 action=block%!16
 4340 CASE action OF
 4350   WHEN 0 : quit=TRUE
 4360   WHEN &400C1 :PROCdisplay_balls
 4370 ENDCASE
 4380ENDPROC
 4390:
 4400DEFPROCkeypress
 4410 window = ptr%!0 : icon = ptr%!4 : char = ptr%!24
 4420 IF window=namehandle THEN
 4430   IF char=13 THEN
 4440      rand=FALSE:byname=TRUE:com=FALSE:rare=FALSE:PROCdefine_menus
 4450      PROCcaption($nameaddr)
 4460      SYS"Wimp_CreateMenu",,-1
 4470      PROCnumbers_from_name
 4480   ENDIF
 4490 ENDIF
 4500 SYS "Wimp_ProcessKey",ptr%!24: REM pass key on
 4510ENDPROC
 4520:
 4530DEFPROCshut(window)
 4540 block%!0=window
 4550 SYS "Wimp_CloseWindow",,block%
 4560ENDPROC
 4570:
 4580DEFPROCerror
 4590 !block%=0
 4600 $(block%+4)=REPORT$+"  "+STR$ERL+CHR$0
 4610 SYS"Wimp_ReportError",block%,2,"Lottery"+CHR$0
 4620 quit=TRUE
 4630ENDPROC
 4640:
 4650DEFPROCtext_message(A$)
 4660 !block%=0
 4670 $(block%+4)=A$+CHR$0
 4680 SYS"Wimp_ReportError",block%,16,"Lottery"+CHR$0
 4690ENDPROC
 4700:
 4710DEFPROCiconbar
 4720 block%!0=-1
 4730 block%!4=0
 4740 block%!8=0
 4750 block%!12=68
 4760 block%!16=68
 4770 block%!20=&3002
 4780 $(block%+24)="!Lottery"
 4790 SYS "Wimp_CreateIcon",,block% TO iconbar
 4800ENDPROC
 4810:
 4820DEFPROCupdate_icon(H%,I%)
 4830 block%!0=H% : block%!4=I%
 4840 block%!8=0 : block%!12=0
 4850 SYS &400CD,,block% : REM "Wimp_SetIconState"
 4860ENDPROC
 4870:
 4880DEFPROCset_icon(I%,S%)
 4890 block%!0=mainhandle : block%!4=I%
 4900 IF S% THEN block%!8=&200000 ELSE block%!8=0
 4910 block%!12=&200000
 4920 SYS &400CD,,block% : REM "Wimp_SetIconState"
 4930ENDPROC
 4940:
 4950DEFPROCgrey(I%,S%)
 4960   block%!0=mainhandle : block%!4=I%
 4970   IF S% THEN block%!8=&400000 ELSE block%!8=0
 4980   block%!12=&400000
 4990   SYS &400CD,,block% : REM "Wimp_SetIconState"
 5000ENDPROC
 5010:
 5020DEFPROCcaret(H%,I%)
 5030 SYS"Wimp_SetCaretPosition",H%,I%,0,0,-1,0
 5040ENDPROC
 5050:
 5060DEFPROCwrite_validation(window,icon,text$)
 5070 block%!0=window
 5080 block%!4=icon
 5090 SYS "Wimp_GetIconState",,block%
 5100 $(block%!32)=text$+CHR$0
 5110 block%!8=0 : block%!12=0
 5120 SYS "Wimp_SetIconState",,block%
 5130ENDPROC
 5140:
 5150DEFPROCcaption(A$)
 5160 $mainicon(6)=A$+CHR$0
 5170 PROCupdate_icon(mainhandle,6)
 5180ENDPROC
 5190 

� >Lottery
)� Chooses winning numbers (hopefully)
� By P.E.Marshall
(� Version 1.01 12/3/95
2
< quit=�
F main_menu=�
P � block% &800
Z � fontarray 256
d" � I%=0 � 255:fontarray?I%=0:�
n2 � main_menu% &200,menu_text% &200,menu2% &200
x+ � mainicon(20) : � icon text addresses
� � entryicon(11)
�> ș"Wimp_Initialise" ,200,&4B534154,"Lotto" � version,task
�3 spritearea=�LoadSprites("<Lotto$Dir>.Sprites")
� iconbuflen = &2000
�- � tempbuf iconbuflen, iconbuf iconbuflen
� next=iconbuf
�4 ș "Wimp_OpenTemplate",,"<Lotto$Dir>.Templates"
�% mainhandle = �window_def("main")
�> � I%=0 � 14 : mainicon(I%) = �iconaddr(mainhandle,I%) : �
�# ș"Wimp_GetWindowInfo",,block%
�- titleaddr=block%!76 : titlelen=block%!84
�% infohandle = �window_def("info")
�% entryhandle=�window_def("entry")
@ � I%=0 � 11 : entryicon(I%) = �iconaddr(entryhandle,I%) : �
& viewhandle  = �window_def("view")
% namehandle = �window_def("name")
"( nameaddr =  �iconaddr(namehandle,0)
, ș"Wimp_CloseTemplate"
6' rand=� : byname=� : com=� : rare=�
@ �define_menus
J � number(6)
T � date$(200),drawn(7,200)
^ date$()=""
h � freq(49)
r � col$(6)
|@ col$()="Sblack","Swhite","Sblue","Spink","Sgreen","Syellow"
� maxlines%=60
� � line$(maxlines%)
�
 �iconbar
�) �openup(mainhandle,200,1000,976,440)
� �read_data
� � � �error
� �
�+   ș"Wimp_Poll",0,block% � reason,ptr%
�   Ȏ reason �
�     � 1:�redrawwindow
�'     � 2:ș "Wimp_OpenWindow",,ptr%
�(     � 3:ș "Wimp_CloseWindow",,ptr%
�     � 6:�clicked
     � 8:�keypress
     � 9:�process_menu
     � 17,18:�OSmessage
&   �
0 � quit
: ș"Wimp_CloseDown"
D�
N:
XP� --------------------------------------------------------------------------
b:
lݤLoadSprites(file$)
v � file%,size%,area%
� file%=� file$
� size%=(�#file%)+16
� �#file%
� � area% size%
� !area%=size%
� area%!8=0
�  ș "OS_SpriteOp",&109,area%
�& ș "OS_SpriteOp",&10A,area%,file$
�
=area%
�:
���read_data
�! ch%=�("<lotto$Dir>.numbers")
� week=1
 �
   A$=�#ch%
    date$(week)=�A$,�A$," "))
    N%=1
*   �
4     P%=�A$," ")
>     A$=�A$,�A$-P%)
H     drawn(N%,week)=�(A$)
R     N%+=1
\   � N%=8 � P%=0
f   week+=1
p � �#ch%
z next_week=week
� week-=1
�
 �#ch%
� �show_week(week)
��
�:
���save_new
� A$=$entryicon(0)
� date$(week)=A$
�A � A$="" � �text_message("Enter a date in DD/MM/YY format"):�
�	 ok=�
� � I%=1 � 7
�   A$=A$+" "+$entryicon(I%)
�'   drawn(I%,week)=�($entryicon(I%))
4   � drawn(I%,week)<1 � drawn(I%,week)>49 � ok=�
 �
6 � � ok � �text_message("Error in number entry"):�
$ � I%=1 � week
.   � week<>next_week �
81     � �date$(I%),A$) � �A$,date$(I%)) � ok=�
B   �
L �
VF � � ok � �text_message("An entry for this date already exists"):�
`! ch%=�("<lotto$Dir>.numbers")
j �#ch%=�#ch%
t
 �#ch%,A$
~
 �#ch%
� next_week+=1
� week+=1
� �show_week(week)
� �stats
� block%!0=viewhandle
�$ ș"Wimp_GetWindowState",,block%
� �redrawwindow
��
�:
���random
�
 I%=�(-�)
� number()=0
 � ball=0 � 5

   �

     ok=�
     N%=�(49)
(     � I%=0 � 5
2"       � number(I%)=N% � ok =�
<
     �
F   � ok
P   number(ball)=N%
Z �
d
 �sort
n �display_balls
x�
�:
���display_balls
� � number(1)=0 � �
�, ș "OS_ReadModeVariable",�,9 � r0,r1,r2
�$ � r2<>3 � col16 = � � col16 = �
� � ball=0 � 5
�1   �write_validation(mainhandle,ball,"Snull")
�   $mainicon(ball+8)=�0
�$   �update_icon(mainhandle,ball)
�?   �write_validation(mainhandle,ball,�colour(number(ball)))
�+   $mainicon(ball+8)=�(number(ball))+�0
�$   �update_icon(mainhandle,ball)
� �
�
:
ݤcolour(N%)
" col$=col$(�(N%/10+1))
, � col16 � col$=col$+"16"
6	=col$
@:
J��show_week(week)
T $entryicon(0)=date$(week)
^ $entryicon(11)=�(week)
h! �update_icon(entryhandle,11)
r  �update_icon(entryhandle,0)
| � I%=1 � 7
�   N%=drawn(I%,week)
�7   � N%<>0 � $entryicon(I%)=�N% � $entryicon(I%)=""
�#   �update_icon(entryhandle,I%)
� �
��
�:
���stats
�
 freq()=0
� � I%=1 � next_week-1
�   � J%=1 � 7
�     N%=drawn(J%,I%)
�     freq(N%)+=1
�   �
 �
= line$(1)=" Distribution after "+�(next_week-1)+" weeks:"
 � I%=1 � 49
&:   line$(I%+2)="  "+�" "+�(I%),2)+"  "+�freq(I%)," �")
0 �
:# line$(53)=" Totals by colour:"
D$ line$(55)=" White   "+�sum(1,9)
N& line$(56)=" Blue    "+�sum(10,19)
X& line$(57)=" Pink    "+�sum(20,29)
b& line$(58)=" Green   "+�sum(30,39)
l& line$(59)=" Yellow  "+�sum(40,49)
v�
�:
�ݤsum(F%,T%)
�	 S%=0
� � I%=F% � T%
�   S%+=freq(I%)
� �
�=�S%
�:
�
��sort
� � J%,K%,L%
� � K%=0 � 5
�   L%=K%
�   � J%=K% � 5
*     � number(J%) < number(L%) � L%=J%
   �
   Ȕ number(K%),number(L%)
  �
*�
4:
>��numbers_from_name
H name$=$nameaddr
RW � � name$<=6 � �text_message("Your name needs more than 6 letters to work with"):�
\ bin$="" : number()=0
f& � letter in range 1 - 26, no case
p � I%=� name$ � 1 � -1
z   X%=�(�name$,I%,1))
�   � X%>32 �
�"     � X%>96 � X%-=96 � X%-=64
�   �
�   N%=0
�    � convert to 5 bit binary
�   �
�6     � (X% � 2^N%) � bin$="1"+bin$ � bin$="0"+bin$
�     N%+=1
�
   � N%=5
� �
�. � now a long binary string, divide into 6
� N%=1 : L%=�(bin$)/6
� � I%=1 � 6
	/   number(I%-1)=(�("%"+�bin$,N%,L%)) �49)+1
	   N%+=6
	 �
	$
 �sort
	. �display_balls
	8
 ok =�
	B � I%=0 � 5
	L   � J%=0 � 5
	V1     � number(I%)=number(J%) � I%<>J% � ok =�
	`   �
	j �
	tQ � � ok � �text_message("Sorry! your name did not generate 6 unique numbers")
	~�
	�:
	���rare_numbers
	� �stats
	� low=1E6
	� � I%=1 � 49
	�   X%=freq(I%)
	�   � X%<low � low=X%
	� �
	� number()=0
	� � ball=0 � 5
	�   count=0
	�   �
     X%=�(49)

     count+=1
(     � count>1000 � count=0 : low+=1

     ok=�
(     � J%=0 � 5
2!       � X%=number(J%) � ok=�
<
     �
F   �  freq(X%)=low � ok
P number(ball)=X%
Z �
d
 �sort
n �display_balls
x�
�:
���common_numbers
� �stats
� high=0
� � I%=1 � 49
�   X%=freq(I%)
�   � X%>high � high=X%
� �
� number()=0
� � ball=0 � 5
�   count=0
�   �
�     X%=�(49)
     count+=1
)     � count>1000 � count=0 : high-=1

     ok=�
"     � J%=0 � 5
,!       � X%=number(J%) � ok=�
6
     �
@   �  freq(X%)=high � ok
J number(ball)=X%
T �
^
 �sort
h �display_balls
r�
|:
�ݤwindow_def(name$)
�V ș"Wimp_LoadTemplate",,tempbuf,next,iconbuf+iconbuflen,fontarray,name$,0 � ,,next
� tempbuf!64=spritearea
�, ș"Wimp_CreateWindow",,tempbuf � handle
�=handle
�:
�ݤiconaddr(window,icon)
�$ block%!0=window : block%!4=icon
�" ș"Wimp_GetIconState",,block%
�= block%!28
�:
���openup(window,x,y,w,h)
� block%!0=window
  block%!4=x   : block%!8=y-h
 block%!12=x+w: block%!16=y
 block%!20=0  : block%!24=0
& block%!28=-1
0! ș "Wimp_OpenWindow",,block%
:�
D:
N��define_menus
X flags=&7000121
b P%=main_menu%
l addr=menu_text%
v �menu_header("Lottery",16)
�, �menu_item(&00,infohandle,flags,"Info")
�- �menu_item(&00,-1,flags,"Lucky Numbers")
�, �menu_item(&00,-1,flags,"Past Winners")
�* �menu_item(&02,-1,flags,"Statistics")
�$ �menu_item(&80,-1,flags,"Quit")
� P%=menu2%
�$ �menu_header("Choose by...",16)
�+ �menu_item(&00-rand,-1,flags,"Random")
�/ �menu_item(&00-rare,-1,flags,"Infrequent")
�, �menu_item(&00-com,-1,flags,"Frequent")
�6 �menu_item(&80-byname,namehandle,flags,"By name")
��
�:

��process_menu

 � main_menu �

   Ȏ ptr%!0 �

 1     � 1:�openup(mainhandle,200,1000,976,440)

*H     � 2:�openup(entryhandle,200,800,1076,324):�caret(entryhandle,0)

48     � 3:�stats:�openup(viewhandle,200,1000,500,900)

>     � 4:quit=�

H   �

R �

\   Ȏ ptr%!0 �

f7     � 0:rand=�:byname=�:com=�:rare=�:�define_menus

p-            �caption("Completely Random")

z            �random

�7     � 1:rand=�:byname=�:com=�:rare=�:�define_menus

�0            �caption("Rarely drawn numbers")

�            �rare_numbers

�7     � 2:rand=�:byname=�:com=�:rare=�:�define_menus

�4            �caption("Frequently drawn numbers")

�            �common_numbers

�7     � 3:rand=�:byname=�:com=�:rare=�:�define_menus

�#            �caption($nameaddr)

�"            �numbers_from_name

�
     �

� �

��

�:

��clicked
P X%=ptr%!0-64 : Y%=ptr%!4+64 : button=ptr%!8 : window=ptr%!12 : icon=ptr%!16
 Ȏ window �
$   � mainhandle
.     Ȏ icon �
8#       � 7,14: � rand � �random
B,                  � rare � �rare_numbers
L.                  � com  � �common_numbers
V@       � 6: main_menu=� : ș "Wimp_CreateMenu",,menu2%,X%,Y%
`
     
jN       � button � 2 � main_menu=� : ș "Wimp_CreateMenu",,main_menu%,X%,Y%
t
     �
~   � entryhandle
�     Ȏ icon �
�*        � 12:week=1 : �show_week(week)
�6        � 13:� week>1 � week-=1 : �show_week(week)
�>        � 14:� week<next_week � week+=1 : �show_week(week)
�2        � 15:week=next_week : �show_week(week)
�        � 8:�save_new
�
     
�@        main_menu=� : ș "Wimp_CreateMenu",,main_menu%,X%,Y%
�
     �
�     �caret(entryhandle,0)
�   � viewhandle
�L     � button � 2 � main_menu=� : ș "Wimp_CreateMenu",,main_menu%,X%,Y%
   � -2 : � iconbar

L     � button � 2 � main_menu=� :ș "Wimp_CreateMenu",,main_menu%,X%,328
     � (button � 4) �
       block%!0=mainhandle
(*       ș"Wimp_GetWindowState",,block%
2       block%!28=-1
<&       ș"Wimp_OpenWindow",,block%
F
     �
P �
Z�
d:
n��menu_header(T$,w)
x< $P%=T$ : P%!12=&70207 : P%!16=w*16 : P%!20=34 : P%!24=8
� P%+=28
��
�:
�$��menu_item(menflg,sub,icflg,T$)
�( P%!0=menflg : P%!4=sub : P%!8=icflg
�( P%!12=addr  : P%!16=-1 : P%!20=� T$
� P%+=24
� $addr=T$+�0 : addr+=� T$+1
��
�:
���redrawwindow
� handle=ptr%!0
�( ș "Wimp_RedrawWindow",,ptr% � flag
 ȕ flag<>0
1     � handle=viewhandle � �write_view_window
,     ș "Wimp_GetRectangle",,ptr% � flag
" �
,�
6:
@��write_view_window
J � compact version!
T$ P% = -ptr%!24+(ptr%!16-ptr%!40)
^# Q% =  ptr%!20+(ptr%!28-ptr%!4)
h L% = P% � 32
r C% = Q% �16+1
|  N% = (ptr%!36-ptr%!28)�16+2
� Y% = ptr%!40+P%�32-4
� X% = ptr%!28-Q%�16
�$ � I%=0 � (ptr%!40-ptr%!32)�32+1
�   � X%,Y%
�+   � L%<maxlines% � � �line$(L%),C%,N%)
�   L%+=1 : Y%-=32
� �
��
�:
���OSmessage
� action=block%!16
� Ȏ action �
�   � 0 : quit=�
   � &400C1 :�display_balls
 �
�
&:
0��keypress
:5 window = ptr%!0 : icon = ptr%!4 : char = ptr%!24
D � window=namehandle �
N   � char=13 �
X4      rand=�:byname=�:com=�:rare=�:�define_menus
b      �caption($nameaddr)
l!      ș"Wimp_CreateMenu",,-1
v      �numbers_from_name
�   �
� �
�0 ș "Wimp_ProcessKey",ptr%!24: � pass key on
��
�:
���shut(window)
� block%!0=window
�" ș "Wimp_CloseWindow",,block%
��
�:
���error
� !block%=0
� $(block%+4)=�$+"  "+Þ+�0
/ ș"Wimp_ReportError",block%,2,"Lottery"+�0
 quit=�
�
 :
*��text_message(A$)
4 !block%=0
> $(block%+4)=A$+�0
H0 ș"Wimp_ReportError",block%,16,"Lottery"+�0
R�
\:
f
��iconbar
p block%!0=-1
z block%!4=0
� block%!8=0
� block%!12=68
� block%!16=68
� block%!20=&3002
� $(block%+24)="!Lottery"
�+ ș "Wimp_CreateIcon",,block% � iconbar
��
�:
���update_icon(H%,I%)
� block%!0=H% : block%!4=I%
� block%!8=0 : block%!12=0
�. ș &400CD,,block% : � "Wimp_SetIconState"
��
:
��set_icon(I%,S%)
& block%!0=mainhandle : block%!4=I%
$) � S% � block%!8=&200000 � block%!8=0
. block%!12=&200000
8. ș &400CD,,block% : � "Wimp_SetIconState"
B�
L:
V��grey(I%,S%)
`(   block%!0=mainhandle : block%!4=I%
j+   � S% � block%!8=&400000 � block%!8=0
t   block%!12=&400000
~0   ș &400CD,,block% : � "Wimp_SetIconState"
��
�:
���caret(H%,I%)
�- ș"Wimp_SetCaretPosition",H%,I%,0,0,-1,0
��
�:
�)��write_validation(window,icon,text$)
� block%!0=window
� block%!4=icon
�# ș "Wimp_GetIconState",,block%
� $(block%!32)=text$+�0
� block%!8=0 : block%!12=0
# ș "Wimp_SetIconState",,block%

�
:
��caption(A$)
( $mainicon(6)=A$+�0
2 �update_icon(mainhandle,6)
<�
F 
�
00000000  0d 00 0a 0e f4 20 3e 4c  6f 74 74 65 72 79 0d 00  |..... >Lottery..|
00000010  14 29 f4 20 43 68 6f 6f  73 65 73 20 77 69 6e 6e  |.). Chooses winn|
00000020  69 6e 67 20 6e 75 6d 62  65 72 73 20 28 68 6f 70  |ing numbers (hop|
00000030  65 66 75 6c 6c 79 29 0d  00 1e 15 f4 20 42 79 20  |efully)..... By |
00000040  50 2e 45 2e 4d 61 72 73  68 61 6c 6c 0d 00 28 1a  |P.E.Marshall..(.|
00000050  f4 20 56 65 72 73 69 6f  6e 20 31 2e 30 31 20 31  |. Version 1.01 1|
00000060  32 2f 33 2f 39 35 0d 00  32 04 0d 00 3c 0b 20 71  |2/3/95..2...<. q|
00000070  75 69 74 3d a3 0d 00 46  10 20 6d 61 69 6e 5f 6d  |uit=...F. main_m|
00000080  65 6e 75 3d b9 0d 00 50  12 20 de 20 62 6c 6f 63  |enu=...P. . bloc|
00000090  6b 25 20 26 38 30 30 0d  00 5a 14 20 de 20 66 6f  |k% &800..Z. . fo|
000000a0  6e 74 61 72 72 61 79 20  32 35 36 0d 00 64 22 20  |ntarray 256..d" |
000000b0  e3 20 49 25 3d 30 20 b8  20 32 35 35 3a 66 6f 6e  |. I%=0 . 255:fon|
000000c0  74 61 72 72 61 79 3f 49  25 3d 30 3a ed 0d 00 6e  |tarray?I%=0:...n|
000000d0  32 20 de 20 6d 61 69 6e  5f 6d 65 6e 75 25 20 26  |2 . main_menu% &|
000000e0  32 30 30 2c 6d 65 6e 75  5f 74 65 78 74 25 20 26  |200,menu_text% &|
000000f0  32 30 30 2c 6d 65 6e 75  32 25 20 26 32 30 30 0d  |200,menu2% &200.|
00000100  00 78 2b 20 de 20 6d 61  69 6e 69 63 6f 6e 28 32  |.x+ . mainicon(2|
00000110  30 29 20 3a 20 f4 20 69  63 6f 6e 20 74 65 78 74  |0) : . icon text|
00000120  20 61 64 64 72 65 73 73  65 73 0d 00 82 14 20 de  | addresses.... .|
00000130  20 65 6e 74 72 79 69 63  6f 6e 28 31 31 29 0d 00  | entryicon(11)..|
00000140  8c 3e 20 c8 99 22 57 69  6d 70 5f 49 6e 69 74 69  |.> .."Wimp_Initi|
00000150  61 6c 69 73 65 22 20 2c  32 30 30 2c 26 34 42 35  |alise" ,200,&4B5|
00000160  33 34 31 35 34 2c 22 4c  6f 74 74 6f 22 20 b8 20  |34154,"Lotto" . |
00000170  76 65 72 73 69 6f 6e 2c  74 61 73 6b 0d 00 96 33  |version,task...3|
00000180  20 73 70 72 69 74 65 61  72 65 61 3d a4 4c 6f 61  | spritearea=.Loa|
00000190  64 53 70 72 69 74 65 73  28 22 3c 4c 6f 74 74 6f  |dSprites("<Lotto|
000001a0  24 44 69 72 3e 2e 53 70  72 69 74 65 73 22 29 0d  |$Dir>.Sprites").|
000001b0  00 a0 17 20 69 63 6f 6e  62 75 66 6c 65 6e 20 3d  |... iconbuflen =|
000001c0  20 26 32 30 30 30 0d 00  aa 2d 20 de 20 74 65 6d  | &2000...- . tem|
000001d0  70 62 75 66 20 69 63 6f  6e 62 75 66 6c 65 6e 2c  |pbuf iconbuflen,|
000001e0  20 69 63 6f 6e 62 75 66  20 69 63 6f 6e 62 75 66  | iconbuf iconbuf|
000001f0  6c 65 6e 0d 00 b4 11 20  6e 65 78 74 3d 69 63 6f  |len.... next=ico|
00000200  6e 62 75 66 0d 00 be 34  20 c8 99 20 22 57 69 6d  |nbuf...4 .. "Wim|
00000210  70 5f 4f 70 65 6e 54 65  6d 70 6c 61 74 65 22 2c  |p_OpenTemplate",|
00000220  2c 22 3c 4c 6f 74 74 6f  24 44 69 72 3e 2e 54 65  |,"<Lotto$Dir>.Te|
00000230  6d 70 6c 61 74 65 73 22  0d 00 c8 25 20 6d 61 69  |mplates"...% mai|
00000240  6e 68 61 6e 64 6c 65 20  3d 20 a4 77 69 6e 64 6f  |nhandle = .windo|
00000250  77 5f 64 65 66 28 22 6d  61 69 6e 22 29 0d 00 d2  |w_def("main")...|
00000260  3e 20 e3 20 49 25 3d 30  20 b8 20 31 34 20 3a 20  |> . I%=0 . 14 : |
00000270  6d 61 69 6e 69 63 6f 6e  28 49 25 29 20 3d 20 a4  |mainicon(I%) = .|
00000280  69 63 6f 6e 61 64 64 72  28 6d 61 69 6e 68 61 6e  |iconaddr(mainhan|
00000290  64 6c 65 2c 49 25 29 20  3a 20 ed 0d 00 dc 23 20  |dle,I%) : ....# |
000002a0  c8 99 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |.."Wimp_GetWindo|
000002b0  77 49 6e 66 6f 22 2c 2c  62 6c 6f 63 6b 25 0d 00  |wInfo",,block%..|
000002c0  e6 2d 20 74 69 74 6c 65  61 64 64 72 3d 62 6c 6f  |.- titleaddr=blo|
000002d0  63 6b 25 21 37 36 20 3a  20 74 69 74 6c 65 6c 65  |ck%!76 : titlele|
000002e0  6e 3d 62 6c 6f 63 6b 25  21 38 34 0d 00 f0 25 20  |n=block%!84...% |
000002f0  69 6e 66 6f 68 61 6e 64  6c 65 20 3d 20 a4 77 69  |infohandle = .wi|
00000300  6e 64 6f 77 5f 64 65 66  28 22 69 6e 66 6f 22 29  |ndow_def("info")|
00000310  0d 00 fa 25 20 65 6e 74  72 79 68 61 6e 64 6c 65  |...% entryhandle|
00000320  3d a4 77 69 6e 64 6f 77  5f 64 65 66 28 22 65 6e  |=.window_def("en|
00000330  74 72 79 22 29 0d 01 04  40 20 e3 20 49 25 3d 30  |try")...@ . I%=0|
00000340  20 b8 20 31 31 20 3a 20  65 6e 74 72 79 69 63 6f  | . 11 : entryico|
00000350  6e 28 49 25 29 20 3d 20  a4 69 63 6f 6e 61 64 64  |n(I%) = .iconadd|
00000360  72 28 65 6e 74 72 79 68  61 6e 64 6c 65 2c 49 25  |r(entryhandle,I%|
00000370  29 20 3a 20 ed 0d 01 0e  26 20 76 69 65 77 68 61  |) : ....& viewha|
00000380  6e 64 6c 65 20 20 3d 20  a4 77 69 6e 64 6f 77 5f  |ndle  = .window_|
00000390  64 65 66 28 22 76 69 65  77 22 29 0d 01 18 25 20  |def("view")...% |
000003a0  6e 61 6d 65 68 61 6e 64  6c 65 20 3d 20 a4 77 69  |namehandle = .wi|
000003b0  6e 64 6f 77 5f 64 65 66  28 22 6e 61 6d 65 22 29  |ndow_def("name")|
000003c0  0d 01 22 28 20 6e 61 6d  65 61 64 64 72 20 3d 20  |.."( nameaddr = |
000003d0  20 a4 69 63 6f 6e 61 64  64 72 28 6e 61 6d 65 68  | .iconaddr(nameh|
000003e0  61 6e 64 6c 65 2c 30 29  0d 01 2c 1b 20 c8 99 22  |andle,0)..,. .."|
000003f0  57 69 6d 70 5f 43 6c 6f  73 65 54 65 6d 70 6c 61  |Wimp_CloseTempla|
00000400  74 65 22 0d 01 36 27 20  72 61 6e 64 3d b9 20 3a  |te"..6' rand=. :|
00000410  20 62 79 6e 61 6d 65 3d  a3 20 3a 20 63 6f 6d 3d  | byname=. : com=|
00000420  a3 20 3a 20 72 61 72 65  3d a3 0d 01 40 12 20 f2  |. : rare=...@. .|
00000430  64 65 66 69 6e 65 5f 6d  65 6e 75 73 0d 01 4a 10  |define_menus..J.|
00000440  20 de 20 6e 75 6d 62 65  72 28 36 29 0d 01 54 1e  | . number(6)..T.|
00000450  20 de 20 64 61 74 65 24  28 32 30 30 29 2c 64 72  | . date$(200),dr|
00000460  61 77 6e 28 37 2c 32 30  30 29 0d 01 5e 0f 20 64  |awn(7,200)..^. d|
00000470  61 74 65 24 28 29 3d 22  22 0d 01 68 0f 20 de 20  |ate$()=""..h. . |
00000480  66 72 65 71 28 34 39 29  0d 01 72 0e 20 de 20 63  |freq(49)..r. . c|
00000490  6f 6c 24 28 36 29 0d 01  7c 40 20 63 6f 6c 24 28  |ol$(6)..|@ col$(|
000004a0  29 3d 22 53 62 6c 61 63  6b 22 2c 22 53 77 68 69  |)="Sblack","Swhi|
000004b0  74 65 22 2c 22 53 62 6c  75 65 22 2c 22 53 70 69  |te","Sblue","Spi|
000004c0  6e 6b 22 2c 22 53 67 72  65 65 6e 22 2c 22 53 79  |nk","Sgreen","Sy|
000004d0  65 6c 6c 6f 77 22 0d 01  86 11 20 6d 61 78 6c 69  |ellow".... maxli|
000004e0  6e 65 73 25 3d 36 30 0d  01 90 17 20 de 20 6c 69  |nes%=60.... . li|
000004f0  6e 65 24 28 6d 61 78 6c  69 6e 65 73 25 29 0d 01  |ne$(maxlines%)..|
00000500  9a 0d 20 f2 69 63 6f 6e  62 61 72 0d 01 a4 29 20  |.. .iconbar...) |
00000510  f2 6f 70 65 6e 75 70 28  6d 61 69 6e 68 61 6e 64  |.openup(mainhand|
00000520  6c 65 2c 32 30 30 2c 31  30 30 30 2c 39 37 36 2c  |le,200,1000,976,|
00000530  34 34 30 29 0d 01 ae 0f  20 f2 72 65 61 64 5f 64  |440).... .read_d|
00000540  61 74 61 0d 01 b8 0f 20  ee 20 85 20 f2 65 72 72  |ata.... . . .err|
00000550  6f 72 0d 01 c2 06 20 f5  0d 01 cc 2b 20 20 20 c8  |or.... ....+   .|
00000560  99 22 57 69 6d 70 5f 50  6f 6c 6c 22 2c 30 2c 62  |."Wimp_Poll",0,b|
00000570  6c 6f 63 6b 25 20 b8 20  72 65 61 73 6f 6e 2c 70  |lock% . reason,p|
00000580  74 72 25 0d 01 d6 12 20  20 20 c8 8e 20 72 65 61  |tr%....   .. rea|
00000590  73 6f 6e 20 ca 0d 01 e0  1a 20 20 20 20 20 c9 20  |son .....     . |
000005a0  31 3a f2 72 65 64 72 61  77 77 69 6e 64 6f 77 0d  |1:.redrawwindow.|
000005b0  01 ea 27 20 20 20 20 20  c9 20 32 3a c8 99 20 22  |..'     . 2:.. "|
000005c0  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000005d0  2c 2c 70 74 72 25 0d 01  f4 28 20 20 20 20 20 c9  |,,ptr%...(     .|
000005e0  20 33 3a c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  | 3:.. "Wimp_Clos|
000005f0  65 57 69 6e 64 6f 77 22  2c 2c 70 74 72 25 0d 01  |eWindow",,ptr%..|
00000600  fe 15 20 20 20 20 20 c9  20 36 3a f2 63 6c 69 63  |..     . 6:.clic|
00000610  6b 65 64 0d 02 08 16 20  20 20 20 20 c9 20 38 3a  |ked....     . 8:|
00000620  f2 6b 65 79 70 72 65 73  73 0d 02 12 1a 20 20 20  |.keypress....   |
00000630  20 20 c9 20 39 3a f2 70  72 6f 63 65 73 73 5f 6d  |  . 9:.process_m|
00000640  65 6e 75 0d 02 1c 1b 20  20 20 20 20 c9 20 31 37  |enu....     . 17|
00000650  2c 31 38 3a f2 4f 53 6d  65 73 73 61 67 65 0d 02  |,18:.OSmessage..|
00000660  26 08 20 20 20 cb 0d 02  30 0b 20 fd 20 71 75 69  |&.   ...0. . qui|
00000670  74 0d 02 3a 17 20 c8 99  22 57 69 6d 70 5f 43 6c  |t..:. .."Wimp_Cl|
00000680  6f 73 65 44 6f 77 6e 22  0d 02 44 05 e0 0d 02 4e  |oseDown"..D....N|
00000690  05 3a 0d 02 58 50 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |.:..XP. --------|
000006a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000006e0  2d 2d 0d 02 62 05 3a 0d  02 6c 18 dd a4 4c 6f 61  |--..b.:..l...Loa|
000006f0  64 53 70 72 69 74 65 73  28 66 69 6c 65 24 29 0d  |dSprites(file$).|
00000700  02 76 18 20 ea 20 66 69  6c 65 25 2c 73 69 7a 65  |.v. . file%,size|
00000710  25 2c 61 72 65 61 25 0d  02 80 12 20 66 69 6c 65  |%,area%.... file|
00000720  25 3d 8e 20 66 69 6c 65  24 0d 02 8a 17 20 73 69  |%=. file$.... si|
00000730  7a 65 25 3d 28 a2 23 66  69 6c 65 25 29 2b 31 36  |ze%=(.#file%)+16|
00000740  0d 02 94 0c 20 d9 23 66  69 6c 65 25 0d 02 9e 12  |.... .#file%....|
00000750  20 de 20 61 72 65 61 25  20 73 69 7a 65 25 0d 02  | . area% size%..|
00000760  a8 11 20 21 61 72 65 61  25 3d 73 69 7a 65 25 0d  |.. !area%=size%.|
00000770  02 b2 0e 20 61 72 65 61  25 21 38 3d 30 0d 02 bc  |... area%!8=0...|
00000780  20 20 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |  .. "OS_SpriteO|
00000790  70 22 2c 26 31 30 39 2c  61 72 65 61 25 0d 02 c6  |p",&109,area%...|
000007a0  26 20 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |& .. "OS_SpriteO|
000007b0  70 22 2c 26 31 30 41 2c  61 72 65 61 25 2c 66 69  |p",&10A,area%,fi|
000007c0  6c 65 24 0d 02 d0 0a 3d  61 72 65 61 25 0d 02 da  |le$....=area%...|
000007d0  05 3a 0d 02 e4 0f dd f2  72 65 61 64 5f 64 61 74  |.:......read_dat|
000007e0  61 0d 02 ee 21 20 63 68  25 3d 8e 28 22 3c 6c 6f  |a...! ch%=.("<lo|
000007f0  74 74 6f 24 44 69 72 3e  2e 6e 75 6d 62 65 72 73  |tto$Dir>.numbers|
00000800  22 29 0d 02 f8 0b 20 77  65 65 6b 3d 31 0d 03 02  |").... week=1...|
00000810  06 20 f5 0d 03 0c 0f 20  20 20 41 24 3d be 23 63  |. .....   A$=.#c|
00000820  68 25 0d 03 16 20 20 20  20 64 61 74 65 24 28 77  |h%...    date$(w|
00000830  65 65 6b 29 3d c0 41 24  2c a7 41 24 2c 22 20 22  |eek)=.A$,.A$," "|
00000840  29 29 0d 03 20 0b 20 20  20 4e 25 3d 31 0d 03 2a  |)).. .   N%=1..*|
00000850  08 20 20 20 f5 0d 03 34  14 20 20 20 20 20 50 25  |.   ...4.     P%|
00000860  3d a7 41 24 2c 22 20 22  29 0d 03 3e 17 20 20 20  |=.A$," ")..>.   |
00000870  20 20 41 24 3d c2 41 24  2c a9 41 24 2d 50 25 29  |  A$=.A$,.A$-P%)|
00000880  0d 03 48 1d 20 20 20 20  20 64 72 61 77 6e 28 4e  |..H.     drawn(N|
00000890  25 2c 77 65 65 6b 29 3d  bb 28 41 24 29 0d 03 52  |%,week)=.(A$)..R|
000008a0  0e 20 20 20 20 20 4e 25  2b 3d 31 0d 03 5c 14 20  |.     N%+=1..\. |
000008b0  20 20 fd 20 4e 25 3d 38  20 84 20 50 25 3d 30 0d  |  . N%=8 . P%=0.|
000008c0  03 66 0e 20 20 20 77 65  65 6b 2b 3d 31 0d 03 70  |.f.   week+=1..p|
000008d0  0c 20 fd 20 c5 23 63 68  25 0d 03 7a 13 20 6e 65  |. . .#ch%..z. ne|
000008e0  78 74 5f 77 65 65 6b 3d  77 65 65 6b 0d 03 84 0c  |xt_week=week....|
000008f0  20 77 65 65 6b 2d 3d 31  0d 03 8e 0a 20 d9 23 63  | week-=1.... .#c|
00000900  68 25 0d 03 98 15 20 f2  73 68 6f 77 5f 77 65 65  |h%.... .show_wee|
00000910  6b 28 77 65 65 6b 29 0d  03 a2 05 e1 0d 03 ac 05  |k(week).........|
00000920  3a 0d 03 b6 0e dd f2 73  61 76 65 5f 6e 65 77 0d  |:......save_new.|
00000930  03 c0 15 20 41 24 3d 24  65 6e 74 72 79 69 63 6f  |... A$=$entryico|
00000940  6e 28 30 29 0d 03 ca 13  20 64 61 74 65 24 28 77  |n(0).... date$(w|
00000950  65 65 6b 29 3d 41 24 0d  03 d4 41 20 e7 20 41 24  |eek)=A$...A . A$|
00000960  3d 22 22 20 8c 20 f2 74  65 78 74 5f 6d 65 73 73  |="" . .text_mess|
00000970  61 67 65 28 22 45 6e 74  65 72 20 61 20 64 61 74  |age("Enter a dat|
00000980  65 20 69 6e 20 44 44 2f  4d 4d 2f 59 59 20 66 6f  |e in DD/MM/YY fo|
00000990  72 6d 61 74 22 29 3a e1  0d 03 de 09 20 6f 6b 3d  |rmat"):..... ok=|
000009a0  b9 0d 03 e8 0f 20 e3 20  49 25 3d 31 20 b8 20 37  |..... . I%=1 . 7|
000009b0  0d 03 f2 1f 20 20 20 41  24 3d 41 24 2b 22 20 22  |....   A$=A$+" "|
000009c0  2b 24 65 6e 74 72 79 69  63 6f 6e 28 49 25 29 0d  |+$entryicon(I%).|
000009d0  03 fc 27 20 20 20 64 72  61 77 6e 28 49 25 2c 77  |..'   drawn(I%,w|
000009e0  65 65 6b 29 3d bb 28 24  65 6e 74 72 79 69 63 6f  |eek)=.($entryico|
000009f0  6e 28 49 25 29 29 0d 04  06 34 20 20 20 e7 20 64  |n(I%))...4   . d|
00000a00  72 61 77 6e 28 49 25 2c  77 65 65 6b 29 3c 31 20  |rawn(I%,week)<1 |
00000a10  84 20 64 72 61 77 6e 28  49 25 2c 77 65 65 6b 29  |. drawn(I%,week)|
00000a20  3e 34 39 20 8c 20 6f 6b  3d a3 0d 04 10 06 20 ed  |>49 . ok=..... .|
00000a30  0d 04 1a 36 20 e7 20 ac  20 6f 6b 20 8c 20 f2 74  |...6 . . ok . .t|
00000a40  65 78 74 5f 6d 65 73 73  61 67 65 28 22 45 72 72  |ext_message("Err|
00000a50  6f 72 20 69 6e 20 6e 75  6d 62 65 72 20 65 6e 74  |or in number ent|
00000a60  72 79 22 29 3a e1 0d 04  24 12 20 e3 20 49 25 3d  |ry"):...$. . I%=|
00000a70  31 20 b8 20 77 65 65 6b  0d 04 2e 1a 20 20 20 e7  |1 . week....   .|
00000a80  20 77 65 65 6b 3c 3e 6e  65 78 74 5f 77 65 65 6b  | week<>next_week|
00000a90  20 8c 0d 04 38 31 20 20  20 20 20 e7 20 a7 64 61  | ...81     . .da|
00000aa0  74 65 24 28 49 25 29 2c  41 24 29 20 84 20 a7 41  |te$(I%),A$) . .A|
00000ab0  24 2c 64 61 74 65 24 28  49 25 29 29 20 8c 20 6f  |$,date$(I%)) . o|
00000ac0  6b 3d a3 0d 04 42 08 20  20 20 cd 0d 04 4c 06 20  |k=...B.   ...L. |
00000ad0  ed 0d 04 56 46 20 e7 20  ac 20 6f 6b 20 8c 20 f2  |...VF . . ok . .|
00000ae0  74 65 78 74 5f 6d 65 73  73 61 67 65 28 22 41 6e  |text_message("An|
00000af0  20 65 6e 74 72 79 20 66  6f 72 20 74 68 69 73 20  | entry for this |
00000b00  64 61 74 65 20 61 6c 72  65 61 64 79 20 65 78 69  |date already exi|
00000b10  73 74 73 22 29 3a e1 0d  04 60 21 20 63 68 25 3d  |sts"):...`! ch%=|
00000b20  ad 28 22 3c 6c 6f 74 74  6f 24 44 69 72 3e 2e 6e  |.("<lotto$Dir>.n|
00000b30  75 6d 62 65 72 73 22 29  0d 04 6a 10 20 cf 23 63  |umbers")..j. .#c|
00000b40  68 25 3d a2 23 63 68 25  0d 04 74 0d 20 d5 23 63  |h%=.#ch%..t. .#c|
00000b50  68 25 2c 41 24 0d 04 7e  0a 20 d9 23 63 68 25 0d  |h%,A$..~. .#ch%.|
00000b60  04 88 11 20 6e 65 78 74  5f 77 65 65 6b 2b 3d 31  |... next_week+=1|
00000b70  0d 04 92 0c 20 77 65 65  6b 2b 3d 31 0d 04 9c 15  |.... week+=1....|
00000b80  20 f2 73 68 6f 77 5f 77  65 65 6b 28 77 65 65 6b  | .show_week(week|
00000b90  29 0d 04 a6 0b 20 f2 73  74 61 74 73 0d 04 b0 18  |).... .stats....|
00000ba0  20 62 6c 6f 63 6b 25 21  30 3d 76 69 65 77 68 61  | block%!0=viewha|
00000bb0  6e 64 6c 65 0d 04 ba 24  20 c8 99 22 57 69 6d 70  |ndle...$ .."Wimp|
00000bc0  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
00000bd0  2c 2c 62 6c 6f 63 6b 25  0d 04 c4 12 20 f2 72 65  |,,block%.... .re|
00000be0  64 72 61 77 77 69 6e 64  6f 77 0d 04 ce 05 e1 0d  |drawwindow......|
00000bf0  04 d8 05 3a 0d 04 e2 0c  dd f2 72 61 6e 64 6f 6d  |...:......random|
00000c00  0d 04 ec 0d 20 49 25 3d  b3 28 2d 91 29 0d 04 f6  |.... I%=.(-.)...|
00000c10  0f 20 6e 75 6d 62 65 72  28 29 3d 30 0d 05 00 11  |. number()=0....|
00000c20  20 e3 20 62 61 6c 6c 3d  30 20 b8 20 35 0d 05 0a  | . ball=0 . 5...|
00000c30  08 20 20 20 f5 0d 05 14  0d 20 20 20 20 20 6f 6b  |.   .....     ok|
00000c40  3d b9 0d 05 1e 11 20 20  20 20 20 4e 25 3d b3 28  |=.....     N%=.(|
00000c50  34 39 29 0d 05 28 13 20  20 20 20 20 e3 20 49 25  |49)..(.     . I%|
00000c60  3d 30 20 b8 20 35 0d 05  32 22 20 20 20 20 20 20  |=0 . 5..2"      |
00000c70  20 e7 20 6e 75 6d 62 65  72 28 49 25 29 3d 4e 25  | . number(I%)=N%|
00000c80  20 8c 20 6f 6b 20 3d a3  0d 05 3c 0a 20 20 20 20  | . ok =...<.    |
00000c90  20 ed 0d 05 46 0b 20 20  20 fd 20 6f 6b 0d 05 50  | ...F.   . ok..P|
00000ca0  16 20 20 20 6e 75 6d 62  65 72 28 62 61 6c 6c 29  |.   number(ball)|
00000cb0  3d 4e 25 0d 05 5a 06 20  ed 0d 05 64 0a 20 f2 73  |=N%..Z. ...d. .s|
00000cc0  6f 72 74 0d 05 6e 13 20  f2 64 69 73 70 6c 61 79  |ort..n. .display|
00000cd0  5f 62 61 6c 6c 73 0d 05  78 05 e1 0d 05 82 05 3a  |_balls..x......:|
00000ce0  0d 05 8c 13 dd f2 64 69  73 70 6c 61 79 5f 62 61  |......display_ba|
00000cf0  6c 6c 73 0d 05 96 16 20  e7 20 6e 75 6d 62 65 72  |lls.... . number|
00000d00  28 31 29 3d 30 20 8c 20  e1 0d 05 a0 2c 20 c8 99  |(1)=0 . ...., ..|
00000d10  20 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  | "OS_ReadModeVar|
00000d20  69 61 62 6c 65 22 2c eb  2c 39 20 b8 20 72 30 2c  |iable",.,9 . r0,|
00000d30  72 31 2c 72 32 0d 05 aa  24 20 e7 20 72 32 3c 3e  |r1,r2...$ . r2<>|
00000d40  33 20 8c 20 63 6f 6c 31  36 20 3d 20 b9 20 8b 20  |3 . col16 = . . |
00000d50  63 6f 6c 31 36 20 3d 20  a3 0d 05 b4 11 20 e3 20  |col16 = ..... . |
00000d60  62 61 6c 6c 3d 30 20 b8  20 35 0d 05 be 31 20 20  |ball=0 . 5...1  |
00000d70  20 f2 77 72 69 74 65 5f  76 61 6c 69 64 61 74 69  | .write_validati|
00000d80  6f 6e 28 6d 61 69 6e 68  61 6e 64 6c 65 2c 62 61  |on(mainhandle,ba|
00000d90  6c 6c 2c 22 53 6e 75 6c  6c 22 29 0d 05 c8 1b 20  |ll,"Snull").... |
00000da0  20 20 24 6d 61 69 6e 69  63 6f 6e 28 62 61 6c 6c  |  $mainicon(ball|
00000db0  2b 38 29 3d bd 30 0d 05  d2 24 20 20 20 f2 75 70  |+8)=.0...$   .up|
00000dc0  64 61 74 65 5f 69 63 6f  6e 28 6d 61 69 6e 68 61  |date_icon(mainha|
00000dd0  6e 64 6c 65 2c 62 61 6c  6c 29 0d 05 dc 3f 20 20  |ndle,ball)...?  |
00000de0  20 f2 77 72 69 74 65 5f  76 61 6c 69 64 61 74 69  | .write_validati|
00000df0  6f 6e 28 6d 61 69 6e 68  61 6e 64 6c 65 2c 62 61  |on(mainhandle,ba|
00000e00  6c 6c 2c a4 63 6f 6c 6f  75 72 28 6e 75 6d 62 65  |ll,.colour(numbe|
00000e10  72 28 62 61 6c 6c 29 29  29 0d 05 e6 2b 20 20 20  |r(ball)))...+   |
00000e20  24 6d 61 69 6e 69 63 6f  6e 28 62 61 6c 6c 2b 38  |$mainicon(ball+8|
00000e30  29 3d c3 28 6e 75 6d 62  65 72 28 62 61 6c 6c 29  |)=.(number(ball)|
00000e40  29 2b bd 30 0d 05 f0 24  20 20 20 f2 75 70 64 61  |)+.0...$   .upda|
00000e50  74 65 5f 69 63 6f 6e 28  6d 61 69 6e 68 61 6e 64  |te_icon(mainhand|
00000e60  6c 65 2c 62 61 6c 6c 29  0d 05 fa 06 20 ed 0d 06  |le,ball).... ...|
00000e70  04 05 e1 0d 06 0e 05 3a  0d 06 18 10 dd a4 63 6f  |.......:......co|
00000e80  6c 6f 75 72 28 4e 25 29  0d 06 22 1a 20 63 6f 6c  |lour(N%)..". col|
00000e90  24 3d 63 6f 6c 24 28 a8  28 4e 25 2f 31 30 2b 31  |$=col$(.(N%/10+1|
00000ea0  29 29 0d 06 2c 1d 20 e7  20 63 6f 6c 31 36 20 8c  |))..,. . col16 .|
00000eb0  20 63 6f 6c 24 3d 63 6f  6c 24 2b 22 31 36 22 0d  | col$=col$+"16".|
00000ec0  06 36 09 3d 63 6f 6c 24  0d 06 40 05 3a 0d 06 4a  |.6.=col$..@.:..J|
00000ed0  15 dd f2 73 68 6f 77 5f  77 65 65 6b 28 77 65 65  |...show_week(wee|
00000ee0  6b 29 0d 06 54 1e 20 24  65 6e 74 72 79 69 63 6f  |k)..T. $entryico|
00000ef0  6e 28 30 29 3d 64 61 74  65 24 28 77 65 65 6b 29  |n(0)=date$(week)|
00000f00  0d 06 5e 1b 20 24 65 6e  74 72 79 69 63 6f 6e 28  |..^. $entryicon(|
00000f10  31 31 29 3d c3 28 77 65  65 6b 29 0d 06 68 21 20  |11)=.(week)..h! |
00000f20  f2 75 70 64 61 74 65 5f  69 63 6f 6e 28 65 6e 74  |.update_icon(ent|
00000f30  72 79 68 61 6e 64 6c 65  2c 31 31 29 0d 06 72 20  |ryhandle,11)..r |
00000f40  20 f2 75 70 64 61 74 65  5f 69 63 6f 6e 28 65 6e  | .update_icon(en|
00000f50  74 72 79 68 61 6e 64 6c  65 2c 30 29 0d 06 7c 0f  |tryhandle,0)..|.|
00000f60  20 e3 20 49 25 3d 31 20  b8 20 37 0d 06 86 18 20  | . I%=1 . 7.... |
00000f70  20 20 4e 25 3d 64 72 61  77 6e 28 49 25 2c 77 65  |  N%=drawn(I%,we|
00000f80  65 6b 29 0d 06 90 37 20  20 20 e7 20 4e 25 3c 3e  |ek)...7   . N%<>|
00000f90  30 20 8c 20 24 65 6e 74  72 79 69 63 6f 6e 28 49  |0 . $entryicon(I|
00000fa0  25 29 3d c3 4e 25 20 8b  20 24 65 6e 74 72 79 69  |%)=.N% . $entryi|
00000fb0  63 6f 6e 28 49 25 29 3d  22 22 0d 06 9a 23 20 20  |con(I%)=""...#  |
00000fc0  20 f2 75 70 64 61 74 65  5f 69 63 6f 6e 28 65 6e  | .update_icon(en|
00000fd0  74 72 79 68 61 6e 64 6c  65 2c 49 25 29 0d 06 a4  |tryhandle,I%)...|
00000fe0  06 20 ed 0d 06 ae 05 e1  0d 06 b8 05 3a 0d 06 c2  |. ..........:...|
00000ff0  0b dd f2 73 74 61 74 73  0d 06 cc 0d 20 66 72 65  |...stats.... fre|
00001000  71 28 29 3d 30 0d 06 d6  19 20 e3 20 49 25 3d 31  |q()=0.... . I%=1|
00001010  20 b8 20 6e 65 78 74 5f  77 65 65 6b 2d 31 0d 06  | . next_week-1..|
00001020  e0 11 20 20 20 e3 20 4a  25 3d 31 20 b8 20 37 0d  |..   . J%=1 . 7.|
00001030  06 ea 18 20 20 20 20 20  4e 25 3d 64 72 61 77 6e  |...     N%=drawn|
00001040  28 4a 25 2c 49 25 29 0d  06 f4 14 20 20 20 20 20  |(J%,I%)....     |
00001050  66 72 65 71 28 4e 25 29  2b 3d 31 0d 06 fe 08 20  |freq(N%)+=1.... |
00001060  20 20 ed 0d 07 08 06 20  ed 0d 07 12 3d 20 6c 69  |  ..... ....= li|
00001070  6e 65 24 28 31 29 3d 22  20 44 69 73 74 72 69 62  |ne$(1)=" Distrib|
00001080  75 74 69 6f 6e 20 61 66  74 65 72 20 22 2b c3 28  |ution after "+.(|
00001090  6e 65 78 74 5f 77 65 65  6b 2d 31 29 2b 22 20 77  |next_week-1)+" w|
000010a0  65 65 6b 73 3a 22 0d 07  1c 10 20 e3 20 49 25 3d  |eeks:".... . I%=|
000010b0  31 20 b8 20 34 39 0d 07  26 3a 20 20 20 6c 69 6e  |1 . 49..&:   lin|
000010c0  65 24 28 49 25 2b 32 29  3d 22 20 20 22 2b c2 22  |e$(I%+2)="  "+."|
000010d0  20 22 2b c3 28 49 25 29  2c 32 29 2b 22 20 20 22  | "+.(I%),2)+"  "|
000010e0  2b c4 66 72 65 71 28 49  25 29 2c 22 20 8f 22 29  |+.freq(I%)," .")|
000010f0  0d 07 30 06 20 ed 0d 07  3a 23 20 6c 69 6e 65 24  |..0. ...:# line$|
00001100  28 35 33 29 3d 22 20 54  6f 74 61 6c 73 20 62 79  |(53)=" Totals by|
00001110  20 63 6f 6c 6f 75 72 3a  22 0d 07 44 24 20 6c 69  | colour:"..D$ li|
00001120  6e 65 24 28 35 35 29 3d  22 20 57 68 69 74 65 20  |ne$(55)=" White |
00001130  20 20 22 2b a4 73 75 6d  28 31 2c 39 29 0d 07 4e  |  "+.sum(1,9)..N|
00001140  26 20 6c 69 6e 65 24 28  35 36 29 3d 22 20 42 6c  |& line$(56)=" Bl|
00001150  75 65 20 20 20 20 22 2b  a4 73 75 6d 28 31 30 2c  |ue    "+.sum(10,|
00001160  31 39 29 0d 07 58 26 20  6c 69 6e 65 24 28 35 37  |19)..X& line$(57|
00001170  29 3d 22 20 50 69 6e 6b  20 20 20 20 22 2b a4 73  |)=" Pink    "+.s|
00001180  75 6d 28 32 30 2c 32 39  29 0d 07 62 26 20 6c 69  |um(20,29)..b& li|
00001190  6e 65 24 28 35 38 29 3d  22 20 47 72 65 65 6e 20  |ne$(58)=" Green |
000011a0  20 20 22 2b a4 73 75 6d  28 33 30 2c 33 39 29 0d  |  "+.sum(30,39).|
000011b0  07 6c 26 20 6c 69 6e 65  24 28 35 39 29 3d 22 20  |.l& line$(59)=" |
000011c0  59 65 6c 6c 6f 77 20 20  22 2b a4 73 75 6d 28 34  |Yellow  "+.sum(4|
000011d0  30 2c 34 39 29 0d 07 76  05 e1 0d 07 80 05 3a 0d  |0,49)..v......:.|
000011e0  07 8a 10 dd a4 73 75 6d  28 46 25 2c 54 25 29 0d  |.....sum(F%,T%).|
000011f0  07 94 09 20 53 25 3d 30  0d 07 9e 11 20 e3 20 49  |... S%=0.... . I|
00001200  25 3d 46 25 20 b8 20 54  25 0d 07 a8 13 20 20 20  |%=F% . T%....   |
00001210  53 25 2b 3d 66 72 65 71  28 49 25 29 0d 07 b2 06  |S%+=freq(I%)....|
00001220  20 ed 0d 07 bc 08 3d c3  53 25 0d 07 c6 05 3a 0d  | .....=.S%....:.|
00001230  07 d0 0a dd f2 73 6f 72  74 0d 07 da 0f 20 ea 20  |.....sort.... . |
00001240  4a 25 2c 4b 25 2c 4c 25  0d 07 e4 0f 20 e3 20 4b  |J%,K%,L%.... . K|
00001250  25 3d 30 20 b8 20 35 0d  07 ee 0c 20 20 20 4c 25  |%=0 . 5....   L%|
00001260  3d 4b 25 0d 07 f8 12 20  20 20 e3 20 4a 25 3d 4b  |=K%....   . J%=K|
00001270  25 20 b8 20 35 0d 08 02  2a 20 20 20 20 20 e7 20  |% . 5...*     . |
00001280  6e 75 6d 62 65 72 28 4a  25 29 20 3c 20 6e 75 6d  |number(J%) < num|
00001290  62 65 72 28 4c 25 29 20  8c 20 4c 25 3d 4a 25 0d  |ber(L%) . L%=J%.|
000012a0  08 0c 08 20 20 20 ed 0d  08 16 1f 20 20 20 c8 94  |...   .....   ..|
000012b0  20 6e 75 6d 62 65 72 28  4b 25 29 2c 6e 75 6d 62  | number(K%),numb|
000012c0  65 72 28 4c 25 29 0d 08  20 06 20 ed 0d 08 2a 05  |er(L%).. . ...*.|
000012d0  e1 0d 08 34 05 3a 0d 08  3e 17 dd f2 6e 75 6d 62  |...4.:..>...numb|
000012e0  65 72 73 5f 66 72 6f 6d  5f 6e 61 6d 65 0d 08 48  |ers_from_name..H|
000012f0  14 20 6e 61 6d 65 24 3d  24 6e 61 6d 65 61 64 64  |. name$=$nameadd|
00001300  72 0d 08 52 57 20 e7 20  a9 20 6e 61 6d 65 24 3c  |r..RW . . name$<|
00001310  3d 36 20 8c 20 f2 74 65  78 74 5f 6d 65 73 73 61  |=6 . .text_messa|
00001320  67 65 28 22 59 6f 75 72  20 6e 61 6d 65 20 6e 65  |ge("Your name ne|
00001330  65 64 73 20 6d 6f 72 65  20 74 68 61 6e 20 36 20  |eds more than 6 |
00001340  6c 65 74 74 65 72 73 20  74 6f 20 77 6f 72 6b 20  |letters to work |
00001350  77 69 74 68 22 29 3a e1  0d 08 5c 19 20 62 69 6e  |with"):...\. bin|
00001360  24 3d 22 22 20 3a 20 6e  75 6d 62 65 72 28 29 3d  |$="" : number()=|
00001370  30 0d 08 66 26 20 f4 20  6c 65 74 74 65 72 20 69  |0..f& . letter i|
00001380  6e 20 72 61 6e 67 65 20  31 20 2d 20 32 36 2c 20  |n range 1 - 26, |
00001390  6e 6f 20 63 61 73 65 0d  08 70 1a 20 e3 20 49 25  |no case..p. . I%|
000013a0  3d a9 20 6e 61 6d 65 24  20 b8 20 31 20 88 20 2d  |=. name$ . 1 . -|
000013b0  31 0d 08 7a 19 20 20 20  58 25 3d 97 28 c1 6e 61  |1..z.   X%=.(.na|
000013c0  6d 65 24 2c 49 25 2c 31  29 29 0d 08 84 10 20 20  |me$,I%,1))....  |
000013d0  20 e7 20 58 25 3e 33 32  20 8c 0d 08 8e 22 20 20  | . X%>32 ...."  |
000013e0  20 20 20 e7 20 58 25 3e  39 36 20 8c 20 58 25 2d  |   . X%>96 . X%-|
000013f0  3d 39 36 20 8b 20 58 25  2d 3d 36 34 0d 08 98 08  |=96 . X%-=64....|
00001400  20 20 20 cd 0d 08 a2 0b  20 20 20 4e 25 3d 30 0d  |   .....   N%=0.|
00001410  08 ac 20 20 20 20 f4 20  63 6f 6e 76 65 72 74 20  |..    . convert |
00001420  74 6f 20 35 20 62 69 74  20 62 69 6e 61 72 79 0d  |to 5 bit binary.|
00001430  08 b6 08 20 20 20 f5 0d  08 c0 36 20 20 20 20 20  |...   ....6     |
00001440  e7 20 28 58 25 20 80 20  32 5e 4e 25 29 20 8c 20  |. (X% . 2^N%) . |
00001450  62 69 6e 24 3d 22 31 22  2b 62 69 6e 24 20 8b 20  |bin$="1"+bin$ . |
00001460  62 69 6e 24 3d 22 30 22  2b 62 69 6e 24 0d 08 ca  |bin$="0"+bin$...|
00001470  0e 20 20 20 20 20 4e 25  2b 3d 31 0d 08 d4 0d 20  |.     N%+=1.... |
00001480  20 20 fd 20 4e 25 3d 35  0d 08 de 06 20 ed 0d 08  |  . N%=5.... ...|
00001490  e8 2e 20 f4 20 6e 6f 77  20 61 20 6c 6f 6e 67 20  |.. . now a long |
000014a0  62 69 6e 61 72 79 20 73  74 72 69 6e 67 2c 20 64  |binary string, d|
000014b0  69 76 69 64 65 20 69 6e  74 6f 20 36 0d 08 f2 18  |ivide into 6....|
000014c0  20 4e 25 3d 31 20 3a 20  4c 25 3d a9 28 62 69 6e  | N%=1 : L%=.(bin|
000014d0  24 29 2f 36 0d 08 fc 0f  20 e3 20 49 25 3d 31 20  |$)/6.... . I%=1 |
000014e0  b8 20 36 0d 09 06 2f 20  20 20 6e 75 6d 62 65 72  |. 6.../   number|
000014f0  28 49 25 2d 31 29 3d 28  a0 28 22 25 22 2b c1 62  |(I%-1)=(.("%"+.b|
00001500  69 6e 24 2c 4e 25 2c 4c  25 29 29 20 83 34 39 29  |in$,N%,L%)) .49)|
00001510  2b 31 0d 09 10 0c 20 20  20 4e 25 2b 3d 36 0d 09  |+1....   N%+=6..|
00001520  1a 06 20 ed 0d 09 24 0a  20 f2 73 6f 72 74 0d 09  |.. ...$. .sort..|
00001530  2e 13 20 f2 64 69 73 70  6c 61 79 5f 62 61 6c 6c  |.. .display_ball|
00001540  73 0d 09 38 0a 20 6f 6b  20 3d b9 0d 09 42 0f 20  |s..8. ok =...B. |
00001550  e3 20 49 25 3d 30 20 b8  20 35 0d 09 4c 11 20 20  |. I%=0 . 5..L.  |
00001560  20 e3 20 4a 25 3d 30 20  b8 20 35 0d 09 56 31 20  | . J%=0 . 5..V1 |
00001570  20 20 20 20 e7 20 6e 75  6d 62 65 72 28 49 25 29  |    . number(I%)|
00001580  3d 6e 75 6d 62 65 72 28  4a 25 29 20 80 20 49 25  |=number(J%) . I%|
00001590  3c 3e 4a 25 20 8c 20 6f  6b 20 3d a3 0d 09 60 08  |<>J% . ok =...`.|
000015a0  20 20 20 ed 0d 09 6a 06  20 ed 0d 09 74 51 20 e7  |   ...j. ...tQ .|
000015b0  20 ac 20 6f 6b 20 8c 20  f2 74 65 78 74 5f 6d 65  | . ok . .text_me|
000015c0  73 73 61 67 65 28 22 53  6f 72 72 79 21 20 79 6f  |ssage("Sorry! yo|
000015d0  75 72 20 6e 61 6d 65 20  64 69 64 20 6e 6f 74 20  |ur name did not |
000015e0  67 65 6e 65 72 61 74 65  20 36 20 75 6e 69 71 75  |generate 6 uniqu|
000015f0  65 20 6e 75 6d 62 65 72  73 22 29 0d 09 7e 05 e1  |e numbers")..~..|
00001600  0d 09 88 05 3a 0d 09 92  12 dd f2 72 61 72 65 5f  |....:......rare_|
00001610  6e 75 6d 62 65 72 73 0d  09 9c 0b 20 f2 73 74 61  |numbers.... .sta|
00001620  74 73 0d 09 a6 0c 20 6c  6f 77 3d 31 45 36 0d 09  |ts.... low=1E6..|
00001630  b0 10 20 e3 20 49 25 3d  31 20 b8 20 34 39 0d 09  |.. . I%=1 . 49..|
00001640  ba 12 20 20 20 58 25 3d  66 72 65 71 28 49 25 29  |..   X%=freq(I%)|
00001650  0d 09 c4 18 20 20 20 e7  20 58 25 3c 6c 6f 77 20  |....   . X%<low |
00001660  8c 20 6c 6f 77 3d 58 25  0d 09 ce 06 20 ed 0d 09  |. low=X%.... ...|
00001670  d8 0f 20 6e 75 6d 62 65  72 28 29 3d 30 0d 09 e2  |.. number()=0...|
00001680  11 20 e3 20 62 61 6c 6c  3d 30 20 b8 20 35 0d 09  |. . ball=0 . 5..|
00001690  ec 0e 20 20 20 63 6f 75  6e 74 3d 30 0d 09 f6 08  |..   count=0....|
000016a0  20 20 20 f5 0d 0a 00 11  20 20 20 20 20 58 25 3d  |   .....     X%=|
000016b0  b3 28 34 39 29 0d 0a 0a  11 20 20 20 20 20 63 6f  |.(49)....     co|
000016c0  75 6e 74 2b 3d 31 0d 0a  14 28 20 20 20 20 20 e7  |unt+=1...(     .|
000016d0  20 63 6f 75 6e 74 3e 31  30 30 30 20 8c 20 63 6f  | count>1000 . co|
000016e0  75 6e 74 3d 30 20 3a 20  6c 6f 77 2b 3d 31 0d 0a  |unt=0 : low+=1..|
000016f0  1e 0d 20 20 20 20 20 6f  6b 3d b9 0d 0a 28 13 20  |..     ok=...(. |
00001700  20 20 20 20 e3 20 4a 25  3d 30 20 b8 20 35 0d 0a  |    . J%=0 . 5..|
00001710  32 21 20 20 20 20 20 20  20 e7 20 58 25 3d 6e 75  |2!       . X%=nu|
00001720  6d 62 65 72 28 4a 25 29  20 8c 20 6f 6b 3d a3 0d  |mber(J%) . ok=..|
00001730  0a 3c 0a 20 20 20 20 20  ed 0d 0a 46 1b 20 20 20  |.<.     ...F.   |
00001740  fd 20 20 66 72 65 71 28  58 25 29 3d 6c 6f 77 20  |.  freq(X%)=low |
00001750  80 20 6f 6b 0d 0a 50 14  20 6e 75 6d 62 65 72 28  |. ok..P. number(|
00001760  62 61 6c 6c 29 3d 58 25  0d 0a 5a 06 20 ed 0d 0a  |ball)=X%..Z. ...|
00001770  64 0a 20 f2 73 6f 72 74  0d 0a 6e 13 20 f2 64 69  |d. .sort..n. .di|
00001780  73 70 6c 61 79 5f 62 61  6c 6c 73 0d 0a 78 05 e1  |splay_balls..x..|
00001790  0d 0a 82 05 3a 0d 0a 8c  14 dd f2 63 6f 6d 6d 6f  |....:......commo|
000017a0  6e 5f 6e 75 6d 62 65 72  73 0d 0a 96 0b 20 f2 73  |n_numbers.... .s|
000017b0  74 61 74 73 0d 0a a0 0b  20 68 69 67 68 3d 30 0d  |tats.... high=0.|
000017c0  0a aa 10 20 e3 20 49 25  3d 31 20 b8 20 34 39 0d  |... . I%=1 . 49.|
000017d0  0a b4 12 20 20 20 58 25  3d 66 72 65 71 28 49 25  |...   X%=freq(I%|
000017e0  29 0d 0a be 1a 20 20 20  e7 20 58 25 3e 68 69 67  |)....   . X%>hig|
000017f0  68 20 8c 20 68 69 67 68  3d 58 25 0d 0a c8 06 20  |h . high=X%.... |
00001800  ed 0d 0a d2 0f 20 6e 75  6d 62 65 72 28 29 3d 30  |..... number()=0|
00001810  0d 0a dc 11 20 e3 20 62  61 6c 6c 3d 30 20 b8 20  |.... . ball=0 . |
00001820  35 0d 0a e6 0e 20 20 20  63 6f 75 6e 74 3d 30 0d  |5....   count=0.|
00001830  0a f0 08 20 20 20 f5 0d  0a fa 11 20 20 20 20 20  |...   .....     |
00001840  58 25 3d b3 28 34 39 29  0d 0b 04 11 20 20 20 20  |X%=.(49)....    |
00001850  20 63 6f 75 6e 74 2b 3d  31 0d 0b 0e 29 20 20 20  | count+=1...)   |
00001860  20 20 e7 20 63 6f 75 6e  74 3e 31 30 30 30 20 8c  |  . count>1000 .|
00001870  20 63 6f 75 6e 74 3d 30  20 3a 20 68 69 67 68 2d  | count=0 : high-|
00001880  3d 31 0d 0b 18 0d 20 20  20 20 20 6f 6b 3d b9 0d  |=1....     ok=..|
00001890  0b 22 13 20 20 20 20 20  e3 20 4a 25 3d 30 20 b8  |.".     . J%=0 .|
000018a0  20 35 0d 0b 2c 21 20 20  20 20 20 20 20 e7 20 58  | 5..,!       . X|
000018b0  25 3d 6e 75 6d 62 65 72  28 4a 25 29 20 8c 20 6f  |%=number(J%) . o|
000018c0  6b 3d a3 0d 0b 36 0a 20  20 20 20 20 ed 0d 0b 40  |k=...6.     ...@|
000018d0  1c 20 20 20 fd 20 20 66  72 65 71 28 58 25 29 3d  |.   .  freq(X%)=|
000018e0  68 69 67 68 20 80 20 6f  6b 0d 0b 4a 14 20 6e 75  |high . ok..J. nu|
000018f0  6d 62 65 72 28 62 61 6c  6c 29 3d 58 25 0d 0b 54  |mber(ball)=X%..T|
00001900  06 20 ed 0d 0b 5e 0a 20  f2 73 6f 72 74 0d 0b 68  |. ...^. .sort..h|
00001910  13 20 f2 64 69 73 70 6c  61 79 5f 62 61 6c 6c 73  |. .display_balls|
00001920  0d 0b 72 05 e1 0d 0b 7c  05 3a 0d 0b 86 17 dd a4  |..r....|.:......|
00001930  77 69 6e 64 6f 77 5f 64  65 66 28 6e 61 6d 65 24  |window_def(name$|
00001940  29 0d 0b 90 56 20 c8 99  22 57 69 6d 70 5f 4c 6f  |)...V .."Wimp_Lo|
00001950  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 74 65 6d  |adTemplate",,tem|
00001960  70 62 75 66 2c 6e 65 78  74 2c 69 63 6f 6e 62 75  |pbuf,next,iconbu|
00001970  66 2b 69 63 6f 6e 62 75  66 6c 65 6e 2c 66 6f 6e  |f+iconbuflen,fon|
00001980  74 61 72 72 61 79 2c 6e  61 6d 65 24 2c 30 20 b8  |tarray,name$,0 .|
00001990  20 2c 2c 6e 65 78 74 0d  0b 9a 1a 20 74 65 6d 70  | ,,next.... temp|
000019a0  62 75 66 21 36 34 3d 73  70 72 69 74 65 61 72 65  |buf!64=spriteare|
000019b0  61 0d 0b a4 2c 20 c8 99  22 57 69 6d 70 5f 43 72  |a..., .."Wimp_Cr|
000019c0  65 61 74 65 57 69 6e 64  6f 77 22 2c 2c 74 65 6d  |eateWindow",,tem|
000019d0  70 62 75 66 20 b8 20 68  61 6e 64 6c 65 0d 0b ae  |pbuf . handle...|
000019e0  0b 3d 68 61 6e 64 6c 65  0d 0b b8 05 3a 0d 0b c2  |.=handle....:...|
000019f0  1b dd a4 69 63 6f 6e 61  64 64 72 28 77 69 6e 64  |...iconaddr(wind|
00001a00  6f 77 2c 69 63 6f 6e 29  0d 0b cc 24 20 62 6c 6f  |ow,icon)...$ blo|
00001a10  63 6b 25 21 30 3d 77 69  6e 64 6f 77 20 3a 20 62  |ck%!0=window : b|
00001a20  6c 6f 63 6b 25 21 34 3d  69 63 6f 6e 0d 0b d6 22  |lock%!4=icon..."|
00001a30  20 c8 99 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  | .."Wimp_GetIcon|
00001a40  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 25 0d 0b  |State",,block%..|
00001a50  e0 0f 3d 20 62 6c 6f 63  6b 25 21 32 38 0d 0b ea  |..= block%!28...|
00001a60  05 3a 0d 0b f4 1c dd f2  6f 70 65 6e 75 70 28 77  |.:......openup(w|
00001a70  69 6e 64 6f 77 2c 78 2c  79 2c 77 2c 68 29 0d 0b  |indow,x,y,w,h)..|
00001a80  fe 14 20 62 6c 6f 63 6b  25 21 30 3d 77 69 6e 64  |.. block%!0=wind|
00001a90  6f 77 0d 0c 08 20 20 62  6c 6f 63 6b 25 21 34 3d  |ow...  block%!4=|
00001aa0  78 20 20 20 3a 20 62 6c  6f 63 6b 25 21 38 3d 79  |x   : block%!8=y|
00001ab0  2d 68 0d 0c 12 1f 20 62  6c 6f 63 6b 25 21 31 32  |-h.... block%!12|
00001ac0  3d 78 2b 77 3a 20 62 6c  6f 63 6b 25 21 31 36 3d  |=x+w: block%!16=|
00001ad0  79 0d 0c 1c 1f 20 62 6c  6f 63 6b 25 21 32 30 3d  |y.... block%!20=|
00001ae0  30 20 20 3a 20 62 6c 6f  63 6b 25 21 32 34 3d 30  |0  : block%!24=0|
00001af0  0d 0c 26 11 20 62 6c 6f  63 6b 25 21 32 38 3d 2d  |..&. block%!28=-|
00001b00  31 0d 0c 30 21 20 c8 99  20 22 57 69 6d 70 5f 4f  |1..0! .. "Wimp_O|
00001b10  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |penWindow",,bloc|
00001b20  6b 25 0d 0c 3a 05 e1 0d  0c 44 05 3a 0d 0c 4e 12  |k%..:....D.:..N.|
00001b30  dd f2 64 65 66 69 6e 65  5f 6d 65 6e 75 73 0d 0c  |..define_menus..|
00001b40  58 13 20 66 6c 61 67 73  3d 26 37 30 30 30 31 32  |X. flags=&700012|
00001b50  31 0d 0c 62 12 20 50 25  3d 6d 61 69 6e 5f 6d 65  |1..b. P%=main_me|
00001b60  6e 75 25 0d 0c 6c 14 20  61 64 64 72 3d 6d 65 6e  |nu%..l. addr=men|
00001b70  75 5f 74 65 78 74 25 0d  0c 76 1f 20 f2 6d 65 6e  |u_text%..v. .men|
00001b80  75 5f 68 65 61 64 65 72  28 22 4c 6f 74 74 65 72  |u_header("Lotter|
00001b90  79 22 2c 31 36 29 0d 0c  80 2c 20 f2 6d 65 6e 75  |y",16)..., .menu|
00001ba0  5f 69 74 65 6d 28 26 30  30 2c 69 6e 66 6f 68 61  |_item(&00,infoha|
00001bb0  6e 64 6c 65 2c 66 6c 61  67 73 2c 22 49 6e 66 6f  |ndle,flags,"Info|
00001bc0  22 29 0d 0c 8a 2d 20 f2  6d 65 6e 75 5f 69 74 65  |")...- .menu_ite|
00001bd0  6d 28 26 30 30 2c 2d 31  2c 66 6c 61 67 73 2c 22  |m(&00,-1,flags,"|
00001be0  4c 75 63 6b 79 20 4e 75  6d 62 65 72 73 22 29 0d  |Lucky Numbers").|
00001bf0  0c 94 2c 20 f2 6d 65 6e  75 5f 69 74 65 6d 28 26  |.., .menu_item(&|
00001c00  30 30 2c 2d 31 2c 66 6c  61 67 73 2c 22 50 61 73  |00,-1,flags,"Pas|
00001c10  74 20 57 69 6e 6e 65 72  73 22 29 0d 0c 9e 2a 20  |t Winners")...* |
00001c20  f2 6d 65 6e 75 5f 69 74  65 6d 28 26 30 32 2c 2d  |.menu_item(&02,-|
00001c30  31 2c 66 6c 61 67 73 2c  22 53 74 61 74 69 73 74  |1,flags,"Statist|
00001c40  69 63 73 22 29 0d 0c a8  24 20 f2 6d 65 6e 75 5f  |ics")...$ .menu_|
00001c50  69 74 65 6d 28 26 38 30  2c 2d 31 2c 66 6c 61 67  |item(&80,-1,flag|
00001c60  73 2c 22 51 75 69 74 22  29 0d 0c b2 0e 20 50 25  |s,"Quit").... P%|
00001c70  3d 6d 65 6e 75 32 25 0d  0c bc 24 20 f2 6d 65 6e  |=menu2%...$ .men|
00001c80  75 5f 68 65 61 64 65 72  28 22 43 68 6f 6f 73 65  |u_header("Choose|
00001c90  20 62 79 2e 2e 2e 22 2c  31 36 29 0d 0c c6 2b 20  | by...",16)...+ |
00001ca0  f2 6d 65 6e 75 5f 69 74  65 6d 28 26 30 30 2d 72  |.menu_item(&00-r|
00001cb0  61 6e 64 2c 2d 31 2c 66  6c 61 67 73 2c 22 52 61  |and,-1,flags,"Ra|
00001cc0  6e 64 6f 6d 22 29 0d 0c  d0 2f 20 f2 6d 65 6e 75  |ndom").../ .menu|
00001cd0  5f 69 74 65 6d 28 26 30  30 2d 72 61 72 65 2c 2d  |_item(&00-rare,-|
00001ce0  31 2c 66 6c 61 67 73 2c  22 49 6e 66 72 65 71 75  |1,flags,"Infrequ|
00001cf0  65 6e 74 22 29 0d 0c da  2c 20 f2 6d 65 6e 75 5f  |ent")..., .menu_|
00001d00  69 74 65 6d 28 26 30 30  2d 63 6f 6d 2c 2d 31 2c  |item(&00-com,-1,|
00001d10  66 6c 61 67 73 2c 22 46  72 65 71 75 65 6e 74 22  |flags,"Frequent"|
00001d20  29 0d 0c e4 36 20 f2 6d  65 6e 75 5f 69 74 65 6d  |)...6 .menu_item|
00001d30  28 26 38 30 2d 62 79 6e  61 6d 65 2c 6e 61 6d 65  |(&80-byname,name|
00001d40  68 61 6e 64 6c 65 2c 66  6c 61 67 73 2c 22 42 79  |handle,flags,"By|
00001d50  20 6e 61 6d 65 22 29 0d  0c ee 05 e1 0d 0c f8 05  | name").........|
00001d60  3a 0d 0d 02 12 dd f2 70  72 6f 63 65 73 73 5f 6d  |:......process_m|
00001d70  65 6e 75 0d 0d 0c 12 20  e7 20 6d 61 69 6e 5f 6d  |enu.... . main_m|
00001d80  65 6e 75 20 8c 0d 0d 16  12 20 20 20 c8 8e 20 70  |enu .....   .. p|
00001d90  74 72 25 21 30 20 ca 0d  0d 20 31 20 20 20 20 20  |tr%!0 ... 1     |
00001da0  c9 20 31 3a f2 6f 70 65  6e 75 70 28 6d 61 69 6e  |. 1:.openup(main|
00001db0  68 61 6e 64 6c 65 2c 32  30 30 2c 31 30 30 30 2c  |handle,200,1000,|
00001dc0  39 37 36 2c 34 34 30 29  0d 0d 2a 48 20 20 20 20  |976,440)..*H    |
00001dd0  20 c9 20 32 3a f2 6f 70  65 6e 75 70 28 65 6e 74  | . 2:.openup(ent|
00001de0  72 79 68 61 6e 64 6c 65  2c 32 30 30 2c 38 30 30  |ryhandle,200,800|
00001df0  2c 31 30 37 36 2c 33 32  34 29 3a f2 63 61 72 65  |,1076,324):.care|
00001e00  74 28 65 6e 74 72 79 68  61 6e 64 6c 65 2c 30 29  |t(entryhandle,0)|
00001e10  0d 0d 34 38 20 20 20 20  20 c9 20 33 3a f2 73 74  |..48     . 3:.st|
00001e20  61 74 73 3a f2 6f 70 65  6e 75 70 28 76 69 65 77  |ats:.openup(view|
00001e30  68 61 6e 64 6c 65 2c 32  30 30 2c 31 30 30 30 2c  |handle,200,1000,|
00001e40  35 30 30 2c 39 30 30 29  0d 0d 3e 13 20 20 20 20  |500,900)..>.    |
00001e50  20 c9 20 34 3a 71 75 69  74 3d b9 0d 0d 48 08 20  | . 4:quit=...H. |
00001e60  20 20 cb 0d 0d 52 06 20  cc 0d 0d 5c 12 20 20 20  |  ...R. ...\.   |
00001e70  c8 8e 20 70 74 72 25 21  30 20 ca 0d 0d 66 37 20  |.. ptr%!0 ...f7 |
00001e80  20 20 20 20 c9 20 30 3a  72 61 6e 64 3d b9 3a 62  |    . 0:rand=.:b|
00001e90  79 6e 61 6d 65 3d a3 3a  63 6f 6d 3d a3 3a 72 61  |yname=.:com=.:ra|
00001ea0  72 65 3d a3 3a f2 64 65  66 69 6e 65 5f 6d 65 6e  |re=.:.define_men|
00001eb0  75 73 0d 0d 70 2d 20 20  20 20 20 20 20 20 20 20  |us..p-          |
00001ec0  20 20 f2 63 61 70 74 69  6f 6e 28 22 43 6f 6d 70  |  .caption("Comp|
00001ed0  6c 65 74 65 6c 79 20 52  61 6e 64 6f 6d 22 29 0d  |letely Random").|
00001ee0  0d 7a 17 20 20 20 20 20  20 20 20 20 20 20 20 f2  |.z.            .|
00001ef0  72 61 6e 64 6f 6d 0d 0d  84 37 20 20 20 20 20 c9  |random...7     .|
00001f00  20 31 3a 72 61 6e 64 3d  a3 3a 62 79 6e 61 6d 65  | 1:rand=.:byname|
00001f10  3d a3 3a 63 6f 6d 3d a3  3a 72 61 72 65 3d b9 3a  |=.:com=.:rare=.:|
00001f20  f2 64 65 66 69 6e 65 5f  6d 65 6e 75 73 0d 0d 8e  |.define_menus...|
00001f30  30 20 20 20 20 20 20 20  20 20 20 20 20 f2 63 61  |0            .ca|
00001f40  70 74 69 6f 6e 28 22 52  61 72 65 6c 79 20 64 72  |ption("Rarely dr|
00001f50  61 77 6e 20 6e 75 6d 62  65 72 73 22 29 0d 0d 98  |awn numbers")...|
00001f60  1d 20 20 20 20 20 20 20  20 20 20 20 20 f2 72 61  |.            .ra|
00001f70  72 65 5f 6e 75 6d 62 65  72 73 0d 0d a2 37 20 20  |re_numbers...7  |
00001f80  20 20 20 c9 20 32 3a 72  61 6e 64 3d a3 3a 62 79  |   . 2:rand=.:by|
00001f90  6e 61 6d 65 3d a3 3a 63  6f 6d 3d b9 3a 72 61 72  |name=.:com=.:rar|
00001fa0  65 3d a3 3a f2 64 65 66  69 6e 65 5f 6d 65 6e 75  |e=.:.define_menu|
00001fb0  73 0d 0d ac 34 20 20 20  20 20 20 20 20 20 20 20  |s...4           |
00001fc0  20 f2 63 61 70 74 69 6f  6e 28 22 46 72 65 71 75  | .caption("Frequ|
00001fd0  65 6e 74 6c 79 20 64 72  61 77 6e 20 6e 75 6d 62  |ently drawn numb|
00001fe0  65 72 73 22 29 0d 0d b6  1f 20 20 20 20 20 20 20  |ers")....       |
00001ff0  20 20 20 20 20 f2 63 6f  6d 6d 6f 6e 5f 6e 75 6d  |     .common_num|
00002000  62 65 72 73 0d 0d c0 37  20 20 20 20 20 c9 20 33  |bers...7     . 3|
00002010  3a 72 61 6e 64 3d a3 3a  62 79 6e 61 6d 65 3d b9  |:rand=.:byname=.|
00002020  3a 63 6f 6d 3d a3 3a 72  61 72 65 3d a3 3a f2 64  |:com=.:rare=.:.d|
00002030  65 66 69 6e 65 5f 6d 65  6e 75 73 0d 0d ca 23 20  |efine_menus...# |
00002040  20 20 20 20 20 20 20 20  20 20 20 f2 63 61 70 74  |           .capt|
00002050  69 6f 6e 28 24 6e 61 6d  65 61 64 64 72 29 0d 0d  |ion($nameaddr)..|
00002060  d4 22 20 20 20 20 20 20  20 20 20 20 20 20 f2 6e  |."            .n|
00002070  75 6d 62 65 72 73 5f 66  72 6f 6d 5f 6e 61 6d 65  |umbers_from_name|
00002080  0d 0d de 0a 20 20 20 20  20 cb 0d 0d e8 06 20 cd  |....     ..... .|
00002090  0d 0d f2 05 e1 0d 0d fc  05 3a 0d 0e 06 0d dd f2  |.........:......|
000020a0  63 6c 69 63 6b 65 64 0d  0e 10 50 20 58 25 3d 70  |clicked...P X%=p|
000020b0  74 72 25 21 30 2d 36 34  20 3a 20 59 25 3d 70 74  |tr%!0-64 : Y%=pt|
000020c0  72 25 21 34 2b 36 34 20  3a 20 62 75 74 74 6f 6e  |r%!4+64 : button|
000020d0  3d 70 74 72 25 21 38 20  3a 20 77 69 6e 64 6f 77  |=ptr%!8 : window|
000020e0  3d 70 74 72 25 21 31 32  20 3a 20 69 63 6f 6e 3d  |=ptr%!12 : icon=|
000020f0  70 74 72 25 21 31 36 0d  0e 1a 10 20 c8 8e 20 77  |ptr%!16.... .. w|
00002100  69 6e 64 6f 77 20 ca 0d  0e 24 13 20 20 20 c9 20  |indow ...$.   . |
00002110  6d 61 69 6e 68 61 6e 64  6c 65 0d 0e 2e 12 20 20  |mainhandle....  |
00002120  20 20 20 c8 8e 20 69 63  6f 6e 20 ca 0d 0e 38 23  |   .. icon ...8#|
00002130  20 20 20 20 20 20 20 c9  20 37 2c 31 34 3a 20 e7  |       . 7,14: .|
00002140  20 72 61 6e 64 20 8c 20  f2 72 61 6e 64 6f 6d 0d  | rand . .random.|
00002150  0e 42 2c 20 20 20 20 20  20 20 20 20 20 20 20 20  |.B,             |
00002160  20 20 20 20 20 e7 20 72  61 72 65 20 8c 20 f2 72  |     . rare . .r|
00002170  61 72 65 5f 6e 75 6d 62  65 72 73 0d 0e 4c 2e 20  |are_numbers..L. |
00002180  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002190  20 e7 20 63 6f 6d 20 20  8c 20 f2 63 6f 6d 6d 6f  | . com  . .commo|
000021a0  6e 5f 6e 75 6d 62 65 72  73 0d 0e 56 40 20 20 20  |n_numbers..V@   |
000021b0  20 20 20 20 c9 20 36 3a  20 6d 61 69 6e 5f 6d 65  |    . 6: main_me|
000021c0  6e 75 3d a3 20 3a 20 c8  99 20 22 57 69 6d 70 5f  |nu=. : .. "Wimp_|
000021d0  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6d 65 6e  |CreateMenu",,men|
000021e0  75 32 25 2c 58 25 2c 59  25 0d 0e 60 0a 20 20 20  |u2%,X%,Y%..`.   |
000021f0  20 20 7f 0d 0e 6a 4e 20  20 20 20 20 20 20 e7 20  |  ...jN       . |
00002200  62 75 74 74 6f 6e 20 80  20 32 20 8c 20 6d 61 69  |button . 2 . mai|
00002210  6e 5f 6d 65 6e 75 3d b9  20 3a 20 c8 99 20 22 57  |n_menu=. : .. "W|
00002220  69 6d 70 5f 43 72 65 61  74 65 4d 65 6e 75 22 2c  |imp_CreateMenu",|
00002230  2c 6d 61 69 6e 5f 6d 65  6e 75 25 2c 58 25 2c 59  |,main_menu%,X%,Y|
00002240  25 0d 0e 74 0a 20 20 20  20 20 cb 0d 0e 7e 14 20  |%..t.     ...~. |
00002250  20 20 c9 20 65 6e 74 72  79 68 61 6e 64 6c 65 0d  |  . entryhandle.|
00002260  0e 88 12 20 20 20 20 20  c8 8e 20 69 63 6f 6e 20  |...     .. icon |
00002270  ca 0d 0e 92 2a 20 20 20  20 20 20 20 20 c9 20 31  |....*        . 1|
00002280  32 3a 77 65 65 6b 3d 31  20 3a 20 f2 73 68 6f 77  |2:week=1 : .show|
00002290  5f 77 65 65 6b 28 77 65  65 6b 29 0d 0e 9c 36 20  |_week(week)...6 |
000022a0  20 20 20 20 20 20 20 c9  20 31 33 3a e7 20 77 65  |       . 13:. we|
000022b0  65 6b 3e 31 20 8c 20 77  65 65 6b 2d 3d 31 20 3a  |ek>1 . week-=1 :|
000022c0  20 f2 73 68 6f 77 5f 77  65 65 6b 28 77 65 65 6b  | .show_week(week|
000022d0  29 0d 0e a6 3e 20 20 20  20 20 20 20 20 c9 20 31  |)...>        . 1|
000022e0  34 3a e7 20 77 65 65 6b  3c 6e 65 78 74 5f 77 65  |4:. week<next_we|
000022f0  65 6b 20 8c 20 77 65 65  6b 2b 3d 31 20 3a 20 f2  |ek . week+=1 : .|
00002300  73 68 6f 77 5f 77 65 65  6b 28 77 65 65 6b 29 0d  |show_week(week).|
00002310  0e b0 32 20 20 20 20 20  20 20 20 c9 20 31 35 3a  |..2        . 15:|
00002320  77 65 65 6b 3d 6e 65 78  74 5f 77 65 65 6b 20 3a  |week=next_week :|
00002330  20 f2 73 68 6f 77 5f 77  65 65 6b 28 77 65 65 6b  | .show_week(week|
00002340  29 0d 0e ba 19 20 20 20  20 20 20 20 20 c9 20 38  |)....        . 8|
00002350  3a f2 73 61 76 65 5f 6e  65 77 0d 0e c4 0a 20 20  |:.save_new....  |
00002360  20 20 20 7f 0d 0e ce 40  20 20 20 20 20 20 20 20  |   ....@        |
00002370  6d 61 69 6e 5f 6d 65 6e  75 3d b9 20 3a 20 c8 99  |main_menu=. : ..|
00002380  20 22 57 69 6d 70 5f 43  72 65 61 74 65 4d 65 6e  | "Wimp_CreateMen|
00002390  75 22 2c 2c 6d 61 69 6e  5f 6d 65 6e 75 25 2c 58  |u",,main_menu%,X|
000023a0  25 2c 59 25 0d 0e d8 0a  20 20 20 20 20 cb 0d 0e  |%,Y%....     ...|
000023b0  e2 1e 20 20 20 20 20 f2  63 61 72 65 74 28 65 6e  |..     .caret(en|
000023c0  74 72 79 68 61 6e 64 6c  65 2c 30 29 0d 0e ec 13  |tryhandle,0)....|
000023d0  20 20 20 c9 20 76 69 65  77 68 61 6e 64 6c 65 0d  |   . viewhandle.|
000023e0  0e f6 4c 20 20 20 20 20  e7 20 62 75 74 74 6f 6e  |..L     . button|
000023f0  20 80 20 32 20 8c 20 6d  61 69 6e 5f 6d 65 6e 75  | . 2 . main_menu|
00002400  3d b9 20 3a 20 c8 99 20  22 57 69 6d 70 5f 43 72  |=. : .. "Wimp_Cr|
00002410  65 61 74 65 4d 65 6e 75  22 2c 2c 6d 61 69 6e 5f  |eateMenu",,main_|
00002420  6d 65 6e 75 25 2c 58 25  2c 59 25 0d 0f 00 17 20  |menu%,X%,Y%.... |
00002430  20 20 c9 20 2d 32 20 3a  20 f4 20 69 63 6f 6e 62  |  . -2 : . iconb|
00002440  61 72 0d 0f 0a 4c 20 20  20 20 20 e7 20 62 75 74  |ar...L     . but|
00002450  74 6f 6e 20 80 20 32 20  8c 20 6d 61 69 6e 5f 6d  |ton . 2 . main_m|
00002460  65 6e 75 3d b9 20 3a c8  99 20 22 57 69 6d 70 5f  |enu=. :.. "Wimp_|
00002470  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6d 61 69  |CreateMenu",,mai|
00002480  6e 5f 6d 65 6e 75 25 2c  58 25 2c 33 32 38 0d 0f  |n_menu%,X%,328..|
00002490  14 19 20 20 20 20 20 e7  20 28 62 75 74 74 6f 6e  |..     . (button|
000024a0  20 80 20 34 29 20 8c 0d  0f 1e 1e 20 20 20 20 20  | . 4) .....     |
000024b0  20 20 62 6c 6f 63 6b 25  21 30 3d 6d 61 69 6e 68  |  block%!0=mainh|
000024c0  61 6e 64 6c 65 0d 0f 28  2a 20 20 20 20 20 20 20  |andle..(*       |
000024d0  c8 99 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |.."Wimp_GetWindo|
000024e0  77 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 25 0d  |wState",,block%.|
000024f0  0f 32 17 20 20 20 20 20  20 20 62 6c 6f 63 6b 25  |.2.       block%|
00002500  21 32 38 3d 2d 31 0d 0f  3c 26 20 20 20 20 20 20  |!28=-1..<&      |
00002510  20 c8 99 22 57 69 6d 70  5f 4f 70 65 6e 57 69 6e  | .."Wimp_OpenWin|
00002520  64 6f 77 22 2c 2c 62 6c  6f 63 6b 25 0d 0f 46 0a  |dow",,block%..F.|
00002530  20 20 20 20 20 cd 0d 0f  50 06 20 cb 0d 0f 5a 05  |     ...P. ...Z.|
00002540  e1 0d 0f 64 05 3a 0d 0f  6e 17 dd f2 6d 65 6e 75  |...d.:..n...menu|
00002550  5f 68 65 61 64 65 72 28  54 24 2c 77 29 0d 0f 78  |_header(T$,w)..x|
00002560  3c 20 24 50 25 3d 54 24  20 3a 20 50 25 21 31 32  |< $P%=T$ : P%!12|
00002570  3d 26 37 30 32 30 37 20  3a 20 50 25 21 31 36 3d  |=&70207 : P%!16=|
00002580  77 2a 31 36 20 3a 20 50  25 21 32 30 3d 33 34 20  |w*16 : P%!20=34 |
00002590  3a 20 50 25 21 32 34 3d  38 0d 0f 82 0b 20 50 25  |: P%!24=8.... P%|
000025a0  2b 3d 32 38 0d 0f 8c 05  e1 0d 0f 96 05 3a 0d 0f  |+=28.........:..|
000025b0  a0 24 dd f2 6d 65 6e 75  5f 69 74 65 6d 28 6d 65  |.$..menu_item(me|
000025c0  6e 66 6c 67 2c 73 75 62  2c 69 63 66 6c 67 2c 54  |nflg,sub,icflg,T|
000025d0  24 29 0d 0f aa 28 20 50  25 21 30 3d 6d 65 6e 66  |$)...( P%!0=menf|
000025e0  6c 67 20 3a 20 50 25 21  34 3d 73 75 62 20 3a 20  |lg : P%!4=sub : |
000025f0  50 25 21 38 3d 69 63 66  6c 67 0d 0f b4 28 20 50  |P%!8=icflg...( P|
00002600  25 21 31 32 3d 61 64 64  72 20 20 3a 20 50 25 21  |%!12=addr  : P%!|
00002610  31 36 3d 2d 31 20 3a 20  50 25 21 32 30 3d a9 20  |16=-1 : P%!20=. |
00002620  54 24 0d 0f be 0b 20 50  25 2b 3d 32 34 0d 0f c8  |T$.... P%+=24...|
00002630  1f 20 24 61 64 64 72 3d  54 24 2b bd 30 20 3a 20  |. $addr=T$+.0 : |
00002640  61 64 64 72 2b 3d a9 20  54 24 2b 31 0d 0f d2 05  |addr+=. T$+1....|
00002650  e1 0d 0f dc 05 3a 0d 0f  e6 12 dd f2 72 65 64 72  |.....:......redr|
00002660  61 77 77 69 6e 64 6f 77  0d 0f f0 12 20 68 61 6e  |awwindow.... han|
00002670  64 6c 65 3d 70 74 72 25  21 30 0d 0f fa 28 20 c8  |dle=ptr%!0...( .|
00002680  99 20 22 57 69 6d 70 5f  52 65 64 72 61 77 57 69  |. "Wimp_RedrawWi|
00002690  6e 64 6f 77 22 2c 2c 70  74 72 25 20 b8 20 66 6c  |ndow",,ptr% . fl|
000026a0  61 67 0d 10 04 0f 20 c8  95 20 66 6c 61 67 3c 3e  |ag.... .. flag<>|
000026b0  30 0d 10 0e 31 20 20 20  20 20 e7 20 68 61 6e 64  |0...1     . hand|
000026c0  6c 65 3d 76 69 65 77 68  61 6e 64 6c 65 20 8c 20  |le=viewhandle . |
000026d0  f2 77 72 69 74 65 5f 76  69 65 77 5f 77 69 6e 64  |.write_view_wind|
000026e0  6f 77 0d 10 18 2c 20 20  20 20 20 c8 99 20 22 57  |ow...,     .. "W|
000026f0  69 6d 70 5f 47 65 74 52  65 63 74 61 6e 67 6c 65  |imp_GetRectangle|
00002700  22 2c 2c 70 74 72 25 20  b8 20 66 6c 61 67 0d 10  |",,ptr% . flag..|
00002710  22 06 20 ce 0d 10 2c 05  e1 0d 10 36 05 3a 0d 10  |". ...,....6.:..|
00002720  40 17 dd f2 77 72 69 74  65 5f 76 69 65 77 5f 77  |@...write_view_w|
00002730  69 6e 64 6f 77 0d 10 4a  17 20 f4 20 63 6f 6d 70  |indow..J. . comp|
00002740  61 63 74 20 76 65 72 73  69 6f 6e 21 0d 10 54 24  |act version!..T$|
00002750  20 50 25 20 3d 20 2d 70  74 72 25 21 32 34 2b 28  | P% = -ptr%!24+(|
00002760  70 74 72 25 21 31 36 2d  70 74 72 25 21 34 30 29  |ptr%!16-ptr%!40)|
00002770  0d 10 5e 23 20 51 25 20  3d 20 20 70 74 72 25 21  |..^# Q% =  ptr%!|
00002780  32 30 2b 28 70 74 72 25  21 32 38 2d 70 74 72 25  |20+(ptr%!28-ptr%|
00002790  21 34 29 0d 10 68 11 20  4c 25 20 3d 20 50 25 20  |!4)..h. L% = P% |
000027a0  81 20 33 32 0d 10 72 12  20 43 25 20 3d 20 51 25  |. 32..r. C% = Q%|
000027b0  20 81 31 36 2b 31 0d 10  7c 20 20 4e 25 20 3d 20  | .16+1..|  N% = |
000027c0  28 70 74 72 25 21 33 36  2d 70 74 72 25 21 32 38  |(ptr%!36-ptr%!28|
000027d0  29 81 31 36 2b 32 0d 10  86 19 20 59 25 20 3d 20  |).16+2.... Y% = |
000027e0  70 74 72 25 21 34 30 2b  50 25 83 33 32 2d 34 0d  |ptr%!40+P%.32-4.|
000027f0  10 90 17 20 58 25 20 3d  20 70 74 72 25 21 32 38  |... X% = ptr%!28|
00002800  2d 51 25 83 31 36 0d 10  9a 24 20 e3 20 49 25 3d  |-Q%.16...$ . I%=|
00002810  30 20 b8 20 28 70 74 72  25 21 34 30 2d 70 74 72  |0 . (ptr%!40-ptr|
00002820  25 21 33 32 29 81 33 32  2b 31 0d 10 a4 0e 20 20  |%!32).32+1....  |
00002830  20 ec 20 58 25 2c 59 25  0d 10 ae 2b 20 20 20 e7  | . X%,Y%...+   .|
00002840  20 4c 25 3c 6d 61 78 6c  69 6e 65 73 25 20 8c 20  | L%<maxlines% . |
00002850  f1 20 c1 6c 69 6e 65 24  28 4c 25 29 2c 43 25 2c  |. .line$(L%),C%,|
00002860  4e 25 29 0d 10 b8 15 20  20 20 4c 25 2b 3d 31 20  |N%)....   L%+=1 |
00002870  3a 20 59 25 2d 3d 33 32  0d 10 c2 06 20 ed 0d 10  |: Y%-=32.... ...|
00002880  cc 05 e1 0d 10 d6 05 3a  0d 10 e0 0f dd f2 4f 53  |.......:......OS|
00002890  6d 65 73 73 61 67 65 0d  10 ea 15 20 61 63 74 69  |message.... acti|
000028a0  6f 6e 3d 62 6c 6f 63 6b  25 21 31 36 0d 10 f4 10  |on=block%!16....|
000028b0  20 c8 8e 20 61 63 74 69  6f 6e 20 ca 0d 10 fe 13  | .. action .....|
000028c0  20 20 20 c9 20 30 20 3a  20 71 75 69 74 3d b9 0d  |   . 0 : quit=..|
000028d0  11 08 1f 20 20 20 c9 20  26 34 30 30 43 31 20 3a  |...   . &400C1 :|
000028e0  f2 64 69 73 70 6c 61 79  5f 62 61 6c 6c 73 0d 11  |.display_balls..|
000028f0  12 06 20 cb 0d 11 1c 05  e1 0d 11 26 05 3a 0d 11  |.. ........&.:..|
00002900  30 0e dd f2 6b 65 79 70  72 65 73 73 0d 11 3a 35  |0...keypress..:5|
00002910  20 77 69 6e 64 6f 77 20  3d 20 70 74 72 25 21 30  | window = ptr%!0|
00002920  20 3a 20 69 63 6f 6e 20  3d 20 70 74 72 25 21 34  | : icon = ptr%!4|
00002930  20 3a 20 63 68 61 72 20  3d 20 70 74 72 25 21 32  | : char = ptr%!2|
00002940  34 0d 11 44 1a 20 e7 20  77 69 6e 64 6f 77 3d 6e  |4..D. . window=n|
00002950  61 6d 65 68 61 6e 64 6c  65 20 8c 0d 11 4e 12 20  |amehandle ...N. |
00002960  20 20 e7 20 63 68 61 72  3d 31 33 20 8c 0d 11 58  |  . char=13 ...X|
00002970  34 20 20 20 20 20 20 72  61 6e 64 3d a3 3a 62 79  |4      rand=.:by|
00002980  6e 61 6d 65 3d b9 3a 63  6f 6d 3d a3 3a 72 61 72  |name=.:com=.:rar|
00002990  65 3d a3 3a f2 64 65 66  69 6e 65 5f 6d 65 6e 75  |e=.:.define_menu|
000029a0  73 0d 11 62 1d 20 20 20  20 20 20 f2 63 61 70 74  |s..b.      .capt|
000029b0  69 6f 6e 28 24 6e 61 6d  65 61 64 64 72 29 0d 11  |ion($nameaddr)..|
000029c0  6c 21 20 20 20 20 20 20  c8 99 22 57 69 6d 70 5f  |l!      .."Wimp_|
000029d0  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 2d 31 0d  |CreateMenu",,-1.|
000029e0  11 76 1c 20 20 20 20 20  20 f2 6e 75 6d 62 65 72  |.v.      .number|
000029f0  73 5f 66 72 6f 6d 5f 6e  61 6d 65 0d 11 80 08 20  |s_from_name.... |
00002a00  20 20 cd 0d 11 8a 06 20  cd 0d 11 94 30 20 c8 99  |  ..... ....0 ..|
00002a10  20 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  | "Wimp_ProcessKe|
00002a20  79 22 2c 70 74 72 25 21  32 34 3a 20 f4 20 70 61  |y",ptr%!24: . pa|
00002a30  73 73 20 6b 65 79 20 6f  6e 0d 11 9e 05 e1 0d 11  |ss key on.......|
00002a40  a8 05 3a 0d 11 b2 12 dd  f2 73 68 75 74 28 77 69  |..:......shut(wi|
00002a50  6e 64 6f 77 29 0d 11 bc  14 20 62 6c 6f 63 6b 25  |ndow).... block%|
00002a60  21 30 3d 77 69 6e 64 6f  77 0d 11 c6 22 20 c8 99  |!0=window..." ..|
00002a70  20 22 57 69 6d 70 5f 43  6c 6f 73 65 57 69 6e 64  | "Wimp_CloseWind|
00002a80  6f 77 22 2c 2c 62 6c 6f  63 6b 25 0d 11 d0 05 e1  |ow",,block%.....|
00002a90  0d 11 da 05 3a 0d 11 e4  0b dd f2 65 72 72 6f 72  |....:......error|
00002aa0  0d 11 ee 0e 20 21 62 6c  6f 63 6b 25 3d 30 0d 11  |.... !block%=0..|
00002ab0  f8 1e 20 24 28 62 6c 6f  63 6b 25 2b 34 29 3d f6  |.. $(block%+4)=.|
00002ac0  24 2b 22 20 20 22 2b c3  9e 2b bd 30 0d 12 02 2f  |$+"  "+..+.0.../|
00002ad0  20 c8 99 22 57 69 6d 70  5f 52 65 70 6f 72 74 45  | .."Wimp_ReportE|
00002ae0  72 72 6f 72 22 2c 62 6c  6f 63 6b 25 2c 32 2c 22  |rror",block%,2,"|
00002af0  4c 6f 74 74 65 72 79 22  2b bd 30 0d 12 0c 0b 20  |Lottery"+.0.... |
00002b00  71 75 69 74 3d b9 0d 12  16 05 e1 0d 12 20 05 3a  |quit=........ .:|
00002b10  0d 12 2a 16 dd f2 74 65  78 74 5f 6d 65 73 73 61  |..*...text_messa|
00002b20  67 65 28 41 24 29 0d 12  34 0e 20 21 62 6c 6f 63  |ge(A$)..4. !bloc|
00002b30  6b 25 3d 30 0d 12 3e 16  20 24 28 62 6c 6f 63 6b  |k%=0..>. $(block|
00002b40  25 2b 34 29 3d 41 24 2b  bd 30 0d 12 48 30 20 c8  |%+4)=A$+.0..H0 .|
00002b50  99 22 57 69 6d 70 5f 52  65 70 6f 72 74 45 72 72  |."Wimp_ReportErr|
00002b60  6f 72 22 2c 62 6c 6f 63  6b 25 2c 31 36 2c 22 4c  |or",block%,16,"L|
00002b70  6f 74 74 65 72 79 22 2b  bd 30 0d 12 52 05 e1 0d  |ottery"+.0..R...|
00002b80  12 5c 05 3a 0d 12 66 0d  dd f2 69 63 6f 6e 62 61  |.\.:..f...iconba|
00002b90  72 0d 12 70 10 20 62 6c  6f 63 6b 25 21 30 3d 2d  |r..p. block%!0=-|
00002ba0  31 0d 12 7a 0f 20 62 6c  6f 63 6b 25 21 34 3d 30  |1..z. block%!4=0|
00002bb0  0d 12 84 0f 20 62 6c 6f  63 6b 25 21 38 3d 30 0d  |.... block%!8=0.|
00002bc0  12 8e 11 20 62 6c 6f 63  6b 25 21 31 32 3d 36 38  |... block%!12=68|
00002bd0  0d 12 98 11 20 62 6c 6f  63 6b 25 21 31 36 3d 36  |.... block%!16=6|
00002be0  38 0d 12 a2 14 20 62 6c  6f 63 6b 25 21 32 30 3d  |8.... block%!20=|
00002bf0  26 33 30 30 32 0d 12 ac  1c 20 24 28 62 6c 6f 63  |&3002.... $(bloc|
00002c00  6b 25 2b 32 34 29 3d 22  21 4c 6f 74 74 65 72 79  |k%+24)="!Lottery|
00002c10  22 0d 12 b6 2b 20 c8 99  20 22 57 69 6d 70 5f 43  |"...+ .. "Wimp_C|
00002c20  72 65 61 74 65 49 63 6f  6e 22 2c 2c 62 6c 6f 63  |reateIcon",,bloc|
00002c30  6b 25 20 b8 20 69 63 6f  6e 62 61 72 0d 12 c0 05  |k% . iconbar....|
00002c40  e1 0d 12 ca 05 3a 0d 12  d4 18 dd f2 75 70 64 61  |.....:......upda|
00002c50  74 65 5f 69 63 6f 6e 28  48 25 2c 49 25 29 0d 12  |te_icon(H%,I%)..|
00002c60  de 1e 20 62 6c 6f 63 6b  25 21 30 3d 48 25 20 3a  |.. block%!0=H% :|
00002c70  20 62 6c 6f 63 6b 25 21  34 3d 49 25 0d 12 e8 1d  | block%!4=I%....|
00002c80  20 62 6c 6f 63 6b 25 21  38 3d 30 20 3a 20 62 6c  | block%!8=0 : bl|
00002c90  6f 63 6b 25 21 31 32 3d  30 0d 12 f2 2e 20 c8 99  |ock%!12=0.... ..|
00002ca0  20 26 34 30 30 43 44 2c  2c 62 6c 6f 63 6b 25 20  | &400CD,,block% |
00002cb0  3a 20 f4 20 22 57 69 6d  70 5f 53 65 74 49 63 6f  |: . "Wimp_SetIco|
00002cc0  6e 53 74 61 74 65 22 0d  12 fc 05 e1 0d 13 06 05  |nState".........|
00002cd0  3a 0d 13 10 15 dd f2 73  65 74 5f 69 63 6f 6e 28  |:......set_icon(|
00002ce0  49 25 2c 53 25 29 0d 13  1a 26 20 62 6c 6f 63 6b  |I%,S%)...& block|
00002cf0  25 21 30 3d 6d 61 69 6e  68 61 6e 64 6c 65 20 3a  |%!0=mainhandle :|
00002d00  20 62 6c 6f 63 6b 25 21  34 3d 49 25 0d 13 24 29  | block%!4=I%..$)|
00002d10  20 e7 20 53 25 20 8c 20  62 6c 6f 63 6b 25 21 38  | . S% . block%!8|
00002d20  3d 26 32 30 30 30 30 30  20 8b 20 62 6c 6f 63 6b  |=&200000 . block|
00002d30  25 21 38 3d 30 0d 13 2e  16 20 62 6c 6f 63 6b 25  |%!8=0.... block%|
00002d40  21 31 32 3d 26 32 30 30  30 30 30 0d 13 38 2e 20  |!12=&200000..8. |
00002d50  c8 99 20 26 34 30 30 43  44 2c 2c 62 6c 6f 63 6b  |.. &400CD,,block|
00002d60  25 20 3a 20 f4 20 22 57  69 6d 70 5f 53 65 74 49  |% : . "Wimp_SetI|
00002d70  63 6f 6e 53 74 61 74 65  22 0d 13 42 05 e1 0d 13  |conState"..B....|
00002d80  4c 05 3a 0d 13 56 11 dd  f2 67 72 65 79 28 49 25  |L.:..V...grey(I%|
00002d90  2c 53 25 29 0d 13 60 28  20 20 20 62 6c 6f 63 6b  |,S%)..`(   block|
00002da0  25 21 30 3d 6d 61 69 6e  68 61 6e 64 6c 65 20 3a  |%!0=mainhandle :|
00002db0  20 62 6c 6f 63 6b 25 21  34 3d 49 25 0d 13 6a 2b  | block%!4=I%..j+|
00002dc0  20 20 20 e7 20 53 25 20  8c 20 62 6c 6f 63 6b 25  |   . S% . block%|
00002dd0  21 38 3d 26 34 30 30 30  30 30 20 8b 20 62 6c 6f  |!8=&400000 . blo|
00002de0  63 6b 25 21 38 3d 30 0d  13 74 18 20 20 20 62 6c  |ck%!8=0..t.   bl|
00002df0  6f 63 6b 25 21 31 32 3d  26 34 30 30 30 30 30 0d  |ock%!12=&400000.|
00002e00  13 7e 30 20 20 20 c8 99  20 26 34 30 30 43 44 2c  |.~0   .. &400CD,|
00002e10  2c 62 6c 6f 63 6b 25 20  3a 20 f4 20 22 57 69 6d  |,block% : . "Wim|
00002e20  70 5f 53 65 74 49 63 6f  6e 53 74 61 74 65 22 0d  |p_SetIconState".|
00002e30  13 88 05 e1 0d 13 92 05  3a 0d 13 9c 12 dd f2 63  |........:......c|
00002e40  61 72 65 74 28 48 25 2c  49 25 29 0d 13 a6 2d 20  |aret(H%,I%)...- |
00002e50  c8 99 22 57 69 6d 70 5f  53 65 74 43 61 72 65 74  |.."Wimp_SetCaret|
00002e60  50 6f 73 69 74 69 6f 6e  22 2c 48 25 2c 49 25 2c  |Position",H%,I%,|
00002e70  30 2c 30 2c 2d 31 2c 30  0d 13 b0 05 e1 0d 13 ba  |0,0,-1,0........|
00002e80  05 3a 0d 13 c4 29 dd f2  77 72 69 74 65 5f 76 61  |.:...)..write_va|
00002e90  6c 69 64 61 74 69 6f 6e  28 77 69 6e 64 6f 77 2c  |lidation(window,|
00002ea0  69 63 6f 6e 2c 74 65 78  74 24 29 0d 13 ce 14 20  |icon,text$).... |
00002eb0  62 6c 6f 63 6b 25 21 30  3d 77 69 6e 64 6f 77 0d  |block%!0=window.|
00002ec0  13 d8 12 20 62 6c 6f 63  6b 25 21 34 3d 69 63 6f  |... block%!4=ico|
00002ed0  6e 0d 13 e2 23 20 c8 99  20 22 57 69 6d 70 5f 47  |n...# .. "Wimp_G|
00002ee0  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 62 6c  |etIconState",,bl|
00002ef0  6f 63 6b 25 0d 13 ec 1a  20 24 28 62 6c 6f 63 6b  |ock%.... $(block|
00002f00  25 21 33 32 29 3d 74 65  78 74 24 2b bd 30 0d 13  |%!32)=text$+.0..|
00002f10  f6 1d 20 62 6c 6f 63 6b  25 21 38 3d 30 20 3a 20  |.. block%!8=0 : |
00002f20  62 6c 6f 63 6b 25 21 31  32 3d 30 0d 14 00 23 20  |block%!12=0...# |
00002f30  c8 99 20 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  |.. "Wimp_SetIcon|
00002f40  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 25 0d 14  |State",,block%..|
00002f50  0a 05 e1 0d 14 14 05 3a  0d 14 1e 11 dd f2 63 61  |.......:......ca|
00002f60  70 74 69 6f 6e 28 41 24  29 0d 14 28 17 20 24 6d  |ption(A$)..(. $m|
00002f70  61 69 6e 69 63 6f 6e 28  36 29 3d 41 24 2b bd 30  |ainicon(6)=A$+.0|
00002f80  0d 14 32 1f 20 f2 75 70  64 61 74 65 5f 69 63 6f  |..2. .update_ico|
00002f90  6e 28 6d 61 69 6e 68 61  6e 64 6c 65 2c 36 29 0d  |n(mainhandle,6).|
00002fa0  14 3c 05 e1 0d 14 46 05  20 0d ff                 |.<....F. ..|
00002fab