Home » Archimedes archive » Acorn User » AU 1997-11 A.adf » Osmosis » !Osmosis/!RunImage

!Osmosis/!RunImage

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

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

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-11 A.adf » Osmosis
Filename: !Osmosis/!RunImage
Read OK:
File size: AF9F bytes
Load address: 0000
Exec address: 0000
File contents
   10REM !Osmosis  -  A Desktop Patience Game by John Pettigrew.
   20version$="0.99":game%=1:osmodim%=FALSE:pyrdim%=FALSE:played%=FALSE:iconnumber%=0:pyrgames%=0:score%=0
   30
   40REM Initialise the application with the WIMP, install the
   50REM iconbar icon and load template file.
   60PROCwimp_init
   70
   80REM Open startup banner, set up menus and build cards.
   81DIM p% 256
   90SYS"WimpExt_OpenWindowTop",banner%
  100SYS"Wimp_Poll",,p%
  110PROCmakemenu
  120PROCbuildcards
  121!p%=banner%
  140SYS"Wimp_CloseWindow",,p%
  150
  160REM Now perform a wimp poll loop :
  170REPEAT
  180  PROCwimp_poll
  190UNTIL quit%=TRUE
  200SYS "XWimpExt_CloseDown",task%
  210SYS "XWimp_CloseDown"
  220END
  230
  240DEFPROCwimp_init
  250REM This procedure will register the programme with the WIMP
  260REM and set up the icon bar icon etc.
  270LOCAL window%,template%,indir%
  280SYS "OS_File",17,"<Osmosis$Dir>.Sprites" TO type%,,,,length%
  290IF type%<>1 OR length%<>40324 THEN ERROR(0,"Incorrect or missing Sprites file.")
  300DIM q% 256,sprite% 285000,window% 8,template% 1024,indir% 256
  310!sprite%=285000
  320SYS "OS_SpriteOp",&10A,sprite%,"<Osmosis$Dir>.Sprites"
  330SYS "Wimp_Initialise",310,&4B534154,0,"Osmosis" TO ,task%
  340SYS "WimpExt_Initialise",16,task%,%1111010011,sprite%
  350SYS "WimpExt_IconBarSprite",,,-1,"!osmosis",,3
  360window%!4=%101:window%!8=%101
  370SYS "WimpExt_LoadTemplates",window%,template%,indir%,indir%+256,-1,"<Osmosis$Dir>.Templates",sprite%
  380info%=!window%:main%=window%!4:banner%=window%!8
  390quit%=0:menu%=0
  400ENDPROC
  410
  420DEFPROCmakemenu
  430REM Creates the menus.
  440DIM imenu% 96,gmenu% 152
  450$imenu%="Osmosis"
  460imenu%!12=&70207
  470imenu%!16=16*8:REM This sets the width of the menu.
  480imenu%!20=44
  490imenu%!24=0
  500imenu%!28=0
  510imenu%!32=info%
  520imenu%!36=&7000021
  530$(imenu%+40)="Info"
  540imenu%!52=2
  550imenu%!56=0
  560imenu%!60=&7000021
  570$(imenu%+64)="Osmosis"
  580imenu%!76=128
  590imenu%!80=0
  600imenu%!84=&7000021
  610$(imenu%+88)="Quit"
  620$gmenu%="Game Menu"
  630gmenu%!12=&70207
  640gmenu%!16=16*10:REM This sets the width of the menu.
  650gmenu%!20=44
  660gmenu%!24=0
  670gmenu%!28=0
  680gmenu%!32=0
  690gmenu%!36=&7000021
  700$(gmenu%+40)="Undo"
  710gmenu%!52=2
  720gmenu%!56=0
  730gmenu%!60=&7000021
  740$(gmenu%+64)="Resign"
  750gmenu%!76=0
  760gmenu%!80=0
  770gmenu%!84=&7000021
  780$(gmenu%+88)="Osmosis"
  790gmenu%!100=2
  800gmenu%!104=0
  810gmenu%!108=&7000021
  820$(gmenu%+112)="Pyramid"
  830gmenu%!124=128
  840gmenu%!128=0
  850gmenu%!132=&7000021
  860$(gmenu%+136)="Quit"
  870SYS"WimpExt_ShadeEntry",,gmenu%,0,1
  880ENDPROC
  890
  900DEFPROCbuildcards
  910LOCAL tempsprite$,tempsprite2$,I,tempval%,tempsuit$
  920REM This procedure (and its subprocedures) makes the full 52 card
  930REM sprites out of the elements in the Sprites file.
  940REM First, copy the halfcard sprite into 4 temporary sprites and
  950REM make the the template suit halfcards.
  960SYS"OS_SpriteOp",256+27,sprite%,"halfcard","hearts"
  970SYS"OS_SpriteOp",256+27,sprite%,"halfcard","spades"
  980SYS"OS_SpriteOp",256+27,sprite%,"halfcard","clubs"
  990SYS"OS_SpriteOp",256+27,sprite%,"halfcard","diamonds"
 1000PROCdrawsprite("hearts","sm_heart",18,46)
 1010PROCdrawsprite("spades","sm_spade",18,46)
 1020PROCdrawsprite("clubs","sm_club",18,46)
 1030PROCdrawsprite("diamonds","sm_diam",18,46)
 1040REM Now make the number cards (whole, not half).
 1050FOR I=1 TO 52
 1060  IF I<14 THEN PROCaddsprite("hearts",STR$I,"red_"+STR$I,18,70)
 1070  IF I>13 AND I<27 THEN PROCaddsprite("diamonds",STR$I,"red_"+STR$(I-13),18,70)
 1080  IF I>26 AND I<40 THEN PROCaddsprite("clubs",STR$I,"black_"+STR$(I-26),18,70)
 1090  IF I>39 THEN PROCaddsprite("spades",STR$I,"black_"+STR$(I-39),18,70)
 1100  SYS"OS_SpriteOp",256+27,sprite%,STR$I,tempsprite$
 1110  SYS"OS_SpriteOp",256+33,sprite%,tempsprite$
 1120  SYS"OS_SpriteOp",256+47,sprite%,tempsprite$
 1130  SYS"OS_SpriteOp",256+35,sprite%,STR$I,tempsprite$,1
 1140NEXT I
 1150REM Now to finish off the cards by adding the decoration.
 1160FOR I=1 TO 52
 1170  tempval%=FNcardval(I)
 1180  IF I<14 THEN
 1190    IF tempval%<11 THEN
 1200      tempsuit$="heart":tempsprite$="m_heart"
 1210      SYS"OS_SpriteOp",256+27,sprite%,"m_heart",tempsprite2$
 1220      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1230    ELSE
 1240      CASE tempval% OF
 1250        WHEN 11: tempsprite$="jack_hearts"
 1260        WHEN 12: tempsprite$="queen_hearts"
 1270        WHEN 13: tempsprite$="king_hearts"
 1280      ENDCASE
 1290      SYS"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
 1300      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1310      SYS"OS_SpriteOp",256+47,sprite%,tempsprite2$
 1320      SYS"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
 1330    ENDIF
 1340  ENDIF
 1350  IF I>13 AND I<27 THEN
 1360    IF tempval%<11 THEN
 1370      tempsuit$="diam":tempsprite$="m_diam"
 1380      SYS"OS_SpriteOp",256+27,sprite%,"m_diam",tempsprite2$
 1390      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1400    ELSE
 1410      CASE tempval% OF
 1420        WHEN 11: tempsprite$="jack_diam"
 1430        WHEN 12: tempsprite$="queen_diam"
 1440        WHEN 13: tempsprite$="king_diam"
 1450      ENDCASE
 1460      SYS"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
 1470      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1480      SYS"OS_SpriteOp",256+47,sprite%,tempsprite2$
 1490      SYS"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
 1500    ENDIF
 1510  ENDIF
 1520  IF I>26 AND I<40 THEN
 1530    IF tempval%<11 THEN
 1540      tempsuit$="club":tempsprite$="m_club"
 1550      SYS"OS_SpriteOp",256+27,sprite%,"m_club",tempsprite2$
 1560      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1570    ELSE
 1580      CASE tempval% OF
 1590        WHEN 11: tempsprite$="jack_clubs"
 1600        WHEN 12: tempsprite$="queen_clubs"
 1610        WHEN 13: tempsprite$="king_clubs"
 1620      ENDCASE
 1630      SYS"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
 1640      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1650      SYS"OS_SpriteOp",256+47,sprite%,tempsprite2$
 1660      SYS"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
 1670    ENDIF
 1680  ENDIF
 1690  IF I>39 THEN
 1700    IF tempval%<11 THEN
 1710      tempsuit$="spade":tempsprite$="m_spade"
 1720      SYS"OS_SpriteOp",256+27,sprite%,"m_spade",tempsprite2$
 1730      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1740    ELSE
 1750      CASE tempval% OF
 1760        WHEN 11: tempsprite$="jack_spades"
 1770        WHEN 12: tempsprite$="queen_spades"
 1780        WHEN 13: tempsprite$="king_spades"
 1790      ENDCASE
 1800      SYS"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
 1810      SYS"OS_SpriteOp",256+33,sprite%,tempsprite2$
 1820      SYS"OS_SpriteOp",256+47,sprite%,tempsprite2$
 1830      SYS"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
 1840    ENDIF
 1850  ENDIF
 1860  CASE tempval% OF
 1870    WHEN 1:
 1880      PROCdrawsprite(STR$I,"lg_"+tempsuit$,28,55)
 1890    WHEN 2:
 1900      PROCdrawsprite(STR$I,tempsprite$,68,136)
 1910      PROCdrawsprite(STR$I,tempsprite2$,68,52)
 1920    WHEN 3:
 1930      PROCdrawsprite(STR$I,tempsprite$,68,146)
 1940      PROCdrawsprite(STR$I,tempsprite$,68,94)
 1950      PROCdrawsprite(STR$I,tempsprite2$,68,42)
 1960    WHEN 4:
 1970      PROCdrawsprite(STR$I,tempsprite$,43,136)
 1980      PROCdrawsprite(STR$I,tempsprite$,93,136)
 1990      PROCdrawsprite(STR$I,tempsprite2$,43,52)
 2000      PROCdrawsprite(STR$I,tempsprite2$,93,52)
 2010    WHEN 5:
 2020      PROCdrawsprite(STR$I,tempsprite$,68,94)
 2030      PROCdrawsprite(STR$I,tempsprite$,43,136)
 2040      PROCdrawsprite(STR$I,tempsprite$,93,136)
 2050      PROCdrawsprite(STR$I,tempsprite2$,43,52)
 2060      PROCdrawsprite(STR$I,tempsprite2$,93,52)
 2070    WHEN 6:
 2080      PROCdrawsprite(STR$I,tempsprite$,43,136)
 2090      PROCdrawsprite(STR$I,tempsprite$,93,136)
 2100      PROCdrawsprite(STR$I,tempsprite$,43,94)
 2110      PROCdrawsprite(STR$I,tempsprite$,93,94)
 2120      PROCdrawsprite(STR$I,tempsprite2$,43,52)
 2130      PROCdrawsprite(STR$I,tempsprite2$,93,52)
 2140    WHEN 7:
 2150      PROCdrawsprite(STR$I,tempsprite$,43,136)
 2160      PROCdrawsprite(STR$I,tempsprite$,93,136)
 2170      PROCdrawsprite(STR$I,tempsprite$,68,116)
 2180      PROCdrawsprite(STR$I,tempsprite$,43,94)
 2190      PROCdrawsprite(STR$I,tempsprite$,93,94)
 2200      PROCdrawsprite(STR$I,tempsprite2$,43,52)
 2210      PROCdrawsprite(STR$I,tempsprite2$,93,52)
 2220    WHEN 8:
 2230      PROCdrawsprite(STR$I,tempsprite$,43,148)
 2240      PROCdrawsprite(STR$I,tempsprite$,93,148)
 2250      PROCdrawsprite(STR$I,tempsprite$,43,112)
 2260      PROCdrawsprite(STR$I,tempsprite$,93,112)
 2270      PROCdrawsprite(STR$I,tempsprite2$,43,76)
 2280      PROCdrawsprite(STR$I,tempsprite2$,93,76)
 2290      PROCdrawsprite(STR$I,tempsprite2$,43,40)
 2300      PROCdrawsprite(STR$I,tempsprite2$,93,40)
 2310    WHEN 9:
 2320      PROCdrawsprite(STR$I,tempsprite$,43,148)
 2330      PROCdrawsprite(STR$I,tempsprite$,93,148)
 2340      PROCdrawsprite(STR$I,tempsprite$,43,112)
 2350      PROCdrawsprite(STR$I,tempsprite$,93,112)
 2360      PROCdrawsprite(STR$I,tempsprite$,68,94)
 2370      PROCdrawsprite(STR$I,tempsprite2$,43,76)
 2380      PROCdrawsprite(STR$I,tempsprite2$,93,76)
 2390      PROCdrawsprite(STR$I,tempsprite2$,43,40)
 2400      PROCdrawsprite(STR$I,tempsprite2$,93,40)
 2410    WHEN 10:
 2420      PROCdrawsprite(STR$I,tempsprite$,43,148)
 2430      PROCdrawsprite(STR$I,tempsprite$,93,148)
 2440      PROCdrawsprite(STR$I,tempsprite$,68,130)
 2450      PROCdrawsprite(STR$I,tempsprite$,43,112)
 2460      PROCdrawsprite(STR$I,tempsprite$,93,112)
 2470      PROCdrawsprite(STR$I,tempsprite2$,43,76)
 2480      PROCdrawsprite(STR$I,tempsprite2$,93,76)
 2490      PROCdrawsprite(STR$I,tempsprite2$,68,58)
 2500      PROCdrawsprite(STR$I,tempsprite2$,43,40)
 2510      PROCdrawsprite(STR$I,tempsprite2$,93,40)
 2520    WHEN 11,12,13:
 2530      PROCdrawsprite(STR$I,tempsprite$,38,36)
 2540  ENDCASE
 2550  IF tempval%<11 THEN SYS"OS_SpriteOp",256+25,sprite%,tempsprite2$
 2560NEXT I
 2570ENDPROC
 2580
 2590DEFPROCdrawsprite(template$,add$,xpos%,ypos%)
 2600REM This procedure will add the sprite add$ to the sprite
 2610REM spritename$ at the position xpos%,ypos%.
 2620SYS"OS_SpriteOp",256+60,sprite%,template$,0
 2630SYS"OS_SpriteOp",256+34,sprite%,add$,xpos%,ypos%,8
 2640SYS"OS_SpriteOp",256+60,0
 2650ENDPROC
 2660
 2670DEFPROCaddsprite(template$,temp$,add$,xpos%,ypos%)
 2680REM This procedure will add the sprite add$ to the sprite
 2690REM spritename$ at the position xpos%,ypos%, creating a new sprite
 2700REM called temp$ in the process.
 2710SYS"OS_SpriteOp",256+27,sprite%,template$,temp$
 2720SYS"OS_SpriteOp",256+60,sprite%,temp$,0
 2730SYS"OS_SpriteOp",256+34,sprite%,add$,xpos%,ypos%,0
 2740SYS"OS_SpriteOp",256+60,0
 2750ENDPROC
 2760
 2770DEFPROCwimp_poll
 2780REM This is the heart of the programme. Polls the WIMP and
 2790REM performs actions dependent on the events that occur.
 2800LOCAL outline%,A%,B%,X%,Y%
 2810WHILE NOT quit%
 2820  DIM outline% 20
 2830  !outline%=main%
 2840  SYS "WimpExt_PrePoll"
 2850  SYS "Wimp_Poll",%11100000110001,q% TO reason%
 2860  SYS "WimpExt_Action",task%,q%,reason% TO reason%
 2870  CASE reason% OF
 2880    WHEN 1 : SYS "WimpExt_AutoRedraw",,q%
 2890    WHEN 2 : SYS "WimpExt_OpenLinked",,q%
 2900    WHEN 3 : SYS "WimpExt_CloseLinked",,q%
 2910    WHEN 6 :
 2920      IF q%!12=-2 THEN
 2930        IF q%!8=2 THEN
 2940          SYS "WimpExt_CreateMenu",,imenu%,!q%-64,250
 2950          menu%=imenu%
 2960        ENDIF
 2970        IF q%!8=4 THEN PROCnewgame
 2980      ENDIF
 2990      IF q%!12=main% AND q%!8=2 THEN
 3000        SYS "WimpExt_CreateMenu",,gmenu%,!q%,q%!4
 3010        menu%=gmenu%
 3020      ENDIF
 3030      IF q%!12=main% AND (q%!8=4 OR q%!8=1) THEN
 3040        CASE game% OF
 3050          WHEN 1 : PROCosmosis_mouseclick(q%!16)
 3060          WHEN 2 : IF deal%=4 THEN PROCnewgame ELSE PROCpyramid_mouseclick(q%!16)
 3070        ENDCASE
 3080      ENDIF
 3090    WHEN 9 :
 3100      CASE menu% OF
 3110        WHEN imenu%:
 3120          CASE !q% OF
 3130            WHEN 0 : SYS"WimpExt_OpenDialogue",,,info%,!q%-64,184
 3140            WHEN 1 : game%=1:PROCnewgame
 3150            WHEN 2 : quit%=TRUE
 3160          ENDCASE
 3170        WHEN gmenu%:
 3180          CASE !q% OF
 3190            WHEN 0 :
 3200              CASE game% OF
 3210                WHEN 1 : PROCosmosis_undo
 3220                WHEN 2 : PROCpyramid_undo
 3230              ENDCASE
 3240            WHEN 1 :
 3250              CASE game% OF
 3260                WHEN 1 : PROCnewgame
 3270                WHEN 2 :
 3280                  deal%=4
 3290                  PROCpyramid_score
 3300                  PROCnewgame
 3310              ENDCASE
 3320            WHEN 2 :
 3330              game%=1
 3340              PROCnewgame
 3350            WHEN 3 :
 3360              game%=2
 3370              PROCnewgame
 3380            WHEN 4 : quit%=TRUE
 3390          ENDCASE
 3400      ENDCASE
 3410    WHEN 17,18 :
 3420      CASE q%!16 OF
 3430        WHEN 0 : quit%=TRUE
 3440      ENDCASE
 3450  ENDCASE
 3460ENDWHILE
 3470ENDPROC
 3480
 3490DEFPROCnewgame
 3500REM Calls the relevant game routine.
 3510SYS"Wimp_ForceRedraw",main%,0,-1100,1480,0
 3520CASE game% OF
 3530  WHEN 1 : PROCosmosis
 3540  WHEN 2 : PROCpyramid
 3550ENDCASE
 3560played%=TRUE
 3570ENDPROC
 3580
 3590DEFPROCcleanupwindow(window%)
 3600REM Deletes all icons from the specified window.
 3610LOCAL delete%,I
 3620IF iconnumber%>1 THEN
 3630  DIM delete% 8
 3640  !delete%=window%
 3650  FOR I=1 TO iconnumber%
 3660    delete%!4=I
 3670    SYS"Wimp_DeleteIcon",,delete%
 3680  NEXT I
 3690ENDIF
 3700ENDPROC
 3710
 3720DEFPROCshuffle
 3730REM This procedure will set up the pack of 52 cards and ensure a
 3740REM random distribution.
 3750PROCdim
 3760LOCAL shuffle1%,shuffle2%,I,seed%
 3770seed%=RND(-TIME)
 3780FOR I=1 TO 52
 3790  pack%(I)=I
 3800NEXT I
 3810FOR I=1 TO 100
 3820  REPEAT
 3830    shuffle1%=RND(52)
 3840    shuffle2%=RND(52)
 3850  UNTIL shuffle1%<>shuffle2%
 3860  SWAP pack%(shuffle1%),pack%(shuffle2%)
 3870NEXT I
 3880ENDPROC
 3890
 3900DEFPROCdim
 3910REM Sets up game arrays.
 3920IF played%=FALSE THEN DIM pack%(52)
 3930CASE game% OF
 3940  WHEN 1 :
 3950    IF osmodim%=FALSE THEN
 3960      DIM osmopack%(35),osmowaste%(35),osmopile1%(4),osmopile2%(4),osmopile3%(4),osmopile4%(4),osmopile1han%(4),osmopile2han%(4),osmopile3han%(4),osmopile4han%(4),osmofound1%(13),osmofound2%(13),osmofound3%(13),osmofound4%(13)
 3970      DIM osmofound1han%(13),osmofound2han%(13),osmofound3han%(13),osmofound4han%(13),osmofound1val%(13),osmofound2val%(13),osmofound3val%(13),osmofound4val%(13)
 3980      osmodim%=TRUE
 3990    ENDIF
 4000  WHEN 2 :
 4010    IF pyrdim%=FALSE THEN
 4020      DIM pyrlay%(28),pyrlayhan%(28),pyrpack%(24),pyrwaste%(24),pyrfound%(52),pyrdeleted%(28)
 4030      pyrdim%=TRUE
 4040    ENDIF
 4050ENDCASE
 4060ENDPROC
 4070
 4080DEFFNcreateicon(win%,name$,text$,xmin%,ymin%,xmax%,ymax%,flag%)
 4090LOCAL iconhandle%,name%,slength%,tlength%,icon%,text%
 4100text$+=CHR$(0)
 4110tlength%=(LEN(text$)+4) AND (NOT 3)
 4120slength%=(LEN(name$)+4) AND (NOT 3)
 4130DIM icon% 36+tlength%+slength%
 4140text%=icon%+36+slength%
 4150$text%=text$
 4160name%=icon%+36
 4170IF name$="" THEN $name%="r5" ELSE $name%="s"+name$
 4180icon%!0=win%
 4190icon%!4=xmin%
 4200icon%!8=ymin%
 4210icon%!12=xmax%
 4220icon%!16=ymax%
 4230icon%!20=flag%
 4240icon%!24=text%
 4250icon%!28=name%
 4260icon%!32=tlength%
 4270SYS"Wimp_CreateIcon",,icon% TO iconhandle%
 4280iconnumber%=iconnumber%+1
 4290=iconhandle%
 4300
 4310DEFPROCseticonsprite(window%,RETURN icon%,sprite$)
 4320REM Sets the sprite of the given indirected text+sprite icon
 4330REM to sprite$.
 4340LOCAL block%,block2%,block3%,test$,I,xmin%,ymin%,xmax%,ymax%
 4350DIM block% 40,block2% 40,block3% 8
 4360!block%=window%
 4370block%!4=icon%
 4380!block2%=window%
 4390block2%!4=icon%
 4400SYS"Wimp_GetIconState",,block% TO ,block%
 4410SYS"Wimp_DeleteIcon",,block2%
 4420$block3%="s"+sprite$
 4430DIM block2% 36
 4440!block2%=window%
 4450FOR I=4 TO 32 STEP 4
 4460  block2%!I=block%!(I+4)
 4470NEXT I
 4480block2%!28=block3%
 4490SYS"Wimp_CreateIcon",,block2% TO icon%
 4500xmin%=block2%!4
 4510ymin%=block2%!8
 4520xmax%=block2%!12
 4530ymax%=block2%!16
 4540SYS"Wimp_ForceRedraw",window%,xmin%,ymin%,xmax%,ymax%
 4550ENDPROC
 4560
 4570DEFFNcardval(name%)
 4580REM This function will return the value of the card (i.e. the
 4590REM number shown on it)
 4600LOCAL val%
 4610SYS"WimpExt_Divide",,,name%,13 TO ,,val%
 4620IF val%=0 THEN val%=13
 4630=val%
 4640
 4650DEFPROCblankicon(window%,icon%)
 4660REM This procedure will remove the icon from the screen.
 4670LOCAL block%
 4680DIM block% 8
 4690!block%=window%
 4700block%!4=icon%
 4710PROCseticonsprite(window%,icon%,"")
 4720ENDPROC
 4730
 4740DEFPROCosmosis
 4750SYS"WimpExt_SetWindowTitle",,,main%,"Osmosis"
 4760IF played%=TRUE AND iconnumber%<>0 THEN PROCcleanupwindow(main%)
 4770PROCshuffle
 4780PROCosmosis_deal
 4790PROCosmosis_layout
 4800ENDPROC
 4810
 4820DEFPROCosmosis_deal
 4830REM This procedure will deal out the cards into the relevant
 4840REM arrays and lay out the cards in the window.
 4850LOCAL I
 4860FOR I=1 TO 4
 4870  osmopile1%(I)=pack%(I)
 4880  osmopile2%(I)=pack%(I+4)
 4890  osmopile3%(I)=pack%(I+8)
 4900  osmopile4%(I)=pack%(I+12)
 4910NEXT I
 4920FOR I=1 TO 13
 4930  osmofound1%(I)=0
 4940  osmofound2%(I)=0
 4950  osmofound3%(I)=0
 4960  osmofound4%(I)=0
 4970NEXT I
 4980osmofound1%(1)=pack%(17)
 4990FOR I=1 TO 35
 5000  osmopack%(I)=pack%(I+17)
 5010NEXT I
 5020FOR I=1 TO 35
 5030  osmowaste%(I)=0
 5040NEXT I
 5050SYS"WimpExt_Divide",,,osmofound1%(1),13 TO suit1%,,osmofound1val%(1)
 5060suit1%=suit1%+1
 5070IF osmofound1val%(1)=0 THEN
 5080  suit1%=suit1%-1
 5090  osmofound1val%(1)=13
 5100ENDIF
 5110suit2%=0
 5120suit3%=0
 5130suit4%=0
 5140ENDPROC
 5150
 5160DEFPROCosmosis_layout
 5170REM Sets out the cards for the game.
 5180LOCAL I,left%
 5190SYS "WimpExt_OpenWindowTop",main%
 5200top%=-10:left%=10
 5210FOR I=4 TO 2 STEP -1
 5220   osmopile1han%(I)=FNcreateicon(main%,"back","",left%,top%-208,left%+158,top%,%11000100011011)
 5230   osmopile2han%(I)=FNcreateicon(main%,"back","",left%,top%-426,left%+158,top%-218,%11000100011011)
 5240   osmopile3han%(I)=FNcreateicon(main%,"back","",left%,top%-644,left%+158,top%-436,%11000100011011)
 5250   osmopile4han%(I)=FNcreateicon(main%,"back","",left%,top%-862,left%+158,top%-654,%11000100011011)
 5260   left%=left%+30
 5270NEXT I
 5280osmopile1han%(1)=FNcreateicon(main%,STR$osmopile1%(1),"",left%,top%-208,left%+158,top%,%11000100011011)
 5290osmopile2han%(1)=FNcreateicon(main%,STR$osmopile2%(1),"",left%,top%-426,left%+158,top%-218,%11000100011011)
 5300osmopile3han%(1)=FNcreateicon(main%,STR$osmopile3%(1),"",left%,top%-644,left%+158,top%-436,%11000100011011)
 5310osmopile4han%(1)=FNcreateicon(main%,STR$osmopile4%(1),"",left%,top%-862,left%+158,top%-654,%11000100011011)
 5320osmopackhan%=FNcreateicon(main%,"back","",572,top%-1080,730,top%-872,%11000100011011)
 5330osmowastehan%=FNcreateicon(main%,"nocard","",750,top%-1080,908,top%-872,%11000100011011)
 5340left1%=308
 5350osmofound1han%(1)=FNcreateicon(main%,STR$osmofound1%(1),"",left1%,top%-208,left1%+158,top%,%100011011)
 5360found1%=1:found2%=0:found3%=0:found4%=0
 5370left1%=left1%+70
 5380left2%=308:left3%=308:left4%=308
 5390top1%=top%
 5400top2%=top1%-218:top3%=top2%-218:top4%=top3%-218
 5410turn1%=FALSE:turn2%=FALSE:turn3%=FALSE:turn4%=FALSE
 5420turned1%=FALSE:turned2%=FALSE:turned3%=FALSE:turned4%=FALSE
 5430ENDPROC
 5440
 5450DEFPROCosmosis_mouseclick(icon%)
 5460REM Processes mouse clicks in the osmosis main window.
 5470REM First set up the nexessary variables.
 5480LOCAL click%,name$,name%,iconsuit%,I,J,cardvalue%,tag%,hole$,lay%,empty%,iconhandle%,empty%,cardmoved%,shaded%
 5490tag%=FALSE:lay%=FALSE:cardmoved%=FALSE:turn1%=FALSE:turn2%=FALSE:turn3%=FALSE:turn4%=FALSE
 5500DIM click% 40
 5510!click%=main%
 5520click%!4=icon%
 5530SYS"Wimp_GetIconState",,click% TO ,click%
 5540name$=$click%!32
 5550name$=MID$(name$,2)
 5560name%=VALname$
 5570IF icon%=0 THEN iconsuit%=0 ELSE SYS"WimpExt_Divide",,,name%,13 TO iconsuit%,,cardvalue%
 5580iconsuit%=iconsuit%+1
 5590IF cardvalue%=0 THEN
 5600  iconsuit%=iconsuit%-1
 5610  cardvalue%=13
 5620ENDIF
 5630REM Now process the event.
 5640IF name%<>0 AND (icon%=osmopile1han%(1) OR icon%=osmopile2han%(1) OR icon%=osmopile3han%(1) OR icon%=osmopile4han%(1) OR icon%=osmowastehan%) THEN
 5650  CASE iconsuit% OF
 5660    WHEN suit1% :
 5670      found1%=found1%+1
 5680      osmofound1han%(found1%)=FNcreateicon(main%,name$,"",left1%,top1%-208,left1%+158,top1%,%100011011)
 5690      left1%=left1%+70
 5700      osmofound1%(found1%)=name%
 5710      osmofound1val%(found1%)=cardvalue%
 5720      PROCosmosis_movecard(icon%,osmofound1han%(found1%),name$)
 5730      cardmoved%=TRUE
 5740      IF osmofound1%(13)<>0 THEN turn1%=TRUE
 5750    WHEN suit2% :
 5760      FOR I=1 TO found1%
 5770        IF cardvalue%=osmofound1val%(I) THEN tag%=TRUE
 5780      NEXT I
 5790      IF tag%=TRUE THEN
 5800        found2%=found2%+1
 5810        osmofound2han%(found2%)=FNcreateicon(main%,name$,"",left2%,top2%-208,left2%+158,top2%,%100011011)
 5820        left2%=left2%+70
 5830        osmofound2%(found2%)=name%
 5840        osmofound2val%(found2%)=cardvalue%
 5850        PROCosmosis_movecard(icon%,osmofound2han%(found2%),name$)
 5860        cardmoved%=TRUE
 5870      ENDIF
 5880      IF osmofound2%(13)<>0 THEN turn2%=TRUE
 5890    WHEN suit3% :
 5900      FOR I=1 TO found2%
 5910        IF cardvalue%=osmofound2val%(I) THEN tag%=TRUE
 5920      NEXT I
 5930      IF tag%=TRUE THEN
 5940        found3%=found3%+1
 5950        osmofound3han%(found3%)=FNcreateicon(main%,name$,"",left3%,top3%-208,left3%+158,top3%,%100011011)
 5960        left3%=left3%+70
 5970        osmofound3%(found3%)=name%
 5980        osmofound3val%(found3%)=cardvalue%
 5990        PROCosmosis_movecard(icon%,osmofound3han%(found3%),name$)
 6000        cardmoved%=TRUE
 6010      ENDIF
 6020      IF osmofound3%(13)<>0 THEN turn3%=TRUE
 6030    WHEN suit4% :
 6040      FOR I=1 TO found3%
 6050        IF cardvalue%=osmofound3val%(I) THEN tag%=TRUE
 6060      NEXT I
 6070      IF tag%=TRUE THEN
 6080        found4%=found4%+1
 6090        osmofound4han%(found4%)=FNcreateicon(main%,name$,"",left4%,top4%-208,left4%+158,top4%,%100011011)
 6100        left4%=left4%+70
 6110        osmofound4%(found4%)=name%
 6120        osmofound4val%(found4%)=cardvalue%
 6130        PROCosmosis_movecard(icon%,osmofound4han%(found4%),name$)
 6140        cardmoved%=TRUE
 6150      ENDIF
 6160      IF osmofound4%(13)<>0 THEN turn4%=TRUE
 6170  ENDCASE
 6180  IF iconsuit%<>suit1% THEN
 6190    IF osmofound2%(1)=0 THEN
 6200      IF cardvalue%=osmofound1val%(1) THEN
 6210        osmofound2%(1)=name%
 6220        osmofound2han%(1)=FNcreateicon(main%,name$,"",left2%,top2%-208,left2%+158,top2%,%100011011)
 6230        left2%=left2%+70
 6240        suit2%=iconsuit%
 6250        PROCosmosis_movecard(icon%,osmofound2han%(1),name$)
 6260        found2%=1
 6270        cardmoved%=TRUE
 6280      ENDIF
 6290    ELSE
 6300      IF osmofound3%(1)=0 THEN
 6310        IF cardvalue%=osmofound1val%(1) THEN
 6320          osmofound3%(1)=name%
 6330          osmofound3han%(1)=FNcreateicon(main%,name$,"",left3%,top3%-208,left3%+158,top3%,%100011011)
 6340          left3%=left3%+70
 6350          suit3%=iconsuit%
 6360          PROCosmosis_movecard(icon%,osmofound3han%(1),name$)
 6370          cardmoved%=TRUE
 6380          found3%=1
 6390        ENDIF
 6400      ELSE
 6410        IF osmofound4%(1)=0 THEN
 6420          IF cardvalue%=osmofound1val%(1) THEN
 6430            osmofound4%(1)=name%
 6440            osmofound4han%(1)=FNcreateicon(main%,name$,"",left4%,top4%-208,left4%+158,top4%,%100011011)
 6450            left4%=left4%+70
 6460            suit4%=iconsuit%
 6470            PROCosmosis_movecard(icon%,osmofound4han%(1),name$)
 6480            cardmoved%=TRUE
 6490            found4%=1
 6500          ENDIF
 6510        ENDIF
 6520      ENDIF
 6530    ENDIF
 6540  ENDIF
 6550  IF cardmoved%=FALSE THEN
 6560    empty%=FNosmosis_emptypile
 6570    IF empty%<>0 THEN
 6580      cardmoved%=TRUE
 6590      PROCosmosis_movecard(icon%,empty%,name$)
 6600      CASE empty% OF
 6610        WHEN osmopile1han%(1) : osmopile1%(1)=name%
 6620        WHEN osmopile2han%(1) : osmopile2%(1)=name%
 6630        WHEN osmopile3han%(1) : osmopile3%(1)=name%
 6640        WHEN osmopile4han%(1) : osmopile4%(1)=name%
 6650      ENDCASE
 6660    ENDIF
 6670  ENDIF
 6680ENDIF
 6690IF icon%=osmopackhan% THEN
 6700  lastfrom%=osmopackhan%
 6710  IF osmopack%(1)=0 THEN
 6720    lastturn%=0
 6730    FOR I=1 TO 35
 6740      osmopack%(I)=osmowaste%(36-I)
 6750    NEXT I
 6760    FOR I=1 TO 35
 6770      osmowaste%(I)=0
 6780    NEXT I
 6790    WHILE osmopack%(1)=0
 6800      FOR I=1 TO 34
 6810        osmopack%(I)=osmopack%(I+1)
 6820      NEXT I
 6830      osmopack%(35)=0
 6840    ENDWHILE
 6850    PROCseticonsprite(main%,osmopackhan%,"back")
 6860    PROCseticonsprite(main%,osmowastehan%,"nocard")
 6870  ELSE
 6880    IF osmopack%(3)=0 THEN
 6890      IF osmopack%(2)=0 THEN
 6900        FOR I=34 TO 1 STEP -1
 6910          osmowaste%(I+1)=osmowaste%(I)
 6920        NEXT I
 6930        osmowaste%(1)=osmopack%(1)
 6940        osmopack%(1)=0
 6950        lastturn%=1
 6960      ELSE
 6970        FOR I=33 TO 1 STEP -1
 6980          osmowaste%(I+2)=osmowaste%(I)
 6990        NEXT I
 7000        osmowaste%(2)=osmopack%(1)
 7010        osmowaste%(1)=osmopack%(2)
 7020        osmopack%(1)=0:osmopack%(2)=0
 7030        lastturn%=2
 7040      ENDIF
 7050    ELSE
 7060      FOR I=32 TO 1 STEP -1
 7070        osmowaste%(I+3)=osmowaste%(I)
 7080      NEXT I
 7090      osmowaste%(3)=osmopack%(1)
 7100      osmowaste%(2)=osmopack%(2)
 7110      osmowaste%(1)=osmopack%(3)
 7120      FOR I=1 TO 32
 7130        osmopack%(I)=osmopack%(I+3)
 7140      NEXT I
 7150      FOR I=33 TO 35
 7160        osmopack%(I)=0
 7170      NEXT I
 7180      lastturn%=3
 7190    ENDIF
 7200    IF osmowaste%(1)=0 THEN
 7210      PROCseticonsprite(main%,osmowastehan%,"nocard")
 7220    ELSE
 7230      PROCseticonsprite(main%,osmowastehan%,STR$osmowaste%(1))
 7240    ENDIF
 7250    IF osmopack%(1)=0 THEN PROCseticonsprite(main%,osmopackhan%,"nocard")
 7260  ENDIF
 7270cardmoved%=TRUE
 7280ENDIF
 7290IF turn1%=TRUE THEN
 7300  FOR I=1 TO 13
 7310    PROCseticonsprite(main%,osmofound1han%(I),"back")
 7320  NEXT I
 7330  turn1%=FALSE:turned1%=TRUE
 7340ENDIF
 7350IF turn2%=TRUE THEN
 7360  FOR I=1 TO 13
 7370    PROCseticonsprite(main%,osmofound2han%(I),"back")
 7380  NEXT I
 7390  turn2%=FALSE:turned2%=TRUE
 7400ENDIF
 7410IF turn3%=TRUE THEN
 7420  FOR I=1 TO 13
 7430    PROCseticonsprite(main%,osmofound3han%(I),"back")
 7440  NEXT I
 7450  turn3%=FALSE:turned3%=TRUE
 7460ENDIF
 7470IF turn4%=TRUE THEN
 7480  FOR I=1 TO 13
 7490    PROCseticonsprite(main%,osmofound4han%(I),"back")
 7500  NEXT I
 7510  turn4%=FALSE:turned4%=TRUE
 7520ENDIF
 7530IF cardmoved%=TRUE THEN
 7540  SYS"WimpExt_ShadeEntry",,gmenu%,0,0 TO shaded%
 7550  IF shaded%=0 THEN SYS"WimpExt_ShadeEntry",,gmenu%,0,0
 7560ENDIF
 7570IF icon%=0 THEN PROCnewgame
 7580ENDPROC
 7590
 7600DEFPROCosmosis_movecard(startloc%,endloc%,name$)
 7610REM This procedure performs movement of a card, knowing its
 7620REM initial location, including moving cards up in the pile.
 7630lastfrom%=startloc%:lastto%=endloc%:lastcard%=VALname$
 7640CASE startloc% OF
 7650  WHEN osmopile1han%(1) :
 7660    FOR I=1 TO 3
 7670      osmopile1%(I)=osmopile1%(I+1)
 7680    NEXT I
 7690    osmopile1%(4)=0
 7700    PROCseticonsprite(main%,osmopile1han%(1),STR$osmopile1%(1))
 7710    PROCseticonsprite(main%,endloc%,name$)
 7720    FOR I=2 TO 4
 7730      IF osmopile1%(I)=0 THEN PROCseticonsprite(main%,osmopile1han%(I),"0")
 7740    NEXT I
 7750  WHEN osmopile2han%(1) :
 7760    FOR I=1 TO 3
 7770      osmopile2%(I)=osmopile2%(I+1)
 7780    NEXT I
 7790    osmopile2%(4)=0
 7800    PROCseticonsprite(main%,osmopile2han%(1),STR$osmopile2%(1))
 7810    PROCseticonsprite(main%,endloc%,name$)
 7820    FOR I=2 TO 4
 7830      IF osmopile2%(I)=0 THEN PROCseticonsprite(main%,osmopile2han%(I),"0")
 7840    NEXT I
 7850  WHEN osmopile3han%(1) :
 7860    FOR I=1 TO 3
 7870      osmopile3%(I)=osmopile3%(I+1)
 7880    NEXT I
 7890    osmopile3%(4)=0
 7900    PROCseticonsprite(main%,osmopile3han%(1),STR$osmopile3%(1))
 7910    PROCseticonsprite(main%,endloc%,name$)
 7920    FOR I=2 TO 4
 7930      IF osmopile3%(I)=0 THEN PROCseticonsprite(main%,osmopile3han%(I),"0")
 7940    NEXT I
 7950  WHEN osmopile4han%(1) :
 7960    FOR I=1 TO 3
 7970      osmopile4%(I)=osmopile4%(I+1)
 7980    NEXT I
 7990    osmopile4%(4)=0
 8000    PROCseticonsprite(main%,osmopile4han%(1),STR$osmopile4%(1))
 8010    PROCseticonsprite(main%,endloc%,name$)
 8020    FOR I=2 TO 4
 8030      IF osmopile4%(I)=0 THEN PROCseticonsprite(main%,osmopile4han%(I),"0")
 8040    NEXT I
 8050  WHEN osmowastehan% :
 8060    FOR I=1 TO 34
 8070      osmowaste%(I)=osmowaste%(I+1)
 8080    NEXT I
 8090    osmowaste%(35)=0
 8100    IF osmowaste%(1)=0 THEN hole$="nocard" ELSE hole$=STR$osmowaste%(1)
 8110    PROCseticonsprite(main%,osmowastehan%,hole$)
 8120    PROCseticonsprite(main%,endloc%,name$)
 8130ENDCASE
 8140ENDPROC
 8150
 8160DEFFNosmosis_emptypile
 8170REM Checks to see if there are any empty piles, returns the handle
 8180REM of the first empty pile it encounters, else returns 0.
 8190IF osmopile1%(1)=0 THEN =osmopile1han%(1)
 8200IF osmopile2%(1)=0 THEN =osmopile2han%(1)
 8210IF osmopile3%(1)=0 THEN =osmopile3han%(1)
 8220IF osmopile4%(1)=0 THEN =osmopile4han%(1)
 8230=0
 8240
 8250DEFPROCosmosis_undo
 8260REM This procedure will undo the last move in Osmosis
 8270LOCAL from%,I
 8280from%=0
 8290IF lastfrom%=osmopile1han%(1) THEN from%=osmopile1han%(1)
 8300IF lastfrom%=osmopile2han%(1) THEN from%=osmopile2han%(1)
 8310IF lastfrom%=osmopile3han%(1) THEN from%=osmopile3han%(1)
 8320IF lastfrom%=osmopile4han%(1) THEN from%=osmopile4han%(1)
 8330IF lastfrom%=osmowastehan% THEN from%=osmowastehan%
 8340SYS"WimpExt_ShadeEntry",,gmenu%,0,1
 8350CASE lastfrom% OF
 8360  WHEN osmopackhan% :
 8370    CASE lastturn% OF
 8380      WHEN 0 :
 8390        FOR I=1 TO 35
 8400          osmowaste%(I)=osmopack%(36-I)
 8410        NEXT I
 8420        FOR I=1 TO 35
 8430          osmopack%(I)=0
 8440        NEXT I
 8450        WHILE osmowaste%(1)=0
 8460          FOR I=1 TO 34
 8470            osmowaste%(I)=osmowaste%(I+1)
 8480          NEXT I
 8490          osmowaste%(35)=0
 8500        ENDWHILE
 8510        PROCseticonsprite(main%,osmopackhan%,"nocard")
 8520        PROCseticonsprite(main%,osmowastehan%,STR$osmowaste%(1))
 8530      WHEN 1 :
 8540        FOR I=34 TO 1 STEP -1
 8550          osmopack%(I+1)=osmopack%(I)
 8560        NEXT I
 8570        osmopack%(1)=osmowaste%(1)
 8580        FOR I=1 TO 34
 8590          osmowaste%(I)=osmowaste%(I+1)
 8600        NEXT I
 8610        PROCseticonsprite(main%,osmowastehan%,STR$osmowaste%(1))
 8620        PROCseticonsprite(main%,osmopackhan%,"back")
 8630      WHEN 2 :
 8640        FOR I=33 TO 1 STEP -1
 8650          osmopack%(I+2)=osmopack%(I)
 8660        NEXT I
 8670        osmopack%(2)=osmowaste%(1)
 8680        osmopack%(1)=osmowaste%(2)
 8690        FOR I=1 TO 33
 8700          osmowaste%(I)=osmowaste%(I+2)
 8710        NEXT I
 8720        osmowaste%(34)=0:osmowaste%(35)=0
 8730        PROCseticonsprite(main%,osmowastehan%,STR$osmowaste%(1))
 8740        PROCseticonsprite(main%,osmopackhan%,"back")
 8750      WHEN 3 :
 8760        FOR I=32 TO 1 STEP -1
 8770          osmopack%(I+3)=osmopack%(I)
 8780        NEXT I
 8790        osmopack%(3)=osmowaste%(1)
 8800        osmopack%(2)=osmowaste%(2)
 8810        osmopack%(1)=osmowaste%(3)
 8820        FOR I=1 TO 32
 8830          osmowaste%(I)=osmowaste%(I+3)
 8840        NEXT I
 8850        FOR I=33 TO 35
 8860          osmowaste%(I)=0
 8870        NEXT I
 8880        IF osmowaste%(1)=0 THEN
 8890          PROCseticonsprite(main%,osmowastehan%,"nocard")
 8900        ELSE
 8910          PROCseticonsprite(main%,osmowastehan%,STR$osmowaste%(1))
 8920        ENDIF
 8930    ENDCASE
 8940  WHEN from% :
 8950    IF lastto%=osmofound1han%(found1%) OR lastto%=osmofound2han%(found2%) OR lastto%=osmofound3han%(found3%) OR lastto%=osmofound4han%(found4%) THEN PROCblankicon(main%,lastto%)
 8960    CASE from% OF
 8970      WHEN osmopile1han%(1) :
 8980        FOR I=4 TO 2 STEP -1
 8990          osmopile1%(I)=osmopile1%(I-1)
 9000          IF osmopile1%(I)<>0 THEN PROCseticonsprite(main%,osmopile1han%(I),"back")
 9010        NEXT I
 9020        osmopile1%(1)=lastcard%
 9030      WHEN osmopile2han%(1) :
 9040        FOR I=4 TO 2 STEP -1
 9050          osmopile2%(I)=osmopile2%(I-1)
 9060          IF osmopile2%(I)<>0 THEN PROCseticonsprite(main%,osmopile2han%(I),"back")
 9070        NEXT I
 9080        osmopile2%(1)=lastcard%
 9090      WHEN osmopile3han%(1) :
 9100        FOR I=4 TO 2 STEP -1
 9110          osmopile3%(I)=osmopile3%(I-1)
 9120          IF osmopile3%(I)<>0 THEN PROCseticonsprite(main%,osmopile3han%(I),"back")
 9130        NEXT I
 9140        osmopile3%(1)=lastcard%
 9150      WHEN osmopile4han%(1) :
 9160        FOR I=4 TO 2 STEP -1
 9170          osmopile4%(I)=osmopile4%(I-1)
 9180          IF osmopile4%(I)<>0 THEN PROCseticonsprite(main%,osmopile4han%(I),"back")
 9190        NEXT I
 9200        osmopile4%(1)=lastcard%
 9210      WHEN osmowastehan% :
 9220        FOR I=35 TO 2 STEP -1
 9230          osmowaste%(I)=osmowaste%(I-1)
 9240        NEXT I
 9250        osmowaste%(1)=lastcard%
 9260    ENDCASE
 9270    CASE lastto% OF
 9280      WHEN osmofound1han%(found1%) :
 9290        found1%=found1%-1:left1%=left1%-70
 9300        IF turned1%=TRUE THEN
 9310          FOR I=1 TO 12
 9320            PROCseticonsprite(main%,osmofound1han%(I),STR$osmofound1%(I))
 9330          NEXT I
 9340        ENDIF
 9350      WHEN osmofound2han%(found2%) :
 9360        found2%=found2%-1:left2%=left2%-70
 9370        IF turned2%=TRUE THEN
 9380          FOR I=1 TO 12
 9390            PROCseticonsprite(main%,osmofound2han%(I),STR$osmofound2%(I))
 9400          NEXT I
 9410        ENDIF
 9420      WHEN osmofound3han%(found3%) :
 9430        found3%=found3%-1:left3%=left3%-70
 9440        IF turned3%=TRUE THEN
 9450          FOR I=1 TO 12
 9460            PROCseticonsprite(main%,osmofound3han%(I),STR$osmofound3%(I))
 9470          NEXT I
 9480        ENDIF
 9490      WHEN osmofound4han%(found4%) :
 9500        found4%=found4%-1:left4%=left4%-70
 9510        IF turned4%=TRUE THEN
 9520          FOR I=1 TO 12
 9530            PROCseticonsprite(main%,osmofound4han%(I),STR$osmofound4%(I))
 9540          NEXT I
 9550        ENDIF
 9560      WHEN osmopile1han%(1) :
 9570        osmopile1%(1)=0
 9580        PROCseticonsprite(main%,osmopile1han%(1),"0")
 9590      WHEN osmopile2han%(1) :
 9600        osmopile2%(1)=0
 9610        PROCseticonsprite(main%,osmopile2han%(1),"0")
 9620      WHEN osmopile3han%(1) :
 9630        osmopile3%(1)=0
 9640        PROCseticonsprite(main%,osmopile3han%(1),"0")
 9650      WHEN osmopile4han%(1) :
 9660        osmopile4%(1)=0
 9670        PROCseticonsprite(main%,osmopile4han%(1),"0")
 9680    ENDCASE
 9690    PROCseticonsprite(main%,from%,STR$lastcard%)
 9700ENDCASE
 9710ENDPROC
 9720
 9730DEFPROCpyramid
 9740REM Sets up the game for pyramid.
 9750SYS"WimpExt_SetWindowTitle",,,main%,"Pyramid"
 9760SYS"WimpExt_ShadeEntry",,gmenu%,0,0 TO shaded%
 9770IF shaded%=1 THEN SYS"WimpExt_ShadeEntry",,gmenu%,0,1
 9780IF played%=TRUE AND iconnumber%<>0 THEN PROCcleanupwindow(main%)
 9790PROCshuffle
 9800PROCpyramid_deal
 9810PROCpyramid_layout
 9820ENDPROC
 9830
 9840DEFPROCpyramid_deal
 9850REM Sets up the game arrays.
 9860LOCAL I
 9870FOR I=1 TO 28
 9880  pyrlay%(I)=pack%(I)
 9890NEXT I
 9900FOR I=1 TO 24
 9910  pyrpack%(I)=pack%(I+28)
 9920  pyrwaste%(I)=0
 9930NEXT I
 9940FOR I=1 TO 52
 9950  pyrfound%(I)=0
 9960NEXT I
 9970ENDPROC
 9980
 9990DEFPROCpyramid_layout
10000REM Sets up the screen with the cards.
10010LOCAL left%,top%,I
10020SYS "WimpExt_OpenWindowTop",main%
10030left%=661:top%=-10
10040pyrlayhan%(1)=FNcreateicon(main%,STR$pyrlay%(1),"",left%,top%-208,left%+158,top%,12571)
10050left%=left%-100
10060top%=top%-125
10070FOR I=2 TO 3
10080  pyrlayhan%(I)=FNcreateicon(main%,STR$pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
10090  left%=left%+200
10100NEXT I
10110left%=left%-500:top%=top%-125
10120FOR I=4 TO 6
10130  pyrlayhan%(I)=FNcreateicon(main%,STR$pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
10140  left%=left%+200
10150NEXT I
10160left%=left%-700:top%=top%-125
10170FOR I=7 TO 10
10180  pyrlayhan%(I)=FNcreateicon(main%,STR$pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
10190  left%=left%+200
10200NEXT I
10210left%=left%-900:top%=top%-125
10220FOR I=11 TO 15
10230  pyrlayhan%(I)=FNcreateicon(main%,STR$pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
10240  left%=left%+200
10250NEXT I
10260left%=left%-1100:top%=top%-125
10270FOR I=16 TO 21
10280  pyrlayhan%(I)=FNcreateicon(main%,STR$pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
10290  left%=left%+200
10300NEXT I
10310left%=left%-1300:top%=top%-125
10320FOR I=22 TO 28
10330  pyrlayhan%(I)=FNcreateicon(main%,STR$pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
10340  left%=left%+200
10350NEXT I
10360pyrpackhan%=FNcreateicon(main%,"back","",50,-258,208,-50,12571)
10370pyrwastehan%=FNcreateicon(main%,"nocard","",220,-258,378,-50,12571)
10380pyrfoundhan%=FNcreateicon(main%,"nocard","",1200,-258,1358,-50,12571)
10390FOR I=1 TO 28
10400  pyrdeleted%(I)=FALSE
10410NEXT I
10420deal%=1:selected%=FALSE:firstcard%=0:firsticon%=0:cardsleft%=24
10430scorehan%=FNcreateicon(main%,"","Score : "+STR$score%+" in "+STR$pyrgames%,50,-350,300,-290,%00010111000000000000000100111101)
10440dealhan%=FNcreateicon(main%,"","Deal : "+STR$deal%,50,-420,300,-360,%00010111000000000000000100111101)
10450cardslefthan%=FNcreateicon(main%,"","Cards left : "+STR$cardsleft%,50,-490,300,-430,%00010111000000000000000100111101)
10460lasticon1%=-1:lasticon2%=-1:lastval1%=-1:lastval2%=-1
10470ENDPROC
10480
10490DEFPROCpyramid_mouseclick(icon%)
10500REM This procedure processes mouseclicks in a game of Pyramid.
10510REM Now process the event.
10520LOCAL click%,I,J,play%,tempcard%,shaded%,cardmoved%
10530cardmoved%=FALSE
10540play%=FNpyramid_uncovered(icon%)
10550IF icon%=pyrwastehan% OR icon%=pyrfoundhan% THEN play%=TRUE
10560DIM click% 40
10570!click%=main%
10580click%!4=icon%
10590SYS"Wimp_GetIconState",,click% TO ,click%
10600name$=$click%!32
10610name$=MID$(name$,2)
10620name%=VALname$
10630IF name%<>0 THEN
10640  cardvalue%=FNcardval(name%)
10650ELSE
10660  cardvalue%=-1
10670ENDIF
10680IF icon%=pyrpackhan% THEN cardvalue%=FNcardval(pyrpack%(1))
10690IF icon%<>0 THEN
10700  IF selected%=FALSE THEN
10710    lasticon1%=icon%:lastval1%=cardvalue%:lasticon2%=-1:lastval2%=-1
10720  ENDIF
10730  IF selected%=TRUE AND cardvalue%+lastval1%=13 THEN
10740    lasticon2%=icon%:lastval2%=cardvalue%
10750  ENDIF
10760ENDIF
10770REM Now process the click.
10780CASE icon% OF
10790  WHEN 0 :
10800    score%=0:pyrgames%=0
10810    PROCnewgame
10820  WHEN pyrpackhan% :
10830    cardmoved%=TRUE
10840    IF pyrpack%(1)=0 THEN
10850      FOR I=1 TO 24
10860        pyrpack%(I)=pyrwaste%(25-I)
10870      NEXT I
10880      FOR I=1 TO 24
10890        pyrwaste%(I)=0
10900      NEXT I
10910      IF pyrpack%(1)=0 THEN
10920        REPEAT
10930          FOR I=1 TO 23
10940            pyrpack%(I)=pyrpack%(I+1)
10950          NEXT I
10960          pyrpack%(24)=0
10970        UNTIL pyrpack%(1)<>0
10980      ENDIF
10990      deal%=deal%+1
11000      IF deal%<4 THEN SYS"WimpExt_SetIconString",,,main%,dealhan%,"Deal : "+STR$deal%
11010      PROCseticonsprite(main%,pyrpackhan%,"back")
11020      PROCseticonsprite(main%,pyrwastehan%,"nocard")
11030    ELSE
11040      IF firsticon%=pyrwastehan% THEN
11050        SYS"WimpExt_SetIcon",,,main%,pyrwastehan%,0
11060        selected%=FALSE:firsticon%=0:firstcard%=0
11070      ENDIF
11080      FOR I=24 TO 2 STEP -1
11090        pyrwaste%(I)=pyrwaste%(I-1)
11100      NEXT I
11110      pyrwaste%(1)=pyrpack%(1)
11120      FOR I=1 TO 23
11130        pyrpack%(I)=pyrpack%(I+1)
11140      NEXT I
11150      pyrpack%(24)=0
11160      IF pyrpack%(1)=0 THEN
11170        PROCseticonsprite(main%,pyrpackhan%,"nocard")
11180      ENDIF
11190        PROCseticonsprite(main%,pyrwastehan%,STR$pyrwaste%(1))
11200    ENDIF
11210ENDCASE
11220IF play%=TRUE AND name%<>0 THEN
11230  IF selected%=FALSE THEN
11240    SYS"WimpExt_SetIcon",,,main%,icon%,2
11250    IF cardvalue%=13 AND icon%<>pyrfoundhan% THEN
11260      SYS"WimpExt_SetIcon",,,main%,icon%,0
11270      PROCpyramid_movecard(icon%,name$)
11280      FOR I=52 TO 2 STEP -1
11290        pyrfound%(I)=pyrfound%(I-1)
11300      NEXT I
11310      pyrfound%(1)=name%
11320      selected%=FALSE
11330    ELSE
11340      IF cardvalue%<>13 THEN
11350        selected%=TRUE:firstcard%=cardvalue%:firsticon%=icon%:firstname%=name%
11360      ENDIF
11370    ENDIF
11380  ELSE
11390    IF icon%=firsticon% THEN
11400      SYS"WimpExt_SetIcon",,,main%,icon%,2
11410      selected%=FALSE:firstcard%=0:firsticon%=0:lasticon1%=-1:lastval1%=-1
11420    ELSE
11430      IF cardvalue%+firstcard%=13 THEN
11440        IF firsticon%=pyrfoundhan% THEN
11450          PROCpyramid_movecard(icon%,name$)
11460          FOR I=52 TO 2 STEP -1
11470            pyrfound%(I)=pyrfound%(I-1)
11480          NEXT I
11490          pyrfound%(1)=name%
11500          SYS"WimpExt_SetIcon",,,main%,pyrfoundhan%,0
11510          selected%=FALSE:firsticon%=0:firstcard%=0
11520        ELSE
11530          SYS"WimpExt_SetIcon",,,main%,firsticon%,0
11540          SYS"WimpExt_SetIcon",,,main%,pyrfoundhan%,0
11550          IF icon%=pyrfoundhan% THEN
11560            PROCpyramid_movecard(firsticon%,name$)
11570            tempcard%=name%
11580            pyrfound%(1)=firstcard%
11590            FOR I=52 TO 2 STEP -1
11600              pyrfound%(I)=pyrfound%(I-1)
11610            NEXT I
11620            pyrfound%(1)=tempcard%
11630            PROCseticonsprite(main%,pyrfoundhan%,STR$tempcard%)
11640            SYS"WimpExt_SetIcon",,,main%,pyrfoundhan%,0
11650            selected%=FALSE:firsticon%=0:firstcard%=0
11660          ELSE
11670            FOR I=52 TO 3 STEP -1
11680              pyrfound%(I)=pyrfound%(I-2)
11690            NEXT I
11700            pyrfound%(2)=firstname%
11710            pyrfound%(1)=name%
11720            PROCpyramid_movecard(firsticon%,name$)
11730            PROCpyramid_movecard(icon%,name$)
11740            selected%=FALSE:firstcard%=0:firsticon%=0
11750          ENDIF
11760        ENDIF
11770      ENDIF
11780    ENDIF
11790  ENDIF
11800ENDIF
11810IF deal%=4 OR pyrdeleted%(1)=TRUE THEN PROCpyramid_score
11820IF lasticon1%<>-1 THEN
11830  SYS"WimpExt_ShadeEntry",,gmenu%,0,0 TO shaded%
11840  IF shaded%=0 THEN SYS"WimpExt_ShadeEntry",,gmenu%,0,0
11850ENDIF
11860ENDPROC
11870
11880DEFFNpyramid_uncovered(icon%)
11890REM This function returns TRUE if the selected icon is in the
11900REM layout and is uncovered, and FALSE otherwise.
11910LOCAL I,temp%
11920I=0:temp%=FALSE
11930REPEAT
11940  I=I+1
11950  IF icon%=pyrlayhan%(I) THEN temp%=TRUE
11960UNTIL temp%=TRUE OR I=28
11970IF temp%=FALSE THEN I=0
11980IF I=0 THEN =FALSE
11990IF I=1 AND pyrdeleted%(2)=TRUE AND pyrdeleted%(3)=TRUE THEN =TRUE
12000IF I=2 AND pyrdeleted%(4)=TRUE AND pyrdeleted%(5)=TRUE THEN =TRUE
12010IF I=3 AND pyrdeleted%(5)=TRUE AND pyrdeleted%(6)=TRUE THEN =TRUE
12020IF I=4 AND pyrdeleted%(7)=TRUE AND pyrdeleted%(8)=TRUE THEN =TRUE
12030IF I=5 AND pyrdeleted%(8)=TRUE AND pyrdeleted%(9)=TRUE THEN =TRUE
12040IF I=6 AND pyrdeleted%(9)=TRUE AND pyrdeleted%(10)=TRUE THEN =TRUE
12050IF I=7 AND pyrdeleted%(11)=TRUE AND pyrdeleted%(12)=TRUE THEN =TRUE
12060IF I=8 AND pyrdeleted%(12)=TRUE AND pyrdeleted%(13)=TRUE THEN =TRUE
12070IF I=9 AND pyrdeleted%(13)=TRUE AND pyrdeleted%(14)=TRUE THEN =TRUE
12080IF I=10 AND pyrdeleted%(14)=TRUE AND pyrdeleted%(15)=TRUE THEN =TRUE
12090IF I=11 AND pyrdeleted%(16)=TRUE AND pyrdeleted%(17)=TRUE THEN =TRUE
12100IF I=12 AND pyrdeleted%(17)=TRUE AND pyrdeleted%(18)=TRUE THEN =TRUE
12110IF I=13 AND pyrdeleted%(18)=TRUE AND pyrdeleted%(19)=TRUE THEN =TRUE
12120IF I=14 AND pyrdeleted%(19)=TRUE AND pyrdeleted%(20)=TRUE THEN =TRUE
12130IF I=15 AND pyrdeleted%(20)=TRUE AND pyrdeleted%(21)=TRUE THEN =TRUE
12140IF I=16 AND pyrdeleted%(22)=TRUE AND pyrdeleted%(23)=TRUE THEN =TRUE
12150IF I=17 AND pyrdeleted%(23)=TRUE AND pyrdeleted%(24)=TRUE THEN =TRUE
12160IF I=18 AND pyrdeleted%(24)=TRUE AND pyrdeleted%(25)=TRUE THEN =TRUE
12170IF I=19 AND pyrdeleted%(25)=TRUE AND pyrdeleted%(26)=TRUE THEN =TRUE
12180IF I=20 AND pyrdeleted%(26)=TRUE AND pyrdeleted%(27)=TRUE THEN =TRUE
12190IF I=21 AND pyrdeleted%(27)=TRUE AND pyrdeleted%(28)=TRUE THEN =TRUE
12200IF I=22 THEN =TRUE
12210IF I=23 THEN =TRUE
12220IF I=24 THEN =TRUE
12230IF I=25 THEN =TRUE
12240IF I=26 THEN =TRUE
12250IF I=27 THEN =TRUE
12260IF I=28 THEN =TRUE
12270=FALSE
12280
12290DEFPROCpyramid_movecard(icon%,name$)
12300REM This procedure takes care of moving the card from the start
12310REM location to the foundation, including moving cards round in
12320REM piles and deleting the relevant icons.
12330LOCAL I
12340PROCseticonsprite(main%,pyrfoundhan%,name$)
12350cardmoved%=TRUE
12360IF icon%=pyrwastehan% THEN
12370  FOR I=1 TO 23
12380    pyrwaste%(I)=pyrwaste%(I+1)
12390  NEXT I
12400  pyrwaste%(24)=0
12410  IF pyrwaste%(1)=0 THEN
12420    PROCseticonsprite(main%,pyrwastehan%,"nocard")
12430  ELSE
12440    PROCseticonsprite(main%,pyrwastehan%,STR$pyrwaste%(1))
12450  ENDIF
12460  cardsleft%=cardsleft%-1
12470  SYS"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+STR$cardsleft%
12480ELSE
12490  PROCblankicon(main%,icon%)
12500  FOR I=1 TO 28
12510    IF pyrlayhan%(I)=icon% THEN
12520      pyrdeleted%(I)=TRUE
12530      pyrlay%(I)=0
12540    ENDIF
12550  NEXT I
12560ENDIF
12570ENDPROC
12580
12590DEFPROCpyramid_undo
12600REM This procedure will undo the last action in Pyramid.
12610LOCAL I,temp1%,temp2%
12620SYS"WimpExt_ShadeEntry",,gmenu%,0,1
12630IF lasticon2%=-1 AND lasticon1%=pyrpackhan% THEN
12640  IF pyrwaste%(1)=0 THEN
12650    FOR I=1 TO 24
12660      pyrwaste%(25-I)=pyrpack%(I)
12670      pyrpack%(I)=0
12680    NEXT I
12690    WHILE pyrwaste%(1)=0
12700      FOR I=1 TO 24
12710        pyrwaste%(I)=pyrwaste%(I+1)
12720      NEXT I
12730    ENDWHILE
12740    deal%=deal%-1
12750    SYS"WimpExt_SetIconString",,,main%,dealhan%,"Deal : "+STR$deal%
12760    PROCseticonsprite(main%,pyrwastehan%,STR$pyrwaste%(1))
12770    PROCseticonsprite(main%,pyrpackhan%,"nocard")
12780  ELSE
12790    FOR I=24 TO 2 STEP -1
12800      pyrpack%(I)=pyrpack%(I-1)
12810    NEXT I
12820    pyrpack%(1)=pyrwaste%(1)
12830    FOR I=1 TO 23
12840      pyrwaste%(I)=pyrwaste%(I+1)
12850    NEXT I
12860    pyrwaste%(24)=0
12870    IF pyrwaste%(1)=0 THEN PROCseticonsprite(main%,pyrwastehan%,"nocard") ELSE PROCseticonsprite(main%,pyrwastehan%,STR$pyrwaste%(1))
12880    PROCseticonsprite(main%,pyrpackhan%,"back")
12890  ENDIF
12900ENDIF
12910IF lasticon2%=-1 THEN
12920  IF lastval1%=13 THEN
12930    REM take the king off the foundation and put it back on the
12940    REM layout or waste pile.
12950    temp1%=pyrfound%(1)
12960    FOR I=1 TO 51
12970      pyrfound%(I)=pyrfound%(I+1)
12980    NEXT I
12990    pyrfound%(52)=0
13000    IF lasticon1%=pyrwastehan% THEN
13010      FOR I=24 TO 2 STEP -1
13020        pyrwaste%(I)=pyrwaste%(I-1)
13030      NEXT I
13040      pyrwaste%(1)=temp1%
13050      PROCseticonsprite(main%,pyrwastehan%,STR$pyrwaste%(1))
13060      cardsleft%=cardsleft%+1:SYS"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+STR$cardsleft%
13070    ELSE
13080      I=1
13090      REPEAT
13100        I=I+1
13110      UNTIL I=28 OR pyrlayhan%(I)=lasticon1%
13120      IF pyrlayhan%(I)=lasticon1% THEN
13130        pyrlay%(I)=temp1%
13140        PROCseticonsprite(main%,pyrlayhan%(I),STR$pyrlay%(I))
13150        pyrdeleted%(I)=FALSE
13160      ENDIF
13170    ENDIF
13180    IF pyrfound%(1)=0 THEN
13190      PROCseticonsprite(main%,pyrfoundhan%,"nocard")
13200    ELSE
13210      PROCseticonsprite(main%,pyrfoundhan%,STR$pyrfound%(1))
13220    ENDIF
13230  ELSE
13240    SYS"WimpExt_SetIcon",,,main%,lasticon1%,0
13250  ENDIF
13260ENDIF
13270IF lastval2%<>-1 THEN
13280REM Take the cards and put them into temp1% and temp2%.
13290  temp2%=pyrfound%(1):temp1%=pyrfound%(2)
13300REM Shift the foundation back up 2 cards.
13310  FOR I=1 TO 50
13320    pyrfound%(I)=pyrfound%(I+2)
13330  NEXT I
13340REM Put special cases in - if temp1% or temp2% are the foundation,
13350REM then put it back (single procedure), using PROCmovecard.
13360  IF lasticon1%=pyrfoundhan% THEN
13370    PROCseticonsprite(main%,pyrfoundhan%,STR$temp1%)
13380    FOR I=52 TO 2 STEP -1
13390      pyrfound%(I)=pyrfound%(I-1)
13400    NEXT I
13410    pyrfound%(1)=temp1%
13420  ENDIF
13430  IF lasticon2%=pyrfoundhan% THEN
13440    PROCseticonsprite(main%,pyrfoundhan%,STR$temp2%)
13450    FOR I=52 TO 2 STEP -1
13460      pyrfound%(I)=pyrfound%(I-1)
13470    NEXT I
13480    pyrfound%(1)=temp2%
13490  ENDIF
13500REM Need similar check for waste pile, to move cards down.
13510  IF lasticon1%=pyrwastehan% THEN
13520    PROCseticonsprite(main%,pyrwastehan%,STR$temp1%)
13530    FOR I=24 TO 2 STEP -1
13540      pyrwaste%(I)=pyrwaste%(I-1)
13550    NEXT I
13560    pyrwaste%(1)=temp1%:cardsleft%=cardsleft%+1:SYS"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+STR$cardsleft%
13570  ENDIF
13580  IF lasticon2%=pyrwastehan% THEN
13590    PROCseticonsprite(main%,pyrwastehan%,STR$temp2%)
13600    FOR I=24 TO 2 STEP -1
13610      pyrwaste%(I)=pyrwaste%(I-1)
13620    NEXT I
13630    pyrwaste%(1)=temp2%:cardsleft%=cardsleft%+1:SYS"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+STR$cardsleft%
13640  ENDIF
13650REM Put temp1% back on lasticon1% and reset the sprite.
13660  IF lasticon1%<>pyrfoundhan% AND lasticon1%<>pyrwastehan% THEN
13670    I=1
13680    REPEAT
13690      I=I+1
13700    UNTIL lasticon1%=pyrlayhan%(I) OR I=28
13710    PROCseticonsprite(main%,pyrlayhan%(I),STR$temp1%)
13720    pyrlay%(I)=temp1%:pyrdeleted%(I)=FALSE
13730  ENDIF
13740REM Put temp 2 back on lasticon2% and reset the sprite.
13750  IF lasticon2%<>pyrfoundhan% AND lasticon2%<>pyrwastehan% THEN
13760    I=1
13770    REPEAT
13780      I=I+1
13790    UNTIL lasticon2%=pyrlayhan%(I) OR I=28
13800    PROCseticonsprite(main%,pyrlayhan%(I),STR$temp2%)
13810    pyrlay%(I)=temp2%:pyrdeleted%(I)=FALSE
13820  ENDIF
13830  IF pyrfound%(1)=0 THEN
13840    PROCseticonsprite(main%,pyrfoundhan%,"nocard")
13850  ELSE
13860    PROCseticonsprite(main%,pyrfoundhan%,STR$pyrfound%(1))
13870  ENDIF
13880ENDIF
13890lasticon1%=-1:lasticon2%=-1:lastval1%=-1:lastval2%=-1
13900ENDPROC
13910
13920DEFPROCpyramid_score
13930REM This procedure will work out the score for this match.
13940LOCAL layoutleft%,buttons%
13950layoutleft%=0:pyrgames%=pyrgames%+1
13960FOR I=1 TO 28
13970  IF pyrlay%(I)<>0 THEN layoutleft%=layoutleft%+1
13980NEXT I
13990CASE deal% OF
14000  WHEN 1 : score%=score%+50
14010  WHEN 2 : score%=score%+35
14020  WHEN 3 : score%=score%+20
14030  WHEN 4 : score%=score%-layoutleft%
14040ENDCASE
14050score%=score%-cardsleft%:deal%=4
14060SYS"WimpExt_SetIconString",,,main%,scorehan%,"Score : "+STR$score%+" in "+STR$pyrgames%
14070IF pyrgames%=6 THEN
14080  DIM buttons% 4
14090  $(buttons%+0)="Begin"
14100  IF score%>=0 THEN
14110    SYS"WimpExt_ControlImmediate",,2,"Pyramid","Congratulations! Your score of "+STR$score%+" was above par. Click 'Begin' for a new match.",buttons%,0
14120  ELSE
14130    SYS"WimpExt_ControlImmediate",,2,"Pyramid","Commiserations! Your score of "+STR$score%+" was below par. Click 'Begin' for a new match.",buttons%,0
14140  ENDIF
14150pyrgames%=0:score%=0
14160ENDIF
14170PROCnewgame
14180ENDPROC
14190

=� !Osmosis  -  A Desktop Patience Game by John Pettigrew.
]version$="0.99":game%=1:osmodim%=�:pyrdim%=�:played%=�:iconnumber%=0:pyrgames%=0:score%=0

(;� Initialise the application with the WIMP, install the
2*� iconbar icon and load template file.
<�wimp_init
F
P8� Open startup banner, set up menus and build cards.
Q� p% 256
Z%È™"WimpExt_OpenWindowTop",banner%
dÈ™"Wimp_Poll",,p%
n
�makemenu
x�buildcards
y!p%=banner%
�ș"Wimp_CloseWindow",,p%
�
�$� Now perform a wimp poll loop :
��
�  �wimp_poll
�
� quit%=�
�!ș "XWimpExt_CloseDown",task%
�ș "XWimp_CloseDown"
��
�
���wimp_init
�>� This procedure will register the programme with the WIMP
'� and set up the icon bar icon etc.
� window%,template%,indir%
>ș "OS_File",17,"<Osmosis$Dir>.Sprites" � type%,,,,length%
"K� type%<>1 � length%<>40324 � �(0,"Incorrect or missing Sprites file.")
,?� q% 256,sprite% 285000,window% 8,template% 1024,indir% 256
6!sprite%=285000
@9È™ "OS_SpriteOp",&10A,sprite%,"<Osmosis$Dir>.Sprites"
J;ș "Wimp_Initialise",310,&4B534154,0,"Osmosis" � ,task%
T8È™ "WimpExt_Initialise",16,task%,%1111010011,sprite%
^1È™ "WimpExt_IconBarSprite",,,-1,"!osmosis",,3
h!window%!4=%101:window%!8=%101
rgÈ™ "WimpExt_LoadTemplates",window%,template%,indir%,indir%+256,-1,"<Osmosis$Dir>.Templates",sprite%
|4info%=!window%:main%=window%!4:banner%=window%!8
�quit%=0:menu%=0
��
�
���makemenu
�� Creates the menus.
�� imenu% 96,gmenu% 152
�$imenu%="Osmosis"
�imenu%!12=&70207
�5imenu%!16=16*8:� This sets the width of the menu.
�imenu%!20=44
�imenu%!24=0
�imenu%!28=0
�imenu%!32=info%
imenu%!36=&7000021
$(imenu%+40)="Info"
imenu%!52=2
&imenu%!56=0
0imenu%!60=&7000021
:$(imenu%+64)="Osmosis"
Dimenu%!76=128
Nimenu%!80=0
Ximenu%!84=&7000021
b$(imenu%+88)="Quit"
l$gmenu%="Game Menu"
vgmenu%!12=&70207
�6gmenu%!16=16*10:� This sets the width of the menu.
�gmenu%!20=44
�gmenu%!24=0
�gmenu%!28=0
�gmenu%!32=0
�gmenu%!36=&7000021
�$(gmenu%+40)="Undo"
�gmenu%!52=2
�gmenu%!56=0
�gmenu%!60=&7000021
�$(gmenu%+64)="Resign"
�gmenu%!76=0
�gmenu%!80=0
gmenu%!84=&7000021
$(gmenu%+88)="Osmosis"
gmenu%!100=2
 gmenu%!104=0
*gmenu%!108=&7000021
4$(gmenu%+112)="Pyramid"
>gmenu%!124=128
Hgmenu%!128=0
Rgmenu%!132=&7000021
\$(gmenu%+136)="Quit"
f&È™"WimpExt_ShadeEntry",,gmenu%,0,1
p�
z
���buildcards
�3� tempsprite$,tempsprite2$,I,tempval%,tempsuit$
�C� This procedure (and its subprocedures) makes the full 52 card
�6� sprites out of the elements in the Sprites file.
�B� First, copy the halfcard sprite into 4 temporary sprites and
�+� make the the template suit halfcards.
�6ș"OS_SpriteOp",256+27,sprite%,"halfcard","hearts"
�6ș"OS_SpriteOp",256+27,sprite%,"halfcard","spades"
�5ș"OS_SpriteOp",256+27,sprite%,"halfcard","clubs"
�8ș"OS_SpriteOp",256+27,sprite%,"halfcard","diamonds"
�*�drawsprite("hearts","sm_heart",18,46)
�*�drawsprite("spades","sm_spade",18,46)
�(�drawsprite("clubs","sm_club",18,46)
+�drawsprite("diamonds","sm_diam",18,46)
2� Now make the number cards (whole, not half).
� I=1 � 52
$6  � I<14 � �addsprite("hearts",�I,"red_"+�I,18,70)
.D  � I>13 � I<27 � �addsprite("diamonds",�I,"red_"+�(I-13),18,70)
8C  � I>26 � I<40 � �addsprite("clubs",�I,"black_"+�(I-26),18,70)
B=  � I>39 � �addsprite("spades",�I,"black_"+�(I-39),18,70)
L3  ș"OS_SpriteOp",256+27,sprite%,�I,tempsprite$
V0  È™"OS_SpriteOp",256+33,sprite%,tempsprite$
`0  È™"OS_SpriteOp",256+47,sprite%,tempsprite$
j5  ș"OS_SpriteOp",256+35,sprite%,�I,tempsprite$,1
t� I
~;� Now to finish off the cards by adding the decoration.
�� I=1 � 52
�  tempval%=�cardval(I)
�  � I<14 �
�    � tempval%<11 �
�1      tempsuit$="heart":tempsprite$="m_heart"
�?      ș"OS_SpriteOp",256+27,sprite%,"m_heart",tempsprite2$
�5      ș"OS_SpriteOp",256+33,sprite%,tempsprite2$
�	    �
�      Ȏ tempval% �
�+        � 11: tempsprite$="jack_hearts"
�,        � 12: tempsprite$="queen_hearts"
�+        � 13: tempsprite$="king_hearts"
      �

A      È™"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
5      È™"OS_SpriteOp",256+33,sprite%,tempsprite2$
5      È™"OS_SpriteOp",256+47,sprite%,tempsprite2$
(C      È™"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
2	    �
<  �
F  � I>13 � I<27 �
P    � tempval%<11 �
Z/      tempsuit$="diam":tempsprite$="m_diam"
d>      È™"OS_SpriteOp",256+27,sprite%,"m_diam",tempsprite2$
n5      È™"OS_SpriteOp",256+33,sprite%,tempsprite2$
x	    �
�      Ȏ tempval% �
�)        � 11: tempsprite$="jack_diam"
�*        � 12: tempsprite$="queen_diam"
�)        � 13: tempsprite$="king_diam"
�      �
�A      ș"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
�5      ș"OS_SpriteOp",256+33,sprite%,tempsprite2$
�5      ș"OS_SpriteOp",256+47,sprite%,tempsprite2$
�C      ș"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
�	    �
�  �
�  � I>26 � I<40 �
�    � tempval%<11 �
/      tempsuit$="club":tempsprite$="m_club"
>      È™"OS_SpriteOp",256+27,sprite%,"m_club",tempsprite2$
5      È™"OS_SpriteOp",256+33,sprite%,tempsprite2$
"	    �
,      Ȏ tempval% �
6*        � 11: tempsprite$="jack_clubs"
@+        � 12: tempsprite$="queen_clubs"
J*        � 13: tempsprite$="king_clubs"
T      �
^A      È™"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
h5      È™"OS_SpriteOp",256+33,sprite%,tempsprite2$
r5      È™"OS_SpriteOp",256+47,sprite%,tempsprite2$
|C      È™"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
�	    �
�  �
�  � I>39 �
�    � tempval%<11 �
�1      tempsuit$="spade":tempsprite$="m_spade"
�?      ș"OS_SpriteOp",256+27,sprite%,"m_spade",tempsprite2$
�5      ș"OS_SpriteOp",256+33,sprite%,tempsprite2$
�	    �
�      Ȏ tempval% �
�+        � 11: tempsprite$="jack_spades"
�,        � 12: tempsprite$="queen_spades"
�+        � 13: tempsprite$="king_spades"
�      �
A      È™"OS_SpriteOp",256+27,sprite%,tempsprite$,tempsprite2$
5      È™"OS_SpriteOp",256+33,sprite%,tempsprite2$
5      È™"OS_SpriteOp",256+47,sprite%,tempsprite2$
&C      È™"OS_SpriteOp",256+35,sprite%,tempsprite$,tempsprite2$,1
0	    �
:  �
D  Ȏ tempval% �
N    � 1:
X/      �drawsprite(�I,"lg_"+tempsuit$,28,55)
b    � 2:
l,      �drawsprite(�I,tempsprite$,68,136)
v,      �drawsprite(�I,tempsprite2$,68,52)
�    � 3:
�,      �drawsprite(�I,tempsprite$,68,146)
�+      �drawsprite(�I,tempsprite$,68,94)
�,      �drawsprite(�I,tempsprite2$,68,42)
�    � 4:
�,      �drawsprite(�I,tempsprite$,43,136)
�,      �drawsprite(�I,tempsprite$,93,136)
�,      �drawsprite(�I,tempsprite2$,43,52)
�,      �drawsprite(�I,tempsprite2$,93,52)
�    � 5:
�+      �drawsprite(�I,tempsprite$,68,94)
�,      �drawsprite(�I,tempsprite$,43,136)
�,      �drawsprite(�I,tempsprite$,93,136)
,      �drawsprite(�I,tempsprite2$,43,52)
,      �drawsprite(�I,tempsprite2$,93,52)
    � 6:
 ,      �drawsprite(�I,tempsprite$,43,136)
*,      �drawsprite(�I,tempsprite$,93,136)
4+      �drawsprite(�I,tempsprite$,43,94)
>+      �drawsprite(�I,tempsprite$,93,94)
H,      �drawsprite(�I,tempsprite2$,43,52)
R,      �drawsprite(�I,tempsprite2$,93,52)
\    � 7:
f,      �drawsprite(�I,tempsprite$,43,136)
p,      �drawsprite(�I,tempsprite$,93,136)
z,      �drawsprite(�I,tempsprite$,68,116)
�+      �drawsprite(�I,tempsprite$,43,94)
�+      �drawsprite(�I,tempsprite$,93,94)
�,      �drawsprite(�I,tempsprite2$,43,52)
�,      �drawsprite(�I,tempsprite2$,93,52)
�    � 8:
�,      �drawsprite(�I,tempsprite$,43,148)
�,      �drawsprite(�I,tempsprite$,93,148)
�,      �drawsprite(�I,tempsprite$,43,112)
�,      �drawsprite(�I,tempsprite$,93,112)
�,      �drawsprite(�I,tempsprite2$,43,76)
�,      �drawsprite(�I,tempsprite2$,93,76)
�,      �drawsprite(�I,tempsprite2$,43,40)
�,      �drawsprite(�I,tempsprite2$,93,40)
	    � 9:
	,      �drawsprite(�I,tempsprite$,43,148)
	,      �drawsprite(�I,tempsprite$,93,148)
	$,      �drawsprite(�I,tempsprite$,43,112)
	.,      �drawsprite(�I,tempsprite$,93,112)
	8+      �drawsprite(�I,tempsprite$,68,94)
	B,      �drawsprite(�I,tempsprite2$,43,76)
	L,      �drawsprite(�I,tempsprite2$,93,76)
	V,      �drawsprite(�I,tempsprite2$,43,40)
	`,      �drawsprite(�I,tempsprite2$,93,40)
	j
    � 10:
	t,      �drawsprite(�I,tempsprite$,43,148)
	~,      �drawsprite(�I,tempsprite$,93,148)
	�,      �drawsprite(�I,tempsprite$,68,130)
	�,      �drawsprite(�I,tempsprite$,43,112)
	�,      �drawsprite(�I,tempsprite$,93,112)
	�,      �drawsprite(�I,tempsprite2$,43,76)
	�,      �drawsprite(�I,tempsprite2$,93,76)
	�,      �drawsprite(�I,tempsprite2$,68,58)
	�,      �drawsprite(�I,tempsprite2$,43,40)
	�,      �drawsprite(�I,tempsprite2$,93,40)
	�    � 11,12,13:
	�+      �drawsprite(�I,tempsprite$,38,36)
	�  �
	�A  � tempval%<11 � ș"OS_SpriteOp",256+25,sprite%,tempsprite2$
� I

�

,��drawsprite(template$,add$,xpos%,ypos%)
(;� This procedure will add the sprite add$ to the sprite
2.� spritename$ at the position xpos%,ypos%.
<.È™"OS_SpriteOp",256+60,sprite%,template$,0
F5È™"OS_SpriteOp",256+34,sprite%,add$,xpos%,ypos%,8
PÈ™"OS_SpriteOp",256+60,0
Z�
d
n1��addsprite(template$,temp$,add$,xpos%,ypos%)
x;� This procedure will add the sprite add$ to the sprite
�D� spritename$ at the position xpos%,ypos%, creating a new sprite
�"� called temp$ in the process.
�2ș"OS_SpriteOp",256+27,sprite%,template$,temp$
�*ș"OS_SpriteOp",256+60,sprite%,temp$,0
�5ș"OS_SpriteOp",256+34,sprite%,add$,xpos%,ypos%,0
�ș"OS_SpriteOp",256+60,0
��
�
���wimp_poll
�<� This is the heart of the programme. Polls the WIMP and
�:� performs actions dependent on the events that occur.
�� outline%,A%,B%,X%,Y%
�ȕ � quit%
  � outline% 20
  !outline%=main%
  È™ "WimpExt_PrePoll"
"1  ș "Wimp_Poll",%11100000110001,q% � reason%
,4  ș "WimpExt_Action",task%,q%,reason% � reason%
6  Ȏ reason% �
@)    � 1 : ș "WimpExt_AutoRedraw",,q%
J)    � 2 : ș "WimpExt_OpenLinked",,q%
T*    � 3 : ș "WimpExt_CloseLinked",,q%
^
    � 6 :
h      � q%!12=-2 �
r        � q%!8=2 �
|8          È™ "WimpExt_CreateMenu",,imenu%,!q%-64,250
�          menu%=imenu%
�
        �
�        � q%!8=4 � �newgame
�      �
�"      � q%!12=main% � q%!8=2 �
�4        ș "WimpExt_CreateMenu",,gmenu%,!q%,q%!4
�        menu%=gmenu%
�      �
�-      � q%!12=main% � (q%!8=4 � q%!8=1) �
�        Ȏ game% �
�.          � 1 : �osmosis_mouseclick(q%!16)
�E          � 2 : � deal%=4 � �newgame � �pyramid_mouseclick(q%!16)
�
        �
      �

    � 9 :
      Ȏ menu% �
&        � imenu%:
0          Ȏ !q% �
:A            � 0 : ș"WimpExt_OpenDialogue",,,info%,!q%-64,184
D&            � 1 : game%=1:�newgame
N            � 2 : quit%=�
X          �
b        � gmenu%:
l          Ȏ !q% �
v            � 0 :
�              Ȏ game% �
�'                � 1 : �osmosis_undo
�'                � 2 : �pyramid_undo
�              �
�            � 1 :
�              Ȏ game% �
�"                � 1 : �newgame
�                � 2 :
�                  deal%=4
�$                  �pyramid_score
�                  �newgame
�              �
�            � 2 :

              game%=1

              �newgame

            � 3 :

               game%=2

*              �newgame

4            � 4 : quit%=�

>          �

H      �

R    � 17,18 :

\      Ȏ q%!16 �

f        � 0 : quit%=�

p      �

z  �

��

��

�

�
��newgame

�&� Calls the relevant game routine.

�-ș"Wimp_ForceRedraw",main%,0,-1100,1480,0

�Ȏ game% �

�  � 1 : �osmosis

�  � 2 : �pyramid

��

�
played%=�

��

�
��cleanupwindow(window%)
2� Deletes all icons from the specified window.
� delete%,I
$� iconnumber%>1 �
.  � delete% 8
8  !delete%=window%
B  � I=1 � iconnumber%
L    delete%!4=I
V$    È™"Wimp_DeleteIcon",,delete%
`	  � I
j�
t�
~
�
��shuffle
�B� This procedure will set up the pack of 52 cards and ensure a
�� random distribution.
��dim
�!� shuffle1%,shuffle2%,I,seed%
�seed%=�(-�)
�� I=1 � 52
�  pack%(I)=I
�� I
�� I=1 � 100
�  �
�    shuffle1%=�(52)
    shuffle2%=�(52)

  � shuffle1%<>shuffle2%
*  È” pack%(shuffle1%),pack%(shuffle2%)
� I
(�
2
<	��dim
F� Sets up game arrays.
P� played%=� � � pack%(52)
ZȎ game% �
d  � 1 :
n    � osmodim%=� �
x�      � osmopack%(35),osmowaste%(35),osmopile1%(4),osmopile2%(4),osmopile3%(4),osmopile4%(4),osmopile1han%(4),osmopile2han%(4),osmopile3han%(4),osmopile4han%(4),osmofound1%(13),osmofound2%(13),osmofound3%(13),osmofound4%(13)
��      � osmofound1han%(13),osmofound2han%(13),osmofound3han%(13),osmofound4han%(13),osmofound1val%(13),osmofound2val%(13),osmofound3val%(13),osmofound4val%(13)
�      osmodim%=�
�	    �
�  � 2 :
�    � pyrdim%=� �
�_      � pyrlay%(28),pyrlayhan%(28),pyrpack%(24),pyrwaste%(24),pyrfound%(52),pyrdeleted%(28)
�      pyrdim%=�
�	    �
��
��
�
�@ݤcreateicon(win%,name$,text$,xmin%,ymin%,xmax%,ymax%,flag%)
�5� iconhandle%,name%,slength%,tlength%,icon%,text%
text$+=�(0)
!tlength%=(�(text$)+4) � (� 3)
!slength%=(�(name$)+4) � (� 3)
" � icon% 36+tlength%+slength%
,text%=icon%+36+slength%
6$text%=text$
@name%=icon%+36
J/� name$="" � $name%="r5" � $name%="s"+name$
Ticon%!0=win%
^icon%!4=xmin%
hicon%!8=ymin%
ricon%!12=xmax%
|icon%!16=ymax%
�icon%!20=flag%
�icon%!24=text%
�icon%!28=name%
�icon%!32=tlength%
�,ș"Wimp_CreateIcon",,icon% � iconhandle%
�iconnumber%=iconnumber%+1
�=iconhandle%
�
�,��seticonsprite(window%,� icon%,sprite$)
�>� Sets the sprite of the given indirected text+sprite icon
�� to sprite$.
�<� block%,block2%,block3%,test$,I,xmin%,ymin%,xmax%,ymax%
�$� block% 40,block2% 40,block3% 8
!block%=window%
block%!4=icon%
!block2%=window%
&block2%!4=icon%
0+ș"Wimp_GetIconState",,block% � ,block%
: È™"Wimp_DeleteIcon",,block2%
D$block3%="s"+sprite$
N� block2% 36
X!block2%=window%
b� I=4 � 32 � 4
l  block2%!I=block%!(I+4)
v� I
�block2%!28=block3%
�(ș"Wimp_CreateIcon",,block2% � icon%
�xmin%=block2%!4
�ymin%=block2%!8
�xmax%=block2%!12
�ymax%=block2%!16
�8ș"Wimp_ForceRedraw",window%,xmin%,ymin%,xmax%,ymax%
��
�
�ݤcardval(name%)
�?� This function will return the value of the card (i.e. the
�� number shown on it)
�
� val%
*ș"WimpExt_Divide",,,name%,13 � ,,val%
� val%=0 � val%=13
	=val%
 
*��blankicon(window%,icon%)
4:� This procedure will remove the icon from the screen.
>� block%
H� block% 8
R!block%=window%
\block%!4=icon%
f$�seticonsprite(window%,icon%,"")
p�
z
�
��osmosis
�0ș"WimpExt_SetWindowTitle",,,main%,"Osmosis"
�8� played%=� � iconnumber%<>0 � �cleanupwindow(main%)
��shuffle
��osmosis_deal
��osmosis_layout
��
�
���osmosis_deal
�>� This procedure will deal out the cards into the relevant
�1� arrays and lay out the cards in the window.
�� I
�
� I=1 � 4
  osmopile1%(I)=pack%(I)
  osmopile2%(I)=pack%(I+4)
  osmopile3%(I)=pack%(I+8)
$  osmopile4%(I)=pack%(I+12)
.� I
8� I=1 � 13
B  osmofound1%(I)=0
L  osmofound2%(I)=0
V  osmofound3%(I)=0
`  osmofound4%(I)=0
j� I
tosmofound1%(1)=pack%(17)
~� I=1 � 35
�  osmopack%(I)=pack%(I+17)
�� I
�� I=1 � 35
�  osmowaste%(I)=0
�� I
�Fș"WimpExt_Divide",,,osmofound1%(1),13 � suit1%,,osmofound1val%(1)
�suit1%=suit1%+1
�� osmofound1val%(1)=0 �
�  suit1%=suit1%-1
�  osmofound1val%(1)=13
��
�suit2%=0
suit3%=0

suit4%=0
�

(��osmosis_layout
2&� Sets out the cards for the game.
<
� I,left%
F$È™ "WimpExt_OpenWindowTop",main%
Ptop%=-10:left%=10
Z� I=4 � 2 � -1
db   osmopile1han%(I)=�createicon(main%,"back","",left%,top%-208,left%+158,top%,%11000100011011)
nf   osmopile2han%(I)=�createicon(main%,"back","",left%,top%-426,left%+158,top%-218,%11000100011011)
xf   osmopile3han%(I)=�createicon(main%,"back","",left%,top%-644,left%+158,top%-436,%11000100011011)
�f   osmopile4han%(I)=�createicon(main%,"back","",left%,top%-862,left%+158,top%-654,%11000100011011)
�   left%=left%+30
�� I
�gosmopile1han%(1)=�createicon(main%,�osmopile1%(1),"",left%,top%-208,left%+158,top%,%11000100011011)
�kosmopile2han%(1)=�createicon(main%,�osmopile2%(1),"",left%,top%-426,left%+158,top%-218,%11000100011011)
�kosmopile3han%(1)=�createicon(main%,�osmopile3%(1),"",left%,top%-644,left%+158,top%-436,%11000100011011)
�kosmopile4han%(1)=�createicon(main%,�osmopile4%(1),"",left%,top%-862,left%+158,top%-654,%11000100011011)
�Xosmopackhan%=�createicon(main%,"back","",572,top%-1080,730,top%-872,%11000100011011)
�[osmowastehan%=�createicon(main%,"nocard","",750,top%-1080,908,top%-872,%11000100011011)
�left1%=308
�fosmofound1han%(1)=�createicon(main%,�osmofound1%(1),"",left1%,top%-208,left1%+158,top%,%100011011)
�+found1%=1:found2%=0:found3%=0:found4%=0
�left1%=left1%+70
$left2%=308:left3%=308:left4%=308
top1%=top%
3top2%=top1%-218:top3%=top2%-218:top4%=top3%-218
"'turn1%=�:turn2%=�:turn3%=�:turn4%=�
,/turned1%=�:turned2%=�:turned3%=�:turned4%=�
6�
@
J��osmosis_mouseclick(icon%)
T8� Processes mouse clicks in the osmosis main window.
^+� First set up the nexessary variables.
hn� click%,name$,name%,iconsuit%,I,J,cardvalue%,tag%,hole$,lay%,empty%,iconhandle%,empty%,cardmoved%,shaded%
rBtag%=�:lay%=�:cardmoved%=�:turn1%=�:turn2%=�:turn3%=�:turn4%=�
|� click% 40
�!click%=main%
�click%!4=icon%
�+ș"Wimp_GetIconState",,click% � ,click%
�name$=$click%!32
�name$=�name$,2)
�name%=�name$
�S� icon%=0 � iconsuit%=0 � ș"WimpExt_Divide",,,name%,13 � iconsuit%,,cardvalue%
�iconsuit%=iconsuit%+1
�� cardvalue%=0 �
�  iconsuit%=iconsuit%-1
�  cardvalue%=13
��
�� Now process the event.
�� name%<>0 � (icon%=osmopile1han%(1) � icon%=osmopile2han%(1) � icon%=osmopile3han%(1) � icon%=osmopile4han%(1) � icon%=osmowastehan%) �
  Ȏ iconsuit% �
    � suit1% :
&      found1%=found1%+1
0j      osmofound1han%(found1%)=�createicon(main%,name$,"",left1%,top1%-208,left1%+158,top1%,%100011011)
:      left1%=left1%+70
D$      osmofound1%(found1%)=name%
N,      osmofound1val%(found1%)=cardvalue%
X@      �osmosis_movecard(icon%,osmofound1han%(found1%),name$)
b      cardmoved%=�
l)      � osmofound1%(13)<>0 � turn1%=�
v    � suit2% :
�      � I=1 � found1%
�3        � cardvalue%=osmofound1val%(I) � tag%=�
�
      � I
�      � tag%=� �
�        found2%=found2%+1
�l        osmofound2han%(found2%)=�createicon(main%,name$,"",left2%,top2%-208,left2%+158,top2%,%100011011)
�        left2%=left2%+70
�&        osmofound2%(found2%)=name%
�.        osmofound2val%(found2%)=cardvalue%
�B        �osmosis_movecard(icon%,osmofound2han%(found2%),name$)
�        cardmoved%=�
�      �
�)      � osmofound2%(13)<>0 � turn2%=�
    � suit3% :
      � I=1 � found2%
3        � cardvalue%=osmofound2val%(I) � tag%=�
 
      � I
*      � tag%=� �
4        found3%=found3%+1
>l        osmofound3han%(found3%)=�createicon(main%,name$,"",left3%,top3%-208,left3%+158,top3%,%100011011)
H        left3%=left3%+70
R&        osmofound3%(found3%)=name%
\.        osmofound3val%(found3%)=cardvalue%
fB        �osmosis_movecard(icon%,osmofound3han%(found3%),name$)
p        cardmoved%=�
z      �
�)      � osmofound3%(13)<>0 � turn3%=�
�    � suit4% :
�      � I=1 � found3%
�3        � cardvalue%=osmofound3val%(I) � tag%=�
�
      � I
�      � tag%=� �
�        found4%=found4%+1
�l        osmofound4han%(found4%)=�createicon(main%,name$,"",left4%,top4%-208,left4%+158,top4%,%100011011)
�        left4%=left4%+70
�&        osmofound4%(found4%)=name%
�.        osmofound4val%(found4%)=cardvalue%
�B        �osmosis_movecard(icon%,osmofound4han%(found4%),name$)
�        cardmoved%=�
      �
)      � osmofound4%(13)<>0 � turn4%=�
  �
$  � iconsuit%<>suit1% �
.    � osmofound2%(1)=0 �
8*      � cardvalue%=osmofound1val%(1) �
B         osmofound2%(1)=name%
Lf        osmofound2han%(1)=�createicon(main%,name$,"",left2%,top2%-208,left2%+158,top2%,%100011011)
V        left2%=left2%+70
`        suit2%=iconsuit%
j<        �osmosis_movecard(icon%,osmofound2han%(1),name$)
t        found2%=1
~        cardmoved%=�
�      �
�	    �
�      � osmofound3%(1)=0 �
�,        � cardvalue%=osmofound1val%(1) �
�"          osmofound3%(1)=name%
�h          osmofound3han%(1)=�createicon(main%,name$,"",left3%,top3%-208,left3%+158,top3%,%100011011)
�          left3%=left3%+70
�          suit3%=iconsuit%
�>          �osmosis_movecard(icon%,osmofound3han%(1),name$)
�          cardmoved%=�
�          found3%=1
�
        �
      �

         � osmofound4%(1)=0 �
.          � cardvalue%=osmofound1val%(1) �
$            osmofound4%(1)=name%
(j            osmofound4han%(1)=�createicon(main%,name$,"",left4%,top4%-208,left4%+158,top4%,%100011011)
2             left4%=left4%+70
<             suit4%=iconsuit%
F@            �osmosis_movecard(icon%,osmofound4han%(1),name$)
P            cardmoved%=�
Z            found4%=1
d          �
n
        �
x      �
�	    �
�  �
�  � cardmoved%=� �
�!    empty%=�osmosis_emptypile
�    � empty%<>0 �
�      cardmoved%=�
�/      �osmosis_movecard(icon%,empty%,name$)
�      Ȏ empty% �
�4        � osmopile1han%(1) : osmopile1%(1)=name%
�4        � osmopile2han%(1) : osmopile2%(1)=name%
�4        � osmopile3han%(1) : osmopile3%(1)=name%
�4        � osmopile4han%(1) : osmopile4%(1)=name%
�      �
	    �
  �
�
"� icon%=osmopackhan% �
,  lastfrom%=osmopackhan%
6  � osmopack%(1)=0 �
@    lastturn%=0
J    � I=1 � 35
T'      osmopack%(I)=osmowaste%(36-I)
^    � I
h    � I=1 � 35
r      osmowaste%(I)=0
|    � I
�    È• osmopack%(1)=0
�      � I=1 � 34
�'        osmopack%(I)=osmopack%(I+1)
�
      � I
�      osmopack%(35)=0
�	    �
�1    �seticonsprite(main%,osmopackhan%,"back")
�4    �seticonsprite(main%,osmowastehan%,"nocard")
�  �
�    � osmopack%(3)=0 �
�      � osmopack%(2)=0 �
�        � I=34 � 1 � -1
�+          osmowaste%(I+1)=osmowaste%(I)
        � I
&        osmowaste%(1)=osmopack%(1)
        osmopack%(1)=0
&        lastturn%=1
0      �
:        � I=33 � 1 � -1
D+          osmowaste%(I+2)=osmowaste%(I)
N        � I
X&        osmowaste%(2)=osmopack%(1)
b&        osmowaste%(1)=osmopack%(2)
l)        osmopack%(1)=0:osmopack%(2)=0
v        lastturn%=2
�      �
�	    �
�      � I=32 � 1 � -1
�)        osmowaste%(I+3)=osmowaste%(I)
�
      � I
�$      osmowaste%(3)=osmopack%(1)
�$      osmowaste%(2)=osmopack%(2)
�$      osmowaste%(1)=osmopack%(3)
�      � I=1 � 32
�'        osmopack%(I)=osmopack%(I+3)
�
      � I
�      � I=33 � 35
�        osmopack%(I)=0

      � I
      lastturn%=3
	    �
     � osmowaste%(1)=0 �
*6      �seticonsprite(main%,osmowastehan%,"nocard")
4	    �
><      �seticonsprite(main%,osmowastehan%,�osmowaste%(1))
H	    �
RF    � osmopack%(1)=0 � �seticonsprite(main%,osmopackhan%,"nocard")
\  �
fcardmoved%=�
p�
z� turn1%=� �
�  � I=1 � 13
�6    �seticonsprite(main%,osmofound1han%(I),"back")
�	  � I
�  turn1%=�:turned1%=�
��
�� turn2%=� �
�  � I=1 � 13
�6    �seticonsprite(main%,osmofound2han%(I),"back")
�	  � I
�  turn2%=�:turned2%=�
��
�� turn3%=� �
�  � I=1 � 13
6    �seticonsprite(main%,osmofound3han%(I),"back")
	  � I
  turn3%=�:turned3%=�
$�
.� turn4%=� �
8  � I=1 � 13
B6    �seticonsprite(main%,osmofound4han%(I),"back")
L	  � I
V  turn4%=�:turned4%=�
`�
j� cardmoved%=� �
t2  ș"WimpExt_ShadeEntry",,gmenu%,0,0 � shaded%
~6  � shaded%=0 � ș"WimpExt_ShadeEntry",,gmenu%,0,0
��
�� icon%=0 � �newgame
��
�
�/��osmosis_movecard(startloc%,endloc%,name$)
�=� This procedure performs movement of a card, knowing its
�>� initial location, including moving cards up in the pile.
�8lastfrom%=startloc%:lastto%=endloc%:lastcard%=�name$
�Ȏ startloc% �
�  � osmopile1han%(1) :
�    � I=1 � 3
�'      osmopile1%(I)=osmopile1%(I+1)
    � I

    osmopile1%(4)=0
=    �seticonsprite(main%,osmopile1han%(1),�osmopile1%(1))
+    �seticonsprite(main%,endloc%,name$)
(    � I=2 � 4
2H      � osmopile1%(I)=0 � �seticonsprite(main%,osmopile1han%(I),"0")
<    � I
F  � osmopile2han%(1) :
P    � I=1 � 3
Z'      osmopile2%(I)=osmopile2%(I+1)
d    � I
n    osmopile2%(4)=0
x=    �seticonsprite(main%,osmopile2han%(1),�osmopile2%(1))
�+    �seticonsprite(main%,endloc%,name$)
�    � I=2 � 4
�H      � osmopile2%(I)=0 � �seticonsprite(main%,osmopile2han%(I),"0")
�    � I
�  � osmopile3han%(1) :
�    � I=1 � 3
�'      osmopile3%(I)=osmopile3%(I+1)
�    � I
�    osmopile3%(4)=0
�=    �seticonsprite(main%,osmopile3han%(1),�osmopile3%(1))
�+    �seticonsprite(main%,endloc%,name$)
�    � I=2 � 4
�H      � osmopile3%(I)=0 � �seticonsprite(main%,osmopile3han%(I),"0")
    � I
  � osmopile4han%(1) :
    � I=1 � 3
"'      osmopile4%(I)=osmopile4%(I+1)
,    � I
6    osmopile4%(4)=0
@=    �seticonsprite(main%,osmopile4han%(1),�osmopile4%(1))
J+    �seticonsprite(main%,endloc%,name$)
T    � I=2 � 4
^H      � osmopile4%(I)=0 � �seticonsprite(main%,osmopile4han%(I),"0")
h    � I
r  � osmowastehan% :
|    � I=1 � 34
�'      osmowaste%(I)=osmowaste%(I+1)
�    � I
�    osmowaste%(35)=0
�A    � osmowaste%(1)=0 � hole$="nocard" � hole$=�osmowaste%(1)
�1    �seticonsprite(main%,osmowastehan%,hole$)
�+    �seticonsprite(main%,endloc%,name$)
��
��
�
�ݤosmosis_emptypile
�D� Checks to see if there are any empty piles, returns the handle
�<� of the first empty pile it encounters, else returns 0.
�)� osmopile1%(1)=0 � =osmopile1han%(1)
 )� osmopile2%(1)=0 � =osmopile2han%(1)
 )� osmopile3%(1)=0 � =osmopile3han%(1)
 )� osmopile4%(1)=0 � =osmopile4han%(1)
 &=0
 0
 :��osmosis_undo
 D7� This procedure will undo the last move in Osmosis
 N
� from%,I
 Xfrom%=0
 b9� lastfrom%=osmopile1han%(1) � from%=osmopile1han%(1)
 l9� lastfrom%=osmopile2han%(1) � from%=osmopile2han%(1)
 v9� lastfrom%=osmopile3han%(1) � from%=osmopile3han%(1)
 �9� lastfrom%=osmopile4han%(1) � from%=osmopile4han%(1)
 �3� lastfrom%=osmowastehan% � from%=osmowastehan%
 �&ș"WimpExt_ShadeEntry",,gmenu%,0,1
 �Ȏ lastfrom% �
 �  � osmopackhan% :
 �    Ȏ lastturn% �
 �      � 0 :
 �        � I=1 � 35
 �+          osmowaste%(I)=osmopack%(36-I)
 �        � I
 �        � I=1 � 35
 �          osmopack%(I)=0
 �        � I
!        È• osmowaste%(1)=0
!          � I=1 � 34
!-            osmowaste%(I)=osmowaste%(I+1)
!           � I
!*          osmowaste%(35)=0
!4
        �
!>7        �seticonsprite(main%,osmopackhan%,"nocard")
!H>        �seticonsprite(main%,osmowastehan%,�osmowaste%(1))
!R      � 1 :
!\        � I=34 � 1 � -1
!f)          osmopack%(I+1)=osmopack%(I)
!p        � I
!z&        osmopack%(1)=osmowaste%(1)
!�        � I=1 � 34
!�+          osmowaste%(I)=osmowaste%(I+1)
!�        � I
!�>        �seticonsprite(main%,osmowastehan%,�osmowaste%(1))
!�5        �seticonsprite(main%,osmopackhan%,"back")
!�      � 2 :
!�        � I=33 � 1 � -1
!�)          osmopack%(I+2)=osmopack%(I)
!�        � I
!�&        osmopack%(2)=osmowaste%(1)
!�&        osmopack%(1)=osmowaste%(2)
!�        � I=1 � 33
!�+          osmowaste%(I)=osmowaste%(I+2)
"        � I
"-        osmowaste%(34)=0:osmowaste%(35)=0
">        �seticonsprite(main%,osmowastehan%,�osmowaste%(1))
"$5        �seticonsprite(main%,osmopackhan%,"back")
".      � 3 :
"8        � I=32 � 1 � -1
"B)          osmopack%(I+3)=osmopack%(I)
"L        � I
"V&        osmopack%(3)=osmowaste%(1)
"`&        osmopack%(2)=osmowaste%(2)
"j&        osmopack%(1)=osmowaste%(3)
"t        � I=1 � 32
"~+          osmowaste%(I)=osmowaste%(I+3)
"�        � I
"�        � I=33 � 35
"�          osmowaste%(I)=0
"�        � I
"�        � osmowaste%(1)=0 �
"�:          �seticonsprite(main%,osmowastehan%,"nocard")
"�
        �
"�@          �seticonsprite(main%,osmowastehan%,�osmowaste%(1))
"�
        �
"�	    �
"�  � from% :
"��    � lastto%=osmofound1han%(found1%) � lastto%=osmofound2han%(found2%) � lastto%=osmofound3han%(found3%) � lastto%=osmofound4han%(found4%) � �blankicon(main%,lastto%)
#    Ȏ from% �
#
      � osmopile1han%(1) :
#        � I=4 � 2 � -1
#+          osmopile1%(I)=osmopile1%(I-1)
#(P          � osmopile1%(I)<>0 � �seticonsprite(main%,osmopile1han%(I),"back")
#2        � I
#<#        osmopile1%(1)=lastcard%
#F      � osmopile2han%(1) :
#P        � I=4 � 2 � -1
#Z+          osmopile2%(I)=osmopile2%(I-1)
#dP          � osmopile2%(I)<>0 � �seticonsprite(main%,osmopile2han%(I),"back")
#n        � I
#x#        osmopile2%(1)=lastcard%
#�      � osmopile3han%(1) :
#�        � I=4 � 2 � -1
#�+          osmopile3%(I)=osmopile3%(I-1)
#�P          � osmopile3%(I)<>0 � �seticonsprite(main%,osmopile3han%(I),"back")
#�        � I
#�#        osmopile3%(1)=lastcard%
#�      � osmopile4han%(1) :
#�        � I=4 � 2 � -1
#�+          osmopile4%(I)=osmopile4%(I-1)
#�P          � osmopile4%(I)<>0 � �seticonsprite(main%,osmopile4han%(I),"back")
#�        � I
#�#        osmopile4%(1)=lastcard%
#�      � osmowastehan% :
$        � I=35 � 2 � -1
$+          osmowaste%(I)=osmowaste%(I-1)
$        � I
$"#        osmowaste%(1)=lastcard%
$,	    �
$6    Ȏ lastto% �
$@%      � osmofound1han%(found1%) :
$J.        found1%=found1%-1:left1%=left1%-70
$T        � turned1%=� �
$^          � I=1 � 12
$hG            �seticonsprite(main%,osmofound1han%(I),�osmofound1%(I))
$r          � I
$|
        �
$�%      � osmofound2han%(found2%) :
$�.        found2%=found2%-1:left2%=left2%-70
$�        � turned2%=� �
$�          � I=1 � 12
$�G            �seticonsprite(main%,osmofound2han%(I),�osmofound2%(I))
$�          � I
$�
        �
$�%      � osmofound3han%(found3%) :
$�.        found3%=found3%-1:left3%=left3%-70
$�        � turned3%=� �
$�          � I=1 � 12
$�G            �seticonsprite(main%,osmofound3han%(I),�osmofound3%(I))
$�          � I
%
        �
%%      � osmofound4han%(found4%) :
%.        found4%=found4%-1:left4%=left4%-70
%&        � turned4%=� �
%0          � I=1 � 12
%:G            �seticonsprite(main%,osmofound4han%(I),�osmofound4%(I))
%D          � I
%N
        �
%X      � osmopile1han%(1) :
%b        osmopile1%(1)=0
%l6        �seticonsprite(main%,osmopile1han%(1),"0")
%v      � osmopile2han%(1) :
%�        osmopile2%(1)=0
%�6        �seticonsprite(main%,osmopile2han%(1),"0")
%�      � osmopile3han%(1) :
%�        osmopile3%(1)=0
%�6        �seticonsprite(main%,osmopile3han%(1),"0")
%�      � osmopile4han%(1) :
%�        osmopile4%(1)=0
%�6        �seticonsprite(main%,osmopile4han%(1),"0")
%�	    �
%�.    �seticonsprite(main%,from%,�lastcard%)
%��
%��
%�
&
��pyramid
&#� Sets up the game for pyramid.
&0È™"WimpExt_SetWindowTitle",,,main%,"Pyramid"
& 0ș"WimpExt_ShadeEntry",,gmenu%,0,0 � shaded%
&*4� shaded%=1 � ș"WimpExt_ShadeEntry",,gmenu%,0,1
&48� played%=� � iconnumber%<>0 � �cleanupwindow(main%)
&>�shuffle
&H�pyramid_deal
&R�pyramid_layout
&\�
&f
&p��pyramid_deal
&z� Sets up the game arrays.
&�� I
&�� I=1 � 28
&�  pyrlay%(I)=pack%(I)
&�� I
&�� I=1 � 24
&�  pyrpack%(I)=pack%(I+28)
&�  pyrwaste%(I)=0
&�� I
&�� I=1 � 52
&�  pyrfound%(I)=0
&�� I
&��
&�
'��pyramid_layout
'(� Sets up the screen with the cards.
'� left%,top%,I
'$$È™ "WimpExt_OpenWindowTop",main%
'.left%=661:top%=-10
'8Wpyrlayhan%(1)=�createicon(main%,�pyrlay%(1),"",left%,top%-208,left%+158,top%,12571)
'Bleft%=left%-100
'Ltop%=top%-125
'V
� I=2 � 3
'`Y  pyrlayhan%(I)=�createicon(main%,�pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
'j  left%=left%+200
't� I
'~!left%=left%-500:top%=top%-125
'�
� I=4 � 6
'�Y  pyrlayhan%(I)=�createicon(main%,�pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
'�  left%=left%+200
'�� I
'�!left%=left%-700:top%=top%-125
'�� I=7 � 10
'�Y  pyrlayhan%(I)=�createicon(main%,�pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
'�  left%=left%+200
'�� I
'�!left%=left%-900:top%=top%-125
'�� I=11 � 15
'�Y  pyrlayhan%(I)=�createicon(main%,�pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
(  left%=left%+200
(
� I
("left%=left%-1100:top%=top%-125
(� I=16 � 21
((Y  pyrlayhan%(I)=�createicon(main%,�pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
(2  left%=left%+200
(<� I
(F"left%=left%-1300:top%=top%-125
(P� I=22 � 28
(ZY  pyrlayhan%(I)=�createicon(main%,�pyrlay%(I),"",left%,top%-208,left%+158,top%,12571)
(d  left%=left%+200
(n� I
(xBpyrpackhan%=�createicon(main%,"back","",50,-258,208,-50,12571)
(�Fpyrwastehan%=�createicon(main%,"nocard","",220,-258,378,-50,12571)
(�Hpyrfoundhan%=�createicon(main%,"nocard","",1200,-258,1358,-50,12571)
(�� I=1 � 28
(�  pyrdeleted%(I)=�
(�� I
(�?deal%=1:selected%=�:firstcard%=0:firsticon%=0:cardsleft%=24
(�{scorehan%=�createicon(main%,"","Score : "+�score%+" in "+�pyrgames%,50,-350,300,-290,%00010111000000000000000100111101)
(�fdealhan%=�createicon(main%,"","Deal : "+�deal%,50,-420,300,-360,%00010111000000000000000100111101)
(�vcardslefthan%=�createicon(main%,"","Cards left : "+�cardsleft%,50,-490,300,-430,%00010111000000000000000100111101)
(�9lasticon1%=-1:lasticon2%=-1:lastval1%=-1:lastval2%=-1
(��
(�
(���pyramid_mouseclick(icon%)
)@� This procedure processes mouseclicks in a game of Pyramid.
)� Now process the event.
)3� click%,I,J,play%,tempcard%,shaded%,cardmoved%
)"cardmoved%=�
),#play%=�pyramid_uncovered(icon%)
)67� icon%=pyrwastehan% � icon%=pyrfoundhan% � play%=�
)@� click% 40
)J!click%=main%
)Tclick%!4=icon%
)^+ș"Wimp_GetIconState",,click% � ,click%
)hname$=$click%!32
)rname$=�name$,2)
)|name%=�name$
)�� name%<>0 �
)�   cardvalue%=�cardval(name%)
)��
)�  cardvalue%=-1
)��
)�:� icon%=pyrpackhan% � cardvalue%=�cardval(pyrpack%(1))
)�� icon%<>0 �
)�  � selected%=� �
)�H    lasticon1%=icon%:lastval1%=cardvalue%:lasticon2%=-1:lastval2%=-1
)�  �
)�/  � selected%=� � cardvalue%+lastval1%=13 �
)�-    lasticon2%=icon%:lastval2%=cardvalue%
)�  �
*�
*� Now process the click.
*Ȏ icon% �
*&  � 0 :
*0    score%=0:pyrgames%=0
*:    �newgame
*D  � pyrpackhan% :
*N    cardmoved%=�
*X    � pyrpack%(1)=0 �
*b      � I=1 � 24
*l'        pyrpack%(I)=pyrwaste%(25-I)
*v
      � I
*�      � I=1 � 24
*�        pyrwaste%(I)=0
*�
      � I
*�      � pyrpack%(1)=0 �
*�
        �
*�          � I=1 � 23
*�)            pyrpack%(I)=pyrpack%(I+1)
*�          � I
*�          pyrpack%(24)=0
*�        � pyrpack%(1)<>0
*�      �
*�      deal%=deal%+1
*�Q      � deal%<4 � ș"WimpExt_SetIconString",,,main%,dealhan%,"Deal : "+�deal%
+2      �seticonsprite(main%,pyrpackhan%,"back")
+5      �seticonsprite(main%,pyrwastehan%,"nocard")
+	    �
+ %      � firsticon%=pyrwastehan% �
+*6        È™"WimpExt_SetIcon",,,main%,pyrwastehan%,0
+41        selected%=�:firsticon%=0:firstcard%=0
+>      �
+H      � I=24 � 2 � -1
+R'        pyrwaste%(I)=pyrwaste%(I-1)
+\
      � I
+f"      pyrwaste%(1)=pyrpack%(1)
+p      � I=1 � 23
+z%        pyrpack%(I)=pyrpack%(I+1)
+�
      � I
+�      pyrpack%(24)=0
+�      � pyrpack%(1)=0 �
+�6        �seticonsprite(main%,pyrpackhan%,"nocard")
+�      �
+�<        �seticonsprite(main%,pyrwastehan%,�pyrwaste%(1))
+�	    �
+��
+�� play%=� � name%<>0 �
+�  � selected%=� �
+�+    ș"WimpExt_SetIcon",,,main%,icon%,2
+�/    � cardvalue%=13 � icon%<>pyrfoundhan% �
+�-      ș"WimpExt_SetIcon",,,main%,icon%,0
,(      �pyramid_movecard(icon%,name$)
,      � I=52 � 2 � -1
,'        pyrfound%(I)=pyrfound%(I-1)
,$
      � I
,.      pyrfound%(1)=name%
,8      selected%=�
,B	    �
,L      � cardvalue%<>13 �
,VO        selected%=�:firstcard%=cardvalue%:firsticon%=icon%:firstname%=name%
,`      �
,j	    �
,t  �
,~    � icon%=firsticon% �
,�-      ș"WimpExt_SetIcon",,,main%,icon%,2
,�J      selected%=�:firstcard%=0:firsticon%=0:lasticon1%=-1:lastval1%=-1
,�	    �
,�&      � cardvalue%+firstcard%=13 �
,�'        � firsticon%=pyrfoundhan% �
,�,          �pyramid_movecard(icon%,name$)
,�          � I=52 � 2 � -1
,�+            pyrfound%(I)=pyrfound%(I-1)
,�          � I
,�           pyrfound%(1)=name%
,�8          ș"WimpExt_SetIcon",,,main%,pyrfoundhan%,0
,�3          selected%=�:firsticon%=0:firstcard%=0
-
        �
-
6          È™"WimpExt_SetIcon",,,main%,firsticon%,0
-8          È™"WimpExt_SetIcon",,,main%,pyrfoundhan%,0
-$          � icon%=pyrfoundhan% �
-(3            �pyramid_movecard(firsticon%,name$)
-2            tempcard%=name%
-<'            pyrfound%(1)=firstcard%
-F            � I=52 � 2 � -1
-P-              pyrfound%(I)=pyrfound%(I-1)
-Z            � I
-d&            pyrfound%(1)=tempcard%
-n=            �seticonsprite(main%,pyrfoundhan%,�tempcard%)
-x:            È™"WimpExt_SetIcon",,,main%,pyrfoundhan%,0
-�5            selected%=�:firsticon%=0:firstcard%=0
-�          �
-�            � I=52 � 3 � -1
-�-              pyrfound%(I)=pyrfound%(I-2)
-�            � I
-�'            pyrfound%(2)=firstname%
-�"            pyrfound%(1)=name%
-�3            �pyramid_movecard(firsticon%,name$)
-�.            �pyramid_movecard(icon%,name$)
-�5            selected%=�:firstcard%=0:firsticon%=0
-�          �
-�
        �
-�      �
.	    �
.  �
.�
."1� deal%=4 � pyrdeleted%(1)=� � �pyramid_score
.,� lasticon1%<>-1 �
.62  ș"WimpExt_ShadeEntry",,gmenu%,0,0 � shaded%
.@6  � shaded%=0 � ș"WimpExt_ShadeEntry",,gmenu%,0,0
.J�
.T�
.^
.hݤpyramid_uncovered(icon%)
.r?� This function returns TRUE if the selected icon is in the
.|3� layout and is uncovered, and FALSE otherwise.
.�
� I,temp%
.�I=0:temp%=�
.��
.�  I=I+1
.�%  � icon%=pyrlayhan%(I) � temp%=�
.�� temp%=� � I=28
.�� temp%=� � I=0
.�� I=0 � =�
.�4� I=1 � pyrdeleted%(2)=� � pyrdeleted%(3)=� � =�
.�4� I=2 � pyrdeleted%(4)=� � pyrdeleted%(5)=� � =�
.�4� I=3 � pyrdeleted%(5)=� � pyrdeleted%(6)=� � =�
.�4� I=4 � pyrdeleted%(7)=� � pyrdeleted%(8)=� � =�
.�4� I=5 � pyrdeleted%(8)=� � pyrdeleted%(9)=� � =�
/5� I=6 � pyrdeleted%(9)=� � pyrdeleted%(10)=� � =�
/6� I=7 � pyrdeleted%(11)=� � pyrdeleted%(12)=� � =�
/6� I=8 � pyrdeleted%(12)=� � pyrdeleted%(13)=� � =�
/&6� I=9 � pyrdeleted%(13)=� � pyrdeleted%(14)=� � =�
/07� I=10 � pyrdeleted%(14)=� � pyrdeleted%(15)=� � =�
/:7� I=11 � pyrdeleted%(16)=� � pyrdeleted%(17)=� � =�
/D7� I=12 � pyrdeleted%(17)=� � pyrdeleted%(18)=� � =�
/N7� I=13 � pyrdeleted%(18)=� � pyrdeleted%(19)=� � =�
/X7� I=14 � pyrdeleted%(19)=� � pyrdeleted%(20)=� � =�
/b7� I=15 � pyrdeleted%(20)=� � pyrdeleted%(21)=� � =�
/l7� I=16 � pyrdeleted%(22)=� � pyrdeleted%(23)=� � =�
/v7� I=17 � pyrdeleted%(23)=� � pyrdeleted%(24)=� � =�
/�7� I=18 � pyrdeleted%(24)=� � pyrdeleted%(25)=� � =�
/�7� I=19 � pyrdeleted%(25)=� � pyrdeleted%(26)=� � =�
/�7� I=20 � pyrdeleted%(26)=� � pyrdeleted%(27)=� � =�
/�7� I=21 � pyrdeleted%(27)=� � pyrdeleted%(28)=� � =�
/�� I=22 � =�
/�� I=23 � =�
/�� I=24 � =�
/�� I=25 � =�
/�� I=26 � =�
/�� I=27 � =�
/�� I=28 � =�
/�=�
/�
0#��pyramid_movecard(icon%,name$)
0A� This procedure takes care of moving the card from the start
0A� location to the foundation, including moving cards round in
0 ,� piles and deleting the relevant icons.
0*� I
04,�seticonsprite(main%,pyrfoundhan%,name$)
0>cardmoved%=�
0H� icon%=pyrwastehan% �
0R  � I=1 � 23
0\#    pyrwaste%(I)=pyrwaste%(I+1)
0f	  � I
0p  pyrwaste%(24)=0
0z  � pyrwaste%(1)=0 �
0�3    �seticonsprite(main%,pyrwastehan%,"nocard")
0�  �
0�8    �seticonsprite(main%,pyrwastehan%,�pyrwaste%(1))
0�  �
0�  cardsleft%=cardsleft%-1
0�Q  ș"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+�cardsleft%
0��
0�  �blankicon(main%,icon%)
0�  � I=1 � 28
0�    � pyrlayhan%(I)=icon% �
0�      pyrdeleted%(I)=�
0�      pyrlay%(I)=0
0�	    �
1	  � I
1�
1�
1$
1.��pyramid_undo
18:� This procedure will undo the last action in Pyramid.
1B� I,temp1%,temp2%
1L&È™"WimpExt_ShadeEntry",,gmenu%,0,1
1V.� lasticon2%=-1 � lasticon1%=pyrpackhan% �
1`  � pyrwaste%(1)=0 �
1j    � I=1 � 24
1t%      pyrwaste%(25-I)=pyrpack%(I)
1~      pyrpack%(I)=0
1�    � I
1�    ȕ pyrwaste%(1)=0
1�      � I=1 � 24
1�'        pyrwaste%(I)=pyrwaste%(I+1)
1�
      � I
1�	    �
1�    deal%=deal%-1
1�C    ș"WimpExt_SetIconString",,,main%,dealhan%,"Deal : "+�deal%
1�8    �seticonsprite(main%,pyrwastehan%,�pyrwaste%(1))
1�2    �seticonsprite(main%,pyrpackhan%,"nocard")
1�  �
1�    � I=24 � 2 � -1
2#      pyrpack%(I)=pyrpack%(I-1)
2
    � I
2     pyrpack%(1)=pyrwaste%(1)
2    � I=1 � 23
2(%      pyrwaste%(I)=pyrwaste%(I+1)
22    � I
2<    pyrwaste%(24)=0
2Fy    � pyrwaste%(1)=0 � �seticonsprite(main%,pyrwastehan%,"nocard") � �seticonsprite(main%,pyrwastehan%,�pyrwaste%(1))
2P0    �seticonsprite(main%,pyrpackhan%,"back")
2Z  �
2d�
2n� lasticon2%=-1 �
2x  � lastval1%=13 �
2�A    � take the king off the foundation and put it back on the
2�    � layout or waste pile.
2�    temp1%=pyrfound%(1)
2�    � I=1 � 51
2�%      pyrfound%(I)=pyrfound%(I+1)
2�    � I
2�    pyrfound%(52)=0
2�#    � lasticon1%=pyrwastehan% �
2�      � I=24 � 2 � -1
2�'        pyrwaste%(I)=pyrwaste%(I-1)
2�
      � I
2�      pyrwaste%(1)=temp1%
2�:      �seticonsprite(main%,pyrwastehan%,�pyrwaste%(1))
3m      cardsleft%=cardsleft%+1:ș"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+�cardsleft%
3	    �
3
      I=1
3"      �
3,        I=I+1
36+      � I=28 � pyrlayhan%(I)=lasticon1%
3@&      � pyrlayhan%(I)=lasticon1% �
3J        pyrlay%(I)=temp1%
3T;        �seticonsprite(main%,pyrlayhan%(I),�pyrlay%(I))
3^        pyrdeleted%(I)=�
3h      �
3r	    �
3|    � pyrfound%(1)=0 �
3�5      �seticonsprite(main%,pyrfoundhan%,"nocard")
3�	    �
3�:      �seticonsprite(main%,pyrfoundhan%,�pyrfound%(1))
3�	    �
3�  �
3�0    ș"WimpExt_SetIcon",,,main%,lasticon1%,0
3�  �
3��
3�� lastval2%<>-1 �
3�9� Take the cards and put them into temp1% and temp2%.
3�-  temp2%=pyrfound%(1):temp1%=pyrfound%(2)
3�+� Shift the foundation back up 2 cards.
3�  � I=1 � 50
4#    pyrfound%(I)=pyrfound%(I+2)
4	  � I
4D� Put special cases in - if temp1% or temp2% are the foundation,
4&>� then put it back (single procedure), using PROCmovecard.
40!  � lasticon1%=pyrfoundhan% �
4:2    �seticonsprite(main%,pyrfoundhan%,�temp1%)
4D    � I=52 � 2 � -1
4N%      pyrfound%(I)=pyrfound%(I-1)
4X    � I
4b    pyrfound%(1)=temp1%
4l  �
4v!  � lasticon2%=pyrfoundhan% �
4�2    �seticonsprite(main%,pyrfoundhan%,�temp2%)
4�    � I=52 � 2 � -1
4�%      pyrfound%(I)=pyrfound%(I-1)
4�    � I
4�    pyrfound%(1)=temp2%
4�  �
4�<� Need similar check for waste pile, to move cards down.
4�!  � lasticon1%=pyrwastehan% �
4�2    �seticonsprite(main%,pyrwastehan%,�temp1%)
4�    � I=24 � 2 � -1
4�%      pyrwaste%(I)=pyrwaste%(I-1)
4�    � I
4�    pyrwaste%(1)=temp1%:cardsleft%=cardsleft%+1:ș"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+�cardsleft%
5  �
5!  � lasticon2%=pyrwastehan% �
52    �seticonsprite(main%,pyrwastehan%,�temp2%)
5     � I=24 � 2 � -1
5*%      pyrwaste%(I)=pyrwaste%(I-1)
54    � I
5>    pyrwaste%(1)=temp2%:cardsleft%=cardsleft%+1:ș"WimpExt_SetIconString",,,main%,cardslefthan%,"Cards left : "+�cardsleft%
5H  �
5R9� Put temp1% back on lasticon1% and reset the sprite.
5\=  � lasticon1%<>pyrfoundhan% � lasticon1%<>pyrwastehan% �
5f    I=1
5p	    �
5z      I=I+1
5�)    � lasticon1%=pyrlayhan%(I) � I=28
5�3    �seticonsprite(main%,pyrlayhan%(I),�temp1%)
5�*    pyrlay%(I)=temp1%:pyrdeleted%(I)=�
5�  �
5�9� Put temp 2 back on lasticon2% and reset the sprite.
5�=  � lasticon2%<>pyrfoundhan% � lasticon2%<>pyrwastehan% �
5�    I=1
5�	    �
5�      I=I+1
5�)    � lasticon2%=pyrlayhan%(I) � I=28
5�3    �seticonsprite(main%,pyrlayhan%(I),�temp2%)
5�*    pyrlay%(I)=temp2%:pyrdeleted%(I)=�
5�  �
6  � pyrfound%(1)=0 �
63    �seticonsprite(main%,pyrfoundhan%,"nocard")
6  �
6$8    �seticonsprite(main%,pyrfoundhan%,�pyrfound%(1))
6.  �
68�
6B9lasticon1%=-1:lasticon2%=-1:lastval1%=-1:lastval2%=-1
6L�
6V
6`��pyramid_score
6j<� This procedure will work out the score for this match.
6t� layoutleft%,buttons%
6~'layoutleft%=0:pyrgames%=pyrgames%+1
6�� I=1 � 28
6�1  � pyrlay%(I)<>0 � layoutleft%=layoutleft%+1
6�� I
6�Ȏ deal% �
6�  � 1 : score%=score%+50
6�  � 2 : score%=score%+35
6�  � 3 : score%=score%+20
6�%  � 4 : score%=score%-layoutleft%
6��
6�$score%=score%-cardsleft%:deal%=4
6�Tș"WimpExt_SetIconString",,,main%,scorehan%,"Score : "+�score%+" in "+�pyrgames%
6�� pyrgames%=6 �
7  � buttons% 4
7
  $(buttons%+0)="Begin"
7  � score%>=0 �
7�    ș"WimpExt_ControlImmediate",,2,"Pyramid","Congratulations! Your score of "+�score%+" was above par. Click 'Begin' for a new match.",buttons%,0
7(  �
72�    ș"WimpExt_ControlImmediate",,2,"Pyramid","Commiserations! Your score of "+�score%+" was below par. Click 'Begin' for a new match.",buttons%,0
7<  �
7Fpyrgames%=0:score%=0
7P�
7Z�newgame
7d�
7n
�
00000000  0d 00 0a 3d f4 20 21 4f  73 6d 6f 73 69 73 20 20  |...=. !Osmosis  |
00000010  2d 20 20 41 20 44 65 73  6b 74 6f 70 20 50 61 74  |-  A Desktop Pat|
00000020  69 65 6e 63 65 20 47 61  6d 65 20 62 79 20 4a 6f  |ience Game by Jo|
00000030  68 6e 20 50 65 74 74 69  67 72 65 77 2e 0d 00 14  |hn Pettigrew....|
00000040  5d 76 65 72 73 69 6f 6e  24 3d 22 30 2e 39 39 22  |]version$="0.99"|
00000050  3a 67 61 6d 65 25 3d 31  3a 6f 73 6d 6f 64 69 6d  |:game%=1:osmodim|
00000060  25 3d a3 3a 70 79 72 64  69 6d 25 3d a3 3a 70 6c  |%=.:pyrdim%=.:pl|
00000070  61 79 65 64 25 3d a3 3a  69 63 6f 6e 6e 75 6d 62  |ayed%=.:iconnumb|
00000080  65 72 25 3d 30 3a 70 79  72 67 61 6d 65 73 25 3d  |er%=0:pyrgames%=|
00000090  30 3a 73 63 6f 72 65 25  3d 30 0d 00 1e 04 0d 00  |0:score%=0......|
000000a0  28 3b f4 20 49 6e 69 74  69 61 6c 69 73 65 20 74  |(;. Initialise t|
000000b0  68 65 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 77  |he application w|
000000c0  69 74 68 20 74 68 65 20  57 49 4d 50 2c 20 69 6e  |ith the WIMP, in|
000000d0  73 74 61 6c 6c 20 74 68  65 0d 00 32 2a f4 20 69  |stall the..2*. i|
000000e0  63 6f 6e 62 61 72 20 69  63 6f 6e 20 61 6e 64 20  |conbar icon and |
000000f0  6c 6f 61 64 20 74 65 6d  70 6c 61 74 65 20 66 69  |load template fi|
00000100  6c 65 2e 0d 00 3c 0e f2  77 69 6d 70 5f 69 6e 69  |le...<..wimp_ini|
00000110  74 0d 00 46 04 0d 00 50  38 f4 20 4f 70 65 6e 20  |t..F...P8. Open |
00000120  73 74 61 72 74 75 70 20  62 61 6e 6e 65 72 2c 20  |startup banner, |
00000130  73 65 74 20 75 70 20 6d  65 6e 75 73 20 61 6e 64  |set up menus and|
00000140  20 62 75 69 6c 64 20 63  61 72 64 73 2e 0d 00 51  | build cards...Q|
00000150  0c de 20 70 25 20 32 35  36 0d 00 5a 25 c8 99 22  |.. p% 256..Z%.."|
00000160  57 69 6d 70 45 78 74 5f  4f 70 65 6e 57 69 6e 64  |WimpExt_OpenWind|
00000170  6f 77 54 6f 70 22 2c 62  61 6e 6e 65 72 25 0d 00  |owTop",banner%..|
00000180  64 15 c8 99 22 57 69 6d  70 5f 50 6f 6c 6c 22 2c  |d..."Wimp_Poll",|
00000190  2c 70 25 0d 00 6e 0d f2  6d 61 6b 65 6d 65 6e 75  |,p%..n..makemenu|
000001a0  0d 00 78 0f f2 62 75 69  6c 64 63 61 72 64 73 0d  |..x..buildcards.|
000001b0  00 79 0f 21 70 25 3d 62  61 6e 6e 65 72 25 0d 00  |.y.!p%=banner%..|
000001c0  8c 1c c8 99 22 57 69 6d  70 5f 43 6c 6f 73 65 57  |...."Wimp_CloseW|
000001d0  69 6e 64 6f 77 22 2c 2c  70 25 0d 00 96 04 0d 00  |indow",,p%......|
000001e0  a0 24 f4 20 4e 6f 77 20  70 65 72 66 6f 72 6d 20  |.$. Now perform |
000001f0  61 20 77 69 6d 70 20 70  6f 6c 6c 20 6c 6f 6f 70  |a wimp poll loop|
00000200  20 3a 0d 00 aa 05 f5 0d  00 b4 10 20 20 f2 77 69  | :.........  .wi|
00000210  6d 70 5f 70 6f 6c 6c 0d  00 be 0d fd 20 71 75 69  |mp_poll..... qui|
00000220  74 25 3d b9 0d 00 c8 21  c8 99 20 22 58 57 69 6d  |t%=....!.. "XWim|
00000230  70 45 78 74 5f 43 6c 6f  73 65 44 6f 77 6e 22 2c  |pExt_CloseDown",|
00000240  74 61 73 6b 25 0d 00 d2  18 c8 99 20 22 58 57 69  |task%...... "XWi|
00000250  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 22 0d 00 dc  |mp_CloseDown"...|
00000260  05 e0 0d 00 e6 04 0d 00  f0 0f dd f2 77 69 6d 70  |............wimp|
00000270  5f 69 6e 69 74 0d 00 fa  3e f4 20 54 68 69 73 20  |_init...>. This |
00000280  70 72 6f 63 65 64 75 72  65 20 77 69 6c 6c 20 72  |procedure will r|
00000290  65 67 69 73 74 65 72 20  74 68 65 20 70 72 6f 67  |egister the prog|
000002a0  72 61 6d 6d 65 20 77 69  74 68 20 74 68 65 20 57  |ramme with the W|
000002b0  49 4d 50 0d 01 04 27 f4  20 61 6e 64 20 73 65 74  |IMP...'. and set|
000002c0  20 75 70 20 74 68 65 20  69 63 6f 6e 20 62 61 72  | up the icon bar|
000002d0  20 69 63 6f 6e 20 65 74  63 2e 0d 01 0e 1e ea 20  | icon etc...... |
000002e0  77 69 6e 64 6f 77 25 2c  74 65 6d 70 6c 61 74 65  |window%,template|
000002f0  25 2c 69 6e 64 69 72 25  0d 01 18 3e c8 99 20 22  |%,indir%...>.. "|
00000300  4f 53 5f 46 69 6c 65 22  2c 31 37 2c 22 3c 4f 73  |OS_File",17,"<Os|
00000310  6d 6f 73 69 73 24 44 69  72 3e 2e 53 70 72 69 74  |mosis$Dir>.Sprit|
00000320  65 73 22 20 b8 20 74 79  70 65 25 2c 2c 2c 2c 6c  |es" . type%,,,,l|
00000330  65 6e 67 74 68 25 0d 01  22 4b e7 20 74 79 70 65  |ength%.."K. type|
00000340  25 3c 3e 31 20 84 20 6c  65 6e 67 74 68 25 3c 3e  |%<>1 . length%<>|
00000350  34 30 33 32 34 20 8c 20  85 28 30 2c 22 49 6e 63  |40324 . .(0,"Inc|
00000360  6f 72 72 65 63 74 20 6f  72 20 6d 69 73 73 69 6e  |orrect or missin|
00000370  67 20 53 70 72 69 74 65  73 20 66 69 6c 65 2e 22  |g Sprites file."|
00000380  29 0d 01 2c 3f de 20 71  25 20 32 35 36 2c 73 70  |)..,?. q% 256,sp|
00000390  72 69 74 65 25 20 32 38  35 30 30 30 2c 77 69 6e  |rite% 285000,win|
000003a0  64 6f 77 25 20 38 2c 74  65 6d 70 6c 61 74 65 25  |dow% 8,template%|
000003b0  20 31 30 32 34 2c 69 6e  64 69 72 25 20 32 35 36  | 1024,indir% 256|
000003c0  0d 01 36 13 21 73 70 72  69 74 65 25 3d 32 38 35  |..6.!sprite%=285|
000003d0  30 30 30 0d 01 40 39 c8  99 20 22 4f 53 5f 53 70  |000..@9.. "OS_Sp|
000003e0  72 69 74 65 4f 70 22 2c  26 31 30 41 2c 73 70 72  |riteOp",&10A,spr|
000003f0  69 74 65 25 2c 22 3c 4f  73 6d 6f 73 69 73 24 44  |ite%,"<Osmosis$D|
00000400  69 72 3e 2e 53 70 72 69  74 65 73 22 0d 01 4a 3b  |ir>.Sprites"..J;|
00000410  c8 99 20 22 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |.. "Wimp_Initial|
00000420  69 73 65 22 2c 33 31 30  2c 26 34 42 35 33 34 31  |ise",310,&4B5341|
00000430  35 34 2c 30 2c 22 4f 73  6d 6f 73 69 73 22 20 b8  |54,0,"Osmosis" .|
00000440  20 2c 74 61 73 6b 25 0d  01 54 38 c8 99 20 22 57  | ,task%..T8.. "W|
00000450  69 6d 70 45 78 74 5f 49  6e 69 74 69 61 6c 69 73  |impExt_Initialis|
00000460  65 22 2c 31 36 2c 74 61  73 6b 25 2c 25 31 31 31  |e",16,task%,%111|
00000470  31 30 31 30 30 31 31 2c  73 70 72 69 74 65 25 0d  |1010011,sprite%.|
00000480  01 5e 31 c8 99 20 22 57  69 6d 70 45 78 74 5f 49  |.^1.. "WimpExt_I|
00000490  63 6f 6e 42 61 72 53 70  72 69 74 65 22 2c 2c 2c  |conBarSprite",,,|
000004a0  2d 31 2c 22 21 6f 73 6d  6f 73 69 73 22 2c 2c 33  |-1,"!osmosis",,3|
000004b0  0d 01 68 21 77 69 6e 64  6f 77 25 21 34 3d 25 31  |..h!window%!4=%1|
000004c0  30 31 3a 77 69 6e 64 6f  77 25 21 38 3d 25 31 30  |01:window%!8=%10|
000004d0  31 0d 01 72 67 c8 99 20  22 57 69 6d 70 45 78 74  |1..rg.. "WimpExt|
000004e0  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 73 22 2c  |_LoadTemplates",|
000004f0  77 69 6e 64 6f 77 25 2c  74 65 6d 70 6c 61 74 65  |window%,template|
00000500  25 2c 69 6e 64 69 72 25  2c 69 6e 64 69 72 25 2b  |%,indir%,indir%+|
00000510  32 35 36 2c 2d 31 2c 22  3c 4f 73 6d 6f 73 69 73  |256,-1,"<Osmosis|
00000520  24 44 69 72 3e 2e 54 65  6d 70 6c 61 74 65 73 22  |$Dir>.Templates"|
00000530  2c 73 70 72 69 74 65 25  0d 01 7c 34 69 6e 66 6f  |,sprite%..|4info|
00000540  25 3d 21 77 69 6e 64 6f  77 25 3a 6d 61 69 6e 25  |%=!window%:main%|
00000550  3d 77 69 6e 64 6f 77 25  21 34 3a 62 61 6e 6e 65  |=window%!4:banne|
00000560  72 25 3d 77 69 6e 64 6f  77 25 21 38 0d 01 86 13  |r%=window%!8....|
00000570  71 75 69 74 25 3d 30 3a  6d 65 6e 75 25 3d 30 0d  |quit%=0:menu%=0.|
00000580  01 90 05 e1 0d 01 9a 04  0d 01 a4 0e dd f2 6d 61  |..............ma|
00000590  6b 65 6d 65 6e 75 0d 01  ae 18 f4 20 43 72 65 61  |kemenu..... Crea|
000005a0  74 65 73 20 74 68 65 20  6d 65 6e 75 73 2e 0d 01  |tes the menus...|
000005b0  b8 1a de 20 69 6d 65 6e  75 25 20 39 36 2c 67 6d  |... imenu% 96,gm|
000005c0  65 6e 75 25 20 31 35 32  0d 01 c2 15 24 69 6d 65  |enu% 152....$ime|
000005d0  6e 75 25 3d 22 4f 73 6d  6f 73 69 73 22 0d 01 cc  |nu%="Osmosis"...|
000005e0  14 69 6d 65 6e 75 25 21  31 32 3d 26 37 30 32 30  |.imenu%!12=&7020|
000005f0  37 0d 01 d6 35 69 6d 65  6e 75 25 21 31 36 3d 31  |7...5imenu%!16=1|
00000600  36 2a 38 3a f4 20 54 68  69 73 20 73 65 74 73 20  |6*8:. This sets |
00000610  74 68 65 20 77 69 64 74  68 20 6f 66 20 74 68 65  |the width of the|
00000620  20 6d 65 6e 75 2e 0d 01  e0 10 69 6d 65 6e 75 25  | menu.....imenu%|
00000630  21 32 30 3d 34 34 0d 01  ea 0f 69 6d 65 6e 75 25  |!20=44....imenu%|
00000640  21 32 34 3d 30 0d 01 f4  0f 69 6d 65 6e 75 25 21  |!24=0....imenu%!|
00000650  32 38 3d 30 0d 01 fe 13  69 6d 65 6e 75 25 21 33  |28=0....imenu%!3|
00000660  32 3d 69 6e 66 6f 25 0d  02 08 16 69 6d 65 6e 75  |2=info%....imenu|
00000670  25 21 33 36 3d 26 37 30  30 30 30 32 31 0d 02 12  |%!36=&7000021...|
00000680  17 24 28 69 6d 65 6e 75  25 2b 34 30 29 3d 22 49  |.$(imenu%+40)="I|
00000690  6e 66 6f 22 0d 02 1c 0f  69 6d 65 6e 75 25 21 35  |nfo"....imenu%!5|
000006a0  32 3d 32 0d 02 26 0f 69  6d 65 6e 75 25 21 35 36  |2=2..&.imenu%!56|
000006b0  3d 30 0d 02 30 16 69 6d  65 6e 75 25 21 36 30 3d  |=0..0.imenu%!60=|
000006c0  26 37 30 30 30 30 32 31  0d 02 3a 1a 24 28 69 6d  |&7000021..:.$(im|
000006d0  65 6e 75 25 2b 36 34 29  3d 22 4f 73 6d 6f 73 69  |enu%+64)="Osmosi|
000006e0  73 22 0d 02 44 11 69 6d  65 6e 75 25 21 37 36 3d  |s"..D.imenu%!76=|
000006f0  31 32 38 0d 02 4e 0f 69  6d 65 6e 75 25 21 38 30  |128..N.imenu%!80|
00000700  3d 30 0d 02 58 16 69 6d  65 6e 75 25 21 38 34 3d  |=0..X.imenu%!84=|
00000710  26 37 30 30 30 30 32 31  0d 02 62 17 24 28 69 6d  |&7000021..b.$(im|
00000720  65 6e 75 25 2b 38 38 29  3d 22 51 75 69 74 22 0d  |enu%+88)="Quit".|
00000730  02 6c 17 24 67 6d 65 6e  75 25 3d 22 47 61 6d 65  |.l.$gmenu%="Game|
00000740  20 4d 65 6e 75 22 0d 02  76 14 67 6d 65 6e 75 25  | Menu"..v.gmenu%|
00000750  21 31 32 3d 26 37 30 32  30 37 0d 02 80 36 67 6d  |!12=&70207...6gm|
00000760  65 6e 75 25 21 31 36 3d  31 36 2a 31 30 3a f4 20  |enu%!16=16*10:. |
00000770  54 68 69 73 20 73 65 74  73 20 74 68 65 20 77 69  |This sets the wi|
00000780  64 74 68 20 6f 66 20 74  68 65 20 6d 65 6e 75 2e  |dth of the menu.|
00000790  0d 02 8a 10 67 6d 65 6e  75 25 21 32 30 3d 34 34  |....gmenu%!20=44|
000007a0  0d 02 94 0f 67 6d 65 6e  75 25 21 32 34 3d 30 0d  |....gmenu%!24=0.|
000007b0  02 9e 0f 67 6d 65 6e 75  25 21 32 38 3d 30 0d 02  |...gmenu%!28=0..|
000007c0  a8 0f 67 6d 65 6e 75 25  21 33 32 3d 30 0d 02 b2  |..gmenu%!32=0...|
000007d0  16 67 6d 65 6e 75 25 21  33 36 3d 26 37 30 30 30  |.gmenu%!36=&7000|
000007e0  30 32 31 0d 02 bc 17 24  28 67 6d 65 6e 75 25 2b  |021....$(gmenu%+|
000007f0  34 30 29 3d 22 55 6e 64  6f 22 0d 02 c6 0f 67 6d  |40)="Undo"....gm|
00000800  65 6e 75 25 21 35 32 3d  32 0d 02 d0 0f 67 6d 65  |enu%!52=2....gme|
00000810  6e 75 25 21 35 36 3d 30  0d 02 da 16 67 6d 65 6e  |nu%!56=0....gmen|
00000820  75 25 21 36 30 3d 26 37  30 30 30 30 32 31 0d 02  |u%!60=&7000021..|
00000830  e4 19 24 28 67 6d 65 6e  75 25 2b 36 34 29 3d 22  |..$(gmenu%+64)="|
00000840  52 65 73 69 67 6e 22 0d  02 ee 0f 67 6d 65 6e 75  |Resign"....gmenu|
00000850  25 21 37 36 3d 30 0d 02  f8 0f 67 6d 65 6e 75 25  |%!76=0....gmenu%|
00000860  21 38 30 3d 30 0d 03 02  16 67 6d 65 6e 75 25 21  |!80=0....gmenu%!|
00000870  38 34 3d 26 37 30 30 30  30 32 31 0d 03 0c 1a 24  |84=&7000021....$|
00000880  28 67 6d 65 6e 75 25 2b  38 38 29 3d 22 4f 73 6d  |(gmenu%+88)="Osm|
00000890  6f 73 69 73 22 0d 03 16  10 67 6d 65 6e 75 25 21  |osis"....gmenu%!|
000008a0  31 30 30 3d 32 0d 03 20  10 67 6d 65 6e 75 25 21  |100=2.. .gmenu%!|
000008b0  31 30 34 3d 30 0d 03 2a  17 67 6d 65 6e 75 25 21  |104=0..*.gmenu%!|
000008c0  31 30 38 3d 26 37 30 30  30 30 32 31 0d 03 34 1b  |108=&7000021..4.|
000008d0  24 28 67 6d 65 6e 75 25  2b 31 31 32 29 3d 22 50  |$(gmenu%+112)="P|
000008e0  79 72 61 6d 69 64 22 0d  03 3e 12 67 6d 65 6e 75  |yramid"..>.gmenu|
000008f0  25 21 31 32 34 3d 31 32  38 0d 03 48 10 67 6d 65  |%!124=128..H.gme|
00000900  6e 75 25 21 31 32 38 3d  30 0d 03 52 17 67 6d 65  |nu%!128=0..R.gme|
00000910  6e 75 25 21 31 33 32 3d  26 37 30 30 30 30 32 31  |nu%!132=&7000021|
00000920  0d 03 5c 18 24 28 67 6d  65 6e 75 25 2b 31 33 36  |..\.$(gmenu%+136|
00000930  29 3d 22 51 75 69 74 22  0d 03 66 26 c8 99 22 57  |)="Quit"..f&.."W|
00000940  69 6d 70 45 78 74 5f 53  68 61 64 65 45 6e 74 72  |impExt_ShadeEntr|
00000950  79 22 2c 2c 67 6d 65 6e  75 25 2c 30 2c 31 0d 03  |y",,gmenu%,0,1..|
00000960  70 05 e1 0d 03 7a 04 0d  03 84 10 dd f2 62 75 69  |p....z.......bui|
00000970  6c 64 63 61 72 64 73 0d  03 8e 33 ea 20 74 65 6d  |ldcards...3. tem|
00000980  70 73 70 72 69 74 65 24  2c 74 65 6d 70 73 70 72  |psprite$,tempspr|
00000990  69 74 65 32 24 2c 49 2c  74 65 6d 70 76 61 6c 25  |ite2$,I,tempval%|
000009a0  2c 74 65 6d 70 73 75 69  74 24 0d 03 98 43 f4 20  |,tempsuit$...C. |
000009b0  54 68 69 73 20 70 72 6f  63 65 64 75 72 65 20 28  |This procedure (|
000009c0  61 6e 64 20 69 74 73 20  73 75 62 70 72 6f 63 65  |and its subproce|
000009d0  64 75 72 65 73 29 20 6d  61 6b 65 73 20 74 68 65  |dures) makes the|
000009e0  20 66 75 6c 6c 20 35 32  20 63 61 72 64 0d 03 a2  | full 52 card...|
000009f0  36 f4 20 73 70 72 69 74  65 73 20 6f 75 74 20 6f  |6. sprites out o|
00000a00  66 20 74 68 65 20 65 6c  65 6d 65 6e 74 73 20 69  |f the elements i|
00000a10  6e 20 74 68 65 20 53 70  72 69 74 65 73 20 66 69  |n the Sprites fi|
00000a20  6c 65 2e 0d 03 ac 42 f4  20 46 69 72 73 74 2c 20  |le....B. First, |
00000a30  63 6f 70 79 20 74 68 65  20 68 61 6c 66 63 61 72  |copy the halfcar|
00000a40  64 20 73 70 72 69 74 65  20 69 6e 74 6f 20 34 20  |d sprite into 4 |
00000a50  74 65 6d 70 6f 72 61 72  79 20 73 70 72 69 74 65  |temporary sprite|
00000a60  73 20 61 6e 64 0d 03 b6  2b f4 20 6d 61 6b 65 20  |s and...+. make |
00000a70  74 68 65 20 74 68 65 20  74 65 6d 70 6c 61 74 65  |the the template|
00000a80  20 73 75 69 74 20 68 61  6c 66 63 61 72 64 73 2e  | suit halfcards.|
00000a90  0d 03 c0 36 c8 99 22 4f  53 5f 53 70 72 69 74 65  |...6.."OS_Sprite|
00000aa0  4f 70 22 2c 32 35 36 2b  32 37 2c 73 70 72 69 74  |Op",256+27,sprit|
00000ab0  65 25 2c 22 68 61 6c 66  63 61 72 64 22 2c 22 68  |e%,"halfcard","h|
00000ac0  65 61 72 74 73 22 0d 03  ca 36 c8 99 22 4f 53 5f  |earts"...6.."OS_|
00000ad0  53 70 72 69 74 65 4f 70  22 2c 32 35 36 2b 32 37  |SpriteOp",256+27|
00000ae0  2c 73 70 72 69 74 65 25  2c 22 68 61 6c 66 63 61  |,sprite%,"halfca|
00000af0  72 64 22 2c 22 73 70 61  64 65 73 22 0d 03 d4 35  |rd","spades"...5|
00000b00  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00000b10  32 35 36 2b 32 37 2c 73  70 72 69 74 65 25 2c 22  |256+27,sprite%,"|
00000b20  68 61 6c 66 63 61 72 64  22 2c 22 63 6c 75 62 73  |halfcard","clubs|
00000b30  22 0d 03 de 38 c8 99 22  4f 53 5f 53 70 72 69 74  |"...8.."OS_Sprit|
00000b40  65 4f 70 22 2c 32 35 36  2b 32 37 2c 73 70 72 69  |eOp",256+27,spri|
00000b50  74 65 25 2c 22 68 61 6c  66 63 61 72 64 22 2c 22  |te%,"halfcard","|
00000b60  64 69 61 6d 6f 6e 64 73  22 0d 03 e8 2a f2 64 72  |diamonds"...*.dr|
00000b70  61 77 73 70 72 69 74 65  28 22 68 65 61 72 74 73  |awsprite("hearts|
00000b80  22 2c 22 73 6d 5f 68 65  61 72 74 22 2c 31 38 2c  |","sm_heart",18,|
00000b90  34 36 29 0d 03 f2 2a f2  64 72 61 77 73 70 72 69  |46)...*.drawspri|
00000ba0  74 65 28 22 73 70 61 64  65 73 22 2c 22 73 6d 5f  |te("spades","sm_|
00000bb0  73 70 61 64 65 22 2c 31  38 2c 34 36 29 0d 03 fc  |spade",18,46)...|
00000bc0  28 f2 64 72 61 77 73 70  72 69 74 65 28 22 63 6c  |(.drawsprite("cl|
00000bd0  75 62 73 22 2c 22 73 6d  5f 63 6c 75 62 22 2c 31  |ubs","sm_club",1|
00000be0  38 2c 34 36 29 0d 04 06  2b f2 64 72 61 77 73 70  |8,46)...+.drawsp|
00000bf0  72 69 74 65 28 22 64 69  61 6d 6f 6e 64 73 22 2c  |rite("diamonds",|
00000c00  22 73 6d 5f 64 69 61 6d  22 2c 31 38 2c 34 36 29  |"sm_diam",18,46)|
00000c10  0d 04 10 32 f4 20 4e 6f  77 20 6d 61 6b 65 20 74  |...2. Now make t|
00000c20  68 65 20 6e 75 6d 62 65  72 20 63 61 72 64 73 20  |he number cards |
00000c30  28 77 68 6f 6c 65 2c 20  6e 6f 74 20 68 61 6c 66  |(whole, not half|
00000c40  29 2e 0d 04 1a 0e e3 20  49 3d 31 20 b8 20 35 32  |)...... I=1 . 52|
00000c50  0d 04 24 36 20 20 e7 20  49 3c 31 34 20 8c 20 f2  |..$6  . I<14 . .|
00000c60  61 64 64 73 70 72 69 74  65 28 22 68 65 61 72 74  |addsprite("heart|
00000c70  73 22 2c c3 49 2c 22 72  65 64 5f 22 2b c3 49 2c  |s",.I,"red_"+.I,|
00000c80  31 38 2c 37 30 29 0d 04  2e 44 20 20 e7 20 49 3e  |18,70)...D  . I>|
00000c90  31 33 20 80 20 49 3c 32  37 20 8c 20 f2 61 64 64  |13 . I<27 . .add|
00000ca0  73 70 72 69 74 65 28 22  64 69 61 6d 6f 6e 64 73  |sprite("diamonds|
00000cb0  22 2c c3 49 2c 22 72 65  64 5f 22 2b c3 28 49 2d  |",.I,"red_"+.(I-|
00000cc0  31 33 29 2c 31 38 2c 37  30 29 0d 04 38 43 20 20  |13),18,70)..8C  |
00000cd0  e7 20 49 3e 32 36 20 80  20 49 3c 34 30 20 8c 20  |. I>26 . I<40 . |
00000ce0  f2 61 64 64 73 70 72 69  74 65 28 22 63 6c 75 62  |.addsprite("club|
00000cf0  73 22 2c c3 49 2c 22 62  6c 61 63 6b 5f 22 2b c3  |s",.I,"black_"+.|
00000d00  28 49 2d 32 36 29 2c 31  38 2c 37 30 29 0d 04 42  |(I-26),18,70)..B|
00000d10  3d 20 20 e7 20 49 3e 33  39 20 8c 20 f2 61 64 64  |=  . I>39 . .add|
00000d20  73 70 72 69 74 65 28 22  73 70 61 64 65 73 22 2c  |sprite("spades",|
00000d30  c3 49 2c 22 62 6c 61 63  6b 5f 22 2b c3 28 49 2d  |.I,"black_"+.(I-|
00000d40  33 39 29 2c 31 38 2c 37  30 29 0d 04 4c 33 20 20  |39),18,70)..L3  |
00000d50  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00000d60  32 35 36 2b 32 37 2c 73  70 72 69 74 65 25 2c c3  |256+27,sprite%,.|
00000d70  49 2c 74 65 6d 70 73 70  72 69 74 65 24 0d 04 56  |I,tempsprite$..V|
00000d80  30 20 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |0  .."OS_SpriteO|
00000d90  70 22 2c 32 35 36 2b 33  33 2c 73 70 72 69 74 65  |p",256+33,sprite|
00000da0  25 2c 74 65 6d 70 73 70  72 69 74 65 24 0d 04 60  |%,tempsprite$..`|
00000db0  30 20 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |0  .."OS_SpriteO|
00000dc0  70 22 2c 32 35 36 2b 34  37 2c 73 70 72 69 74 65  |p",256+47,sprite|
00000dd0  25 2c 74 65 6d 70 73 70  72 69 74 65 24 0d 04 6a  |%,tempsprite$..j|
00000de0  35 20 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |5  .."OS_SpriteO|
00000df0  70 22 2c 32 35 36 2b 33  35 2c 73 70 72 69 74 65  |p",256+35,sprite|
00000e00  25 2c c3 49 2c 74 65 6d  70 73 70 72 69 74 65 24  |%,.I,tempsprite$|
00000e10  2c 31 0d 04 74 07 ed 20  49 0d 04 7e 3b f4 20 4e  |,1..t.. I..~;. N|
00000e20  6f 77 20 74 6f 20 66 69  6e 69 73 68 20 6f 66 66  |ow to finish off|
00000e30  20 74 68 65 20 63 61 72  64 73 20 62 79 20 61 64  | the cards by ad|
00000e40  64 69 6e 67 20 74 68 65  20 64 65 63 6f 72 61 74  |ding the decorat|
00000e50  69 6f 6e 2e 0d 04 88 0e  e3 20 49 3d 31 20 b8 20  |ion...... I=1 . |
00000e60  35 32 0d 04 92 1a 20 20  74 65 6d 70 76 61 6c 25  |52....  tempval%|
00000e70  3d a4 63 61 72 64 76 61  6c 28 49 29 0d 04 9c 0e  |=.cardval(I)....|
00000e80  20 20 e7 20 49 3c 31 34  20 8c 0d 04 a6 17 20 20  |  . I<14 .....  |
00000e90  20 20 e7 20 74 65 6d 70  76 61 6c 25 3c 31 31 20  |  . tempval%<11 |
00000ea0  8c 0d 04 b0 31 20 20 20  20 20 20 74 65 6d 70 73  |....1      temps|
00000eb0  75 69 74 24 3d 22 68 65  61 72 74 22 3a 74 65 6d  |uit$="heart":tem|
00000ec0  70 73 70 72 69 74 65 24  3d 22 6d 5f 68 65 61 72  |psprite$="m_hear|
00000ed0  74 22 0d 04 ba 3f 20 20  20 20 20 20 c8 99 22 4f  |t"...?      .."O|
00000ee0  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00000ef0  32 37 2c 73 70 72 69 74  65 25 2c 22 6d 5f 68 65  |27,sprite%,"m_he|
00000f00  61 72 74 22 2c 74 65 6d  70 73 70 72 69 74 65 32  |art",tempsprite2|
00000f10  24 0d 04 c4 35 20 20 20  20 20 20 c8 99 22 4f 53  |$...5      .."OS|
00000f20  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 33  |_SpriteOp",256+3|
00000f30  33 2c 73 70 72 69 74 65  25 2c 74 65 6d 70 73 70  |3,sprite%,tempsp|
00000f40  72 69 74 65 32 24 0d 04  ce 09 20 20 20 20 cc 0d  |rite2$....    ..|
00000f50  04 d8 17 20 20 20 20 20  20 c8 8e 20 74 65 6d 70  |...      .. temp|
00000f60  76 61 6c 25 20 ca 0d 04  e2 2b 20 20 20 20 20 20  |val% ....+      |
00000f70  20 20 c9 20 31 31 3a 20  74 65 6d 70 73 70 72 69  |  . 11: tempspri|
00000f80  74 65 24 3d 22 6a 61 63  6b 5f 68 65 61 72 74 73  |te$="jack_hearts|
00000f90  22 0d 04 ec 2c 20 20 20  20 20 20 20 20 c9 20 31  |"...,        . 1|
00000fa0  32 3a 20 74 65 6d 70 73  70 72 69 74 65 24 3d 22  |2: tempsprite$="|
00000fb0  71 75 65 65 6e 5f 68 65  61 72 74 73 22 0d 04 f6  |queen_hearts"...|
00000fc0  2b 20 20 20 20 20 20 20  20 c9 20 31 33 3a 20 74  |+        . 13: t|
00000fd0  65 6d 70 73 70 72 69 74  65 24 3d 22 6b 69 6e 67  |empsprite$="king|
00000fe0  5f 68 65 61 72 74 73 22  0d 05 00 0b 20 20 20 20  |_hearts"....    |
00000ff0  20 20 cb 0d 05 0a 41 20  20 20 20 20 20 c8 99 22  |  ....A      .."|
00001000  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
00001010  2b 32 37 2c 73 70 72 69  74 65 25 2c 74 65 6d 70  |+27,sprite%,temp|
00001020  73 70 72 69 74 65 24 2c  74 65 6d 70 73 70 72 69  |sprite$,tempspri|
00001030  74 65 32 24 0d 05 14 35  20 20 20 20 20 20 c8 99  |te2$...5      ..|
00001040  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 32 35  |"OS_SpriteOp",25|
00001050  36 2b 33 33 2c 73 70 72  69 74 65 25 2c 74 65 6d  |6+33,sprite%,tem|
00001060  70 73 70 72 69 74 65 32  24 0d 05 1e 35 20 20 20  |psprite2$...5   |
00001070  20 20 20 c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |   .."OS_SpriteO|
00001080  70 22 2c 32 35 36 2b 34  37 2c 73 70 72 69 74 65  |p",256+47,sprite|
00001090  25 2c 74 65 6d 70 73 70  72 69 74 65 32 24 0d 05  |%,tempsprite2$..|
000010a0  28 43 20 20 20 20 20 20  c8 99 22 4f 53 5f 53 70  |(C      .."OS_Sp|
000010b0  72 69 74 65 4f 70 22 2c  32 35 36 2b 33 35 2c 73  |riteOp",256+35,s|
000010c0  70 72 69 74 65 25 2c 74  65 6d 70 73 70 72 69 74  |prite%,tempsprit|
000010d0  65 24 2c 74 65 6d 70 73  70 72 69 74 65 32 24 2c  |e$,tempsprite2$,|
000010e0  31 0d 05 32 09 20 20 20  20 cd 0d 05 3c 07 20 20  |1..2.    ...<.  |
000010f0  cd 0d 05 46 15 20 20 e7  20 49 3e 31 33 20 80 20  |...F.  . I>13 . |
00001100  49 3c 32 37 20 8c 0d 05  50 17 20 20 20 20 e7 20  |I<27 ...P.    . |
00001110  74 65 6d 70 76 61 6c 25  3c 31 31 20 8c 0d 05 5a  |tempval%<11 ...Z|
00001120  2f 20 20 20 20 20 20 74  65 6d 70 73 75 69 74 24  |/      tempsuit$|
00001130  3d 22 64 69 61 6d 22 3a  74 65 6d 70 73 70 72 69  |="diam":tempspri|
00001140  74 65 24 3d 22 6d 5f 64  69 61 6d 22 0d 05 64 3e  |te$="m_diam"..d>|
00001150  20 20 20 20 20 20 c8 99  22 4f 53 5f 53 70 72 69  |      .."OS_Spri|
00001160  74 65 4f 70 22 2c 32 35  36 2b 32 37 2c 73 70 72  |teOp",256+27,spr|
00001170  69 74 65 25 2c 22 6d 5f  64 69 61 6d 22 2c 74 65  |ite%,"m_diam",te|
00001180  6d 70 73 70 72 69 74 65  32 24 0d 05 6e 35 20 20  |mpsprite2$..n5  |
00001190  20 20 20 20 c8 99 22 4f  53 5f 53 70 72 69 74 65  |    .."OS_Sprite|
000011a0  4f 70 22 2c 32 35 36 2b  33 33 2c 73 70 72 69 74  |Op",256+33,sprit|
000011b0  65 25 2c 74 65 6d 70 73  70 72 69 74 65 32 24 0d  |e%,tempsprite2$.|
000011c0  05 78 09 20 20 20 20 cc  0d 05 82 17 20 20 20 20  |.x.    .....    |
000011d0  20 20 c8 8e 20 74 65 6d  70 76 61 6c 25 20 ca 0d  |  .. tempval% ..|
000011e0  05 8c 29 20 20 20 20 20  20 20 20 c9 20 31 31 3a  |..)        . 11:|
000011f0  20 74 65 6d 70 73 70 72  69 74 65 24 3d 22 6a 61  | tempsprite$="ja|
00001200  63 6b 5f 64 69 61 6d 22  0d 05 96 2a 20 20 20 20  |ck_diam"...*    |
00001210  20 20 20 20 c9 20 31 32  3a 20 74 65 6d 70 73 70  |    . 12: tempsp|
00001220  72 69 74 65 24 3d 22 71  75 65 65 6e 5f 64 69 61  |rite$="queen_dia|
00001230  6d 22 0d 05 a0 29 20 20  20 20 20 20 20 20 c9 20  |m"...)        . |
00001240  31 33 3a 20 74 65 6d 70  73 70 72 69 74 65 24 3d  |13: tempsprite$=|
00001250  22 6b 69 6e 67 5f 64 69  61 6d 22 0d 05 aa 0b 20  |"king_diam".... |
00001260  20 20 20 20 20 cb 0d 05  b4 41 20 20 20 20 20 20  |     ....A      |
00001270  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00001280  32 35 36 2b 32 37 2c 73  70 72 69 74 65 25 2c 74  |256+27,sprite%,t|
00001290  65 6d 70 73 70 72 69 74  65 24 2c 74 65 6d 70 73  |empsprite$,temps|
000012a0  70 72 69 74 65 32 24 0d  05 be 35 20 20 20 20 20  |prite2$...5     |
000012b0  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
000012c0  2c 32 35 36 2b 33 33 2c  73 70 72 69 74 65 25 2c  |,256+33,sprite%,|
000012d0  74 65 6d 70 73 70 72 69  74 65 32 24 0d 05 c8 35  |tempsprite2$...5|
000012e0  20 20 20 20 20 20 c8 99  22 4f 53 5f 53 70 72 69  |      .."OS_Spri|
000012f0  74 65 4f 70 22 2c 32 35  36 2b 34 37 2c 73 70 72  |teOp",256+47,spr|
00001300  69 74 65 25 2c 74 65 6d  70 73 70 72 69 74 65 32  |ite%,tempsprite2|
00001310  24 0d 05 d2 43 20 20 20  20 20 20 c8 99 22 4f 53  |$...C      .."OS|
00001320  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 33  |_SpriteOp",256+3|
00001330  35 2c 73 70 72 69 74 65  25 2c 74 65 6d 70 73 70  |5,sprite%,tempsp|
00001340  72 69 74 65 24 2c 74 65  6d 70 73 70 72 69 74 65  |rite$,tempsprite|
00001350  32 24 2c 31 0d 05 dc 09  20 20 20 20 cd 0d 05 e6  |2$,1....    ....|
00001360  07 20 20 cd 0d 05 f0 15  20 20 e7 20 49 3e 32 36  |.  .....  . I>26|
00001370  20 80 20 49 3c 34 30 20  8c 0d 05 fa 17 20 20 20  | . I<40 .....   |
00001380  20 e7 20 74 65 6d 70 76  61 6c 25 3c 31 31 20 8c  | . tempval%<11 .|
00001390  0d 06 04 2f 20 20 20 20  20 20 74 65 6d 70 73 75  |.../      tempsu|
000013a0  69 74 24 3d 22 63 6c 75  62 22 3a 74 65 6d 70 73  |it$="club":temps|
000013b0  70 72 69 74 65 24 3d 22  6d 5f 63 6c 75 62 22 0d  |prite$="m_club".|
000013c0  06 0e 3e 20 20 20 20 20  20 c8 99 22 4f 53 5f 53  |..>      .."OS_S|
000013d0  70 72 69 74 65 4f 70 22  2c 32 35 36 2b 32 37 2c  |priteOp",256+27,|
000013e0  73 70 72 69 74 65 25 2c  22 6d 5f 63 6c 75 62 22  |sprite%,"m_club"|
000013f0  2c 74 65 6d 70 73 70 72  69 74 65 32 24 0d 06 18  |,tempsprite2$...|
00001400  35 20 20 20 20 20 20 c8  99 22 4f 53 5f 53 70 72  |5      .."OS_Spr|
00001410  69 74 65 4f 70 22 2c 32  35 36 2b 33 33 2c 73 70  |iteOp",256+33,sp|
00001420  72 69 74 65 25 2c 74 65  6d 70 73 70 72 69 74 65  |rite%,tempsprite|
00001430  32 24 0d 06 22 09 20 20  20 20 cc 0d 06 2c 17 20  |2$..".    ...,. |
00001440  20 20 20 20 20 c8 8e 20  74 65 6d 70 76 61 6c 25  |     .. tempval%|
00001450  20 ca 0d 06 36 2a 20 20  20 20 20 20 20 20 c9 20  | ...6*        . |
00001460  31 31 3a 20 74 65 6d 70  73 70 72 69 74 65 24 3d  |11: tempsprite$=|
00001470  22 6a 61 63 6b 5f 63 6c  75 62 73 22 0d 06 40 2b  |"jack_clubs"..@+|
00001480  20 20 20 20 20 20 20 20  c9 20 31 32 3a 20 74 65  |        . 12: te|
00001490  6d 70 73 70 72 69 74 65  24 3d 22 71 75 65 65 6e  |mpsprite$="queen|
000014a0  5f 63 6c 75 62 73 22 0d  06 4a 2a 20 20 20 20 20  |_clubs"..J*     |
000014b0  20 20 20 c9 20 31 33 3a  20 74 65 6d 70 73 70 72  |   . 13: tempspr|
000014c0  69 74 65 24 3d 22 6b 69  6e 67 5f 63 6c 75 62 73  |ite$="king_clubs|
000014d0  22 0d 06 54 0b 20 20 20  20 20 20 cb 0d 06 5e 41  |"..T.      ...^A|
000014e0  20 20 20 20 20 20 c8 99  22 4f 53 5f 53 70 72 69  |      .."OS_Spri|
000014f0  74 65 4f 70 22 2c 32 35  36 2b 32 37 2c 73 70 72  |teOp",256+27,spr|
00001500  69 74 65 25 2c 74 65 6d  70 73 70 72 69 74 65 24  |ite%,tempsprite$|
00001510  2c 74 65 6d 70 73 70 72  69 74 65 32 24 0d 06 68  |,tempsprite2$..h|
00001520  35 20 20 20 20 20 20 c8  99 22 4f 53 5f 53 70 72  |5      .."OS_Spr|
00001530  69 74 65 4f 70 22 2c 32  35 36 2b 33 33 2c 73 70  |iteOp",256+33,sp|
00001540  72 69 74 65 25 2c 74 65  6d 70 73 70 72 69 74 65  |rite%,tempsprite|
00001550  32 24 0d 06 72 35 20 20  20 20 20 20 c8 99 22 4f  |2$..r5      .."O|
00001560  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00001570  34 37 2c 73 70 72 69 74  65 25 2c 74 65 6d 70 73  |47,sprite%,temps|
00001580  70 72 69 74 65 32 24 0d  06 7c 43 20 20 20 20 20  |prite2$..|C     |
00001590  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
000015a0  2c 32 35 36 2b 33 35 2c  73 70 72 69 74 65 25 2c  |,256+35,sprite%,|
000015b0  74 65 6d 70 73 70 72 69  74 65 24 2c 74 65 6d 70  |tempsprite$,temp|
000015c0  73 70 72 69 74 65 32 24  2c 31 0d 06 86 09 20 20  |sprite2$,1....  |
000015d0  20 20 cd 0d 06 90 07 20  20 cd 0d 06 9a 0e 20 20  |  .....  .....  |
000015e0  e7 20 49 3e 33 39 20 8c  0d 06 a4 17 20 20 20 20  |. I>39 .....    |
000015f0  e7 20 74 65 6d 70 76 61  6c 25 3c 31 31 20 8c 0d  |. tempval%<11 ..|
00001600  06 ae 31 20 20 20 20 20  20 74 65 6d 70 73 75 69  |..1      tempsui|
00001610  74 24 3d 22 73 70 61 64  65 22 3a 74 65 6d 70 73  |t$="spade":temps|
00001620  70 72 69 74 65 24 3d 22  6d 5f 73 70 61 64 65 22  |prite$="m_spade"|
00001630  0d 06 b8 3f 20 20 20 20  20 20 c8 99 22 4f 53 5f  |...?      .."OS_|
00001640  53 70 72 69 74 65 4f 70  22 2c 32 35 36 2b 32 37  |SpriteOp",256+27|
00001650  2c 73 70 72 69 74 65 25  2c 22 6d 5f 73 70 61 64  |,sprite%,"m_spad|
00001660  65 22 2c 74 65 6d 70 73  70 72 69 74 65 32 24 0d  |e",tempsprite2$.|
00001670  06 c2 35 20 20 20 20 20  20 c8 99 22 4f 53 5f 53  |..5      .."OS_S|
00001680  70 72 69 74 65 4f 70 22  2c 32 35 36 2b 33 33 2c  |priteOp",256+33,|
00001690  73 70 72 69 74 65 25 2c  74 65 6d 70 73 70 72 69  |sprite%,tempspri|
000016a0  74 65 32 24 0d 06 cc 09  20 20 20 20 cc 0d 06 d6  |te2$....    ....|
000016b0  17 20 20 20 20 20 20 c8  8e 20 74 65 6d 70 76 61  |.      .. tempva|
000016c0  6c 25 20 ca 0d 06 e0 2b  20 20 20 20 20 20 20 20  |l% ....+        |
000016d0  c9 20 31 31 3a 20 74 65  6d 70 73 70 72 69 74 65  |. 11: tempsprite|
000016e0  24 3d 22 6a 61 63 6b 5f  73 70 61 64 65 73 22 0d  |$="jack_spades".|
000016f0  06 ea 2c 20 20 20 20 20  20 20 20 c9 20 31 32 3a  |..,        . 12:|
00001700  20 74 65 6d 70 73 70 72  69 74 65 24 3d 22 71 75  | tempsprite$="qu|
00001710  65 65 6e 5f 73 70 61 64  65 73 22 0d 06 f4 2b 20  |een_spades"...+ |
00001720  20 20 20 20 20 20 20 c9  20 31 33 3a 20 74 65 6d  |       . 13: tem|
00001730  70 73 70 72 69 74 65 24  3d 22 6b 69 6e 67 5f 73  |psprite$="king_s|
00001740  70 61 64 65 73 22 0d 06  fe 0b 20 20 20 20 20 20  |pades"....      |
00001750  cb 0d 07 08 41 20 20 20  20 20 20 c8 99 22 4f 53  |....A      .."OS|
00001760  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 32  |_SpriteOp",256+2|
00001770  37 2c 73 70 72 69 74 65  25 2c 74 65 6d 70 73 70  |7,sprite%,tempsp|
00001780  72 69 74 65 24 2c 74 65  6d 70 73 70 72 69 74 65  |rite$,tempsprite|
00001790  32 24 0d 07 12 35 20 20  20 20 20 20 c8 99 22 4f  |2$...5      .."O|
000017a0  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
000017b0  33 33 2c 73 70 72 69 74  65 25 2c 74 65 6d 70 73  |33,sprite%,temps|
000017c0  70 72 69 74 65 32 24 0d  07 1c 35 20 20 20 20 20  |prite2$...5     |
000017d0  20 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  | .."OS_SpriteOp"|
000017e0  2c 32 35 36 2b 34 37 2c  73 70 72 69 74 65 25 2c  |,256+47,sprite%,|
000017f0  74 65 6d 70 73 70 72 69  74 65 32 24 0d 07 26 43  |tempsprite2$..&C|
00001800  20 20 20 20 20 20 c8 99  22 4f 53 5f 53 70 72 69  |      .."OS_Spri|
00001810  74 65 4f 70 22 2c 32 35  36 2b 33 35 2c 73 70 72  |teOp",256+35,spr|
00001820  69 74 65 25 2c 74 65 6d  70 73 70 72 69 74 65 24  |ite%,tempsprite$|
00001830  2c 74 65 6d 70 73 70 72  69 74 65 32 24 2c 31 0d  |,tempsprite2$,1.|
00001840  07 30 09 20 20 20 20 cd  0d 07 3a 07 20 20 cd 0d  |.0.    ...:.  ..|
00001850  07 44 13 20 20 c8 8e 20  74 65 6d 70 76 61 6c 25  |.D.  .. tempval%|
00001860  20 ca 0d 07 4e 0c 20 20  20 20 c9 20 31 3a 0d 07  | ...N.    . 1:..|
00001870  58 2f 20 20 20 20 20 20  f2 64 72 61 77 73 70 72  |X/      .drawspr|
00001880  69 74 65 28 c3 49 2c 22  6c 67 5f 22 2b 74 65 6d  |ite(.I,"lg_"+tem|
00001890  70 73 75 69 74 24 2c 32  38 2c 35 35 29 0d 07 62  |psuit$,28,55)..b|
000018a0  0c 20 20 20 20 c9 20 32  3a 0d 07 6c 2c 20 20 20  |.    . 2:..l,   |
000018b0  20 20 20 f2 64 72 61 77  73 70 72 69 74 65 28 c3  |   .drawsprite(.|
000018c0  49 2c 74 65 6d 70 73 70  72 69 74 65 24 2c 36 38  |I,tempsprite$,68|
000018d0  2c 31 33 36 29 0d 07 76  2c 20 20 20 20 20 20 f2  |,136)..v,      .|
000018e0  64 72 61 77 73 70 72 69  74 65 28 c3 49 2c 74 65  |drawsprite(.I,te|
000018f0  6d 70 73 70 72 69 74 65  32 24 2c 36 38 2c 35 32  |mpsprite2$,68,52|
00001900  29 0d 07 80 0c 20 20 20  20 c9 20 33 3a 0d 07 8a  |)....    . 3:...|
00001910  2c 20 20 20 20 20 20 f2  64 72 61 77 73 70 72 69  |,      .drawspri|
00001920  74 65 28 c3 49 2c 74 65  6d 70 73 70 72 69 74 65  |te(.I,tempsprite|
00001930  24 2c 36 38 2c 31 34 36  29 0d 07 94 2b 20 20 20  |$,68,146)...+   |
00001940  20 20 20 f2 64 72 61 77  73 70 72 69 74 65 28 c3  |   .drawsprite(.|
00001950  49 2c 74 65 6d 70 73 70  72 69 74 65 24 2c 36 38  |I,tempsprite$,68|
00001960  2c 39 34 29 0d 07 9e 2c  20 20 20 20 20 20 f2 64  |,94)...,      .d|
00001970  72 61 77 73 70 72 69 74  65 28 c3 49 2c 74 65 6d  |rawsprite(.I,tem|
00001980  70 73 70 72 69 74 65 32  24 2c 36 38 2c 34 32 29  |psprite2$,68,42)|
00001990  0d 07 a8 0c 20 20 20 20  c9 20 34 3a 0d 07 b2 2c  |....    . 4:...,|
000019a0  20 20 20 20 20 20 f2 64  72 61 77 73 70 72 69 74  |      .drawsprit|
000019b0  65 28 c3 49 2c 74 65 6d  70 73 70 72 69 74 65 24  |e(.I,tempsprite$|
000019c0  2c 34 33 2c 31 33 36 29  0d 07 bc 2c 20 20 20 20  |,43,136)...,    |
000019d0  20 20 f2 64 72 61 77 73  70 72 69 74 65 28 c3 49  |  .drawsprite(.I|
000019e0  2c 74 65 6d 70 73 70 72  69 74 65 24 2c 39 33 2c  |,tempsprite$,93,|
000019f0  31 33 36 29 0d 07 c6 2c  20 20 20 20 20 20 f2 64  |136)...,      .d|
00001a00  72 61 77 73 70 72 69 74  65 28 c3 49 2c 74 65 6d  |rawsprite(.I,tem|
00001a10  70 73 70 72 69 74 65 32  24 2c 34 33 2c 35 32 29  |psprite2$,43,52)|
00001a20  0d 07 d0 2c 20 20 20 20  20 20 f2 64 72 61 77 73  |...,      .draws|
00001a30  70 72 69 74 65 28 c3 49  2c 74 65 6d 70 73 70 72  |prite(.I,tempspr|
00001a40  69 74 65 32 24 2c 39 33  2c 35 32 29 0d 07 da 0c  |ite2$,93,52)....|
00001a50  20 20 20 20 c9 20 35 3a  0d 07 e4 2b 20 20 20 20  |    . 5:...+    |
00001a60  20 20 f2 64 72 61 77 73  70 72 69 74 65 28 c3 49  |  .drawsprite(.I|
00001a70  2c 74 65 6d 70 73 70 72  69 74 65 24 2c 36 38 2c  |,tempsprite$,68,|
00001a80  39 34 29 0d 07 ee 2c 20  20 20 20 20 20 f2 64 72  |94)...,      .dr|
00001a90  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
00001aa0  73 70 72 69 74 65 24 2c  34 33 2c 31 33 36 29 0d  |sprite$,43,136).|
00001ab0  07 f8 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |..,      .drawsp|
00001ac0  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00001ad0  74 65 24 2c 39 33 2c 31  33 36 29 0d 08 02 2c 20  |te$,93,136)..., |
00001ae0  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001af0  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 32 24  |(.I,tempsprite2$|
00001b00  2c 34 33 2c 35 32 29 0d  08 0c 2c 20 20 20 20 20  |,43,52)...,     |
00001b10  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00001b20  74 65 6d 70 73 70 72 69  74 65 32 24 2c 39 33 2c  |tempsprite2$,93,|
00001b30  35 32 29 0d 08 16 0c 20  20 20 20 c9 20 36 3a 0d  |52)....    . 6:.|
00001b40  08 20 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |. ,      .drawsp|
00001b50  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00001b60  74 65 24 2c 34 33 2c 31  33 36 29 0d 08 2a 2c 20  |te$,43,136)..*, |
00001b70  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001b80  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 24 2c  |(.I,tempsprite$,|
00001b90  39 33 2c 31 33 36 29 0d  08 34 2b 20 20 20 20 20  |93,136)..4+     |
00001ba0  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00001bb0  74 65 6d 70 73 70 72 69  74 65 24 2c 34 33 2c 39  |tempsprite$,43,9|
00001bc0  34 29 0d 08 3e 2b 20 20  20 20 20 20 f2 64 72 61  |4)..>+      .dra|
00001bd0  77 73 70 72 69 74 65 28  c3 49 2c 74 65 6d 70 73  |wsprite(.I,temps|
00001be0  70 72 69 74 65 24 2c 39  33 2c 39 34 29 0d 08 48  |prite$,93,94)..H|
00001bf0  2c 20 20 20 20 20 20 f2  64 72 61 77 73 70 72 69  |,      .drawspri|
00001c00  74 65 28 c3 49 2c 74 65  6d 70 73 70 72 69 74 65  |te(.I,tempsprite|
00001c10  32 24 2c 34 33 2c 35 32  29 0d 08 52 2c 20 20 20  |2$,43,52)..R,   |
00001c20  20 20 20 f2 64 72 61 77  73 70 72 69 74 65 28 c3  |   .drawsprite(.|
00001c30  49 2c 74 65 6d 70 73 70  72 69 74 65 32 24 2c 39  |I,tempsprite2$,9|
00001c40  33 2c 35 32 29 0d 08 5c  0c 20 20 20 20 c9 20 37  |3,52)..\.    . 7|
00001c50  3a 0d 08 66 2c 20 20 20  20 20 20 f2 64 72 61 77  |:..f,      .draw|
00001c60  73 70 72 69 74 65 28 c3  49 2c 74 65 6d 70 73 70  |sprite(.I,tempsp|
00001c70  72 69 74 65 24 2c 34 33  2c 31 33 36 29 0d 08 70  |rite$,43,136)..p|
00001c80  2c 20 20 20 20 20 20 f2  64 72 61 77 73 70 72 69  |,      .drawspri|
00001c90  74 65 28 c3 49 2c 74 65  6d 70 73 70 72 69 74 65  |te(.I,tempsprite|
00001ca0  24 2c 39 33 2c 31 33 36  29 0d 08 7a 2c 20 20 20  |$,93,136)..z,   |
00001cb0  20 20 20 f2 64 72 61 77  73 70 72 69 74 65 28 c3  |   .drawsprite(.|
00001cc0  49 2c 74 65 6d 70 73 70  72 69 74 65 24 2c 36 38  |I,tempsprite$,68|
00001cd0  2c 31 31 36 29 0d 08 84  2b 20 20 20 20 20 20 f2  |,116)...+      .|
00001ce0  64 72 61 77 73 70 72 69  74 65 28 c3 49 2c 74 65  |drawsprite(.I,te|
00001cf0  6d 70 73 70 72 69 74 65  24 2c 34 33 2c 39 34 29  |mpsprite$,43,94)|
00001d00  0d 08 8e 2b 20 20 20 20  20 20 f2 64 72 61 77 73  |...+      .draws|
00001d10  70 72 69 74 65 28 c3 49  2c 74 65 6d 70 73 70 72  |prite(.I,tempspr|
00001d20  69 74 65 24 2c 39 33 2c  39 34 29 0d 08 98 2c 20  |ite$,93,94)..., |
00001d30  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001d40  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 32 24  |(.I,tempsprite2$|
00001d50  2c 34 33 2c 35 32 29 0d  08 a2 2c 20 20 20 20 20  |,43,52)...,     |
00001d60  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00001d70  74 65 6d 70 73 70 72 69  74 65 32 24 2c 39 33 2c  |tempsprite2$,93,|
00001d80  35 32 29 0d 08 ac 0c 20  20 20 20 c9 20 38 3a 0d  |52)....    . 8:.|
00001d90  08 b6 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |..,      .drawsp|
00001da0  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00001db0  74 65 24 2c 34 33 2c 31  34 38 29 0d 08 c0 2c 20  |te$,43,148)..., |
00001dc0  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001dd0  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 24 2c  |(.I,tempsprite$,|
00001de0  39 33 2c 31 34 38 29 0d  08 ca 2c 20 20 20 20 20  |93,148)...,     |
00001df0  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00001e00  74 65 6d 70 73 70 72 69  74 65 24 2c 34 33 2c 31  |tempsprite$,43,1|
00001e10  31 32 29 0d 08 d4 2c 20  20 20 20 20 20 f2 64 72  |12)...,      .dr|
00001e20  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
00001e30  73 70 72 69 74 65 24 2c  39 33 2c 31 31 32 29 0d  |sprite$,93,112).|
00001e40  08 de 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |..,      .drawsp|
00001e50  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00001e60  74 65 32 24 2c 34 33 2c  37 36 29 0d 08 e8 2c 20  |te2$,43,76)..., |
00001e70  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001e80  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 32 24  |(.I,tempsprite2$|
00001e90  2c 39 33 2c 37 36 29 0d  08 f2 2c 20 20 20 20 20  |,93,76)...,     |
00001ea0  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00001eb0  74 65 6d 70 73 70 72 69  74 65 32 24 2c 34 33 2c  |tempsprite2$,43,|
00001ec0  34 30 29 0d 08 fc 2c 20  20 20 20 20 20 f2 64 72  |40)...,      .dr|
00001ed0  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
00001ee0  73 70 72 69 74 65 32 24  2c 39 33 2c 34 30 29 0d  |sprite2$,93,40).|
00001ef0  09 06 0c 20 20 20 20 c9  20 39 3a 0d 09 10 2c 20  |...    . 9:..., |
00001f00  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001f10  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 24 2c  |(.I,tempsprite$,|
00001f20  34 33 2c 31 34 38 29 0d  09 1a 2c 20 20 20 20 20  |43,148)...,     |
00001f30  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00001f40  74 65 6d 70 73 70 72 69  74 65 24 2c 39 33 2c 31  |tempsprite$,93,1|
00001f50  34 38 29 0d 09 24 2c 20  20 20 20 20 20 f2 64 72  |48)..$,      .dr|
00001f60  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
00001f70  73 70 72 69 74 65 24 2c  34 33 2c 31 31 32 29 0d  |sprite$,43,112).|
00001f80  09 2e 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |..,      .drawsp|
00001f90  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00001fa0  74 65 24 2c 39 33 2c 31  31 32 29 0d 09 38 2b 20  |te$,93,112)..8+ |
00001fb0  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00001fc0  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 24 2c  |(.I,tempsprite$,|
00001fd0  36 38 2c 39 34 29 0d 09  42 2c 20 20 20 20 20 20  |68,94)..B,      |
00001fe0  f2 64 72 61 77 73 70 72  69 74 65 28 c3 49 2c 74  |.drawsprite(.I,t|
00001ff0  65 6d 70 73 70 72 69 74  65 32 24 2c 34 33 2c 37  |empsprite2$,43,7|
00002000  36 29 0d 09 4c 2c 20 20  20 20 20 20 f2 64 72 61  |6)..L,      .dra|
00002010  77 73 70 72 69 74 65 28  c3 49 2c 74 65 6d 70 73  |wsprite(.I,temps|
00002020  70 72 69 74 65 32 24 2c  39 33 2c 37 36 29 0d 09  |prite2$,93,76)..|
00002030  56 2c 20 20 20 20 20 20  f2 64 72 61 77 73 70 72  |V,      .drawspr|
00002040  69 74 65 28 c3 49 2c 74  65 6d 70 73 70 72 69 74  |ite(.I,tempsprit|
00002050  65 32 24 2c 34 33 2c 34  30 29 0d 09 60 2c 20 20  |e2$,43,40)..`,  |
00002060  20 20 20 20 f2 64 72 61  77 73 70 72 69 74 65 28  |    .drawsprite(|
00002070  c3 49 2c 74 65 6d 70 73  70 72 69 74 65 32 24 2c  |.I,tempsprite2$,|
00002080  39 33 2c 34 30 29 0d 09  6a 0d 20 20 20 20 c9 20  |93,40)..j.    . |
00002090  31 30 3a 0d 09 74 2c 20  20 20 20 20 20 f2 64 72  |10:..t,      .dr|
000020a0  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
000020b0  73 70 72 69 74 65 24 2c  34 33 2c 31 34 38 29 0d  |sprite$,43,148).|
000020c0  09 7e 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |.~,      .drawsp|
000020d0  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
000020e0  74 65 24 2c 39 33 2c 31  34 38 29 0d 09 88 2c 20  |te$,93,148)..., |
000020f0  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
00002100  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 24 2c  |(.I,tempsprite$,|
00002110  36 38 2c 31 33 30 29 0d  09 92 2c 20 20 20 20 20  |68,130)...,     |
00002120  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
00002130  74 65 6d 70 73 70 72 69  74 65 24 2c 34 33 2c 31  |tempsprite$,43,1|
00002140  31 32 29 0d 09 9c 2c 20  20 20 20 20 20 f2 64 72  |12)...,      .dr|
00002150  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
00002160  73 70 72 69 74 65 24 2c  39 33 2c 31 31 32 29 0d  |sprite$,93,112).|
00002170  09 a6 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |..,      .drawsp|
00002180  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00002190  74 65 32 24 2c 34 33 2c  37 36 29 0d 09 b0 2c 20  |te2$,43,76)..., |
000021a0  20 20 20 20 20 f2 64 72  61 77 73 70 72 69 74 65  |     .drawsprite|
000021b0  28 c3 49 2c 74 65 6d 70  73 70 72 69 74 65 32 24  |(.I,tempsprite2$|
000021c0  2c 39 33 2c 37 36 29 0d  09 ba 2c 20 20 20 20 20  |,93,76)...,     |
000021d0  20 f2 64 72 61 77 73 70  72 69 74 65 28 c3 49 2c  | .drawsprite(.I,|
000021e0  74 65 6d 70 73 70 72 69  74 65 32 24 2c 36 38 2c  |tempsprite2$,68,|
000021f0  35 38 29 0d 09 c4 2c 20  20 20 20 20 20 f2 64 72  |58)...,      .dr|
00002200  61 77 73 70 72 69 74 65  28 c3 49 2c 74 65 6d 70  |awsprite(.I,temp|
00002210  73 70 72 69 74 65 32 24  2c 34 33 2c 34 30 29 0d  |sprite2$,43,40).|
00002220  09 ce 2c 20 20 20 20 20  20 f2 64 72 61 77 73 70  |..,      .drawsp|
00002230  72 69 74 65 28 c3 49 2c  74 65 6d 70 73 70 72 69  |rite(.I,tempspri|
00002240  74 65 32 24 2c 39 33 2c  34 30 29 0d 09 d8 13 20  |te2$,93,40).... |
00002250  20 20 20 c9 20 31 31 2c  31 32 2c 31 33 3a 0d 09  |   . 11,12,13:..|
00002260  e2 2b 20 20 20 20 20 20  f2 64 72 61 77 73 70 72  |.+      .drawspr|
00002270  69 74 65 28 c3 49 2c 74  65 6d 70 73 70 72 69 74  |ite(.I,tempsprit|
00002280  65 24 2c 33 38 2c 33 36  29 0d 09 ec 07 20 20 cb  |e$,38,36)....  .|
00002290  0d 09 f6 41 20 20 e7 20  74 65 6d 70 76 61 6c 25  |...A  . tempval%|
000022a0  3c 31 31 20 8c 20 c8 99  22 4f 53 5f 53 70 72 69  |<11 . .."OS_Spri|
000022b0  74 65 4f 70 22 2c 32 35  36 2b 32 35 2c 73 70 72  |teOp",256+25,spr|
000022c0  69 74 65 25 2c 74 65 6d  70 73 70 72 69 74 65 32  |ite%,tempsprite2|
000022d0  24 0d 0a 00 07 ed 20 49  0d 0a 0a 05 e1 0d 0a 14  |$..... I........|
000022e0  04 0d 0a 1e 2c dd f2 64  72 61 77 73 70 72 69 74  |....,..drawsprit|
000022f0  65 28 74 65 6d 70 6c 61  74 65 24 2c 61 64 64 24  |e(template$,add$|
00002300  2c 78 70 6f 73 25 2c 79  70 6f 73 25 29 0d 0a 28  |,xpos%,ypos%)..(|
00002310  3b f4 20 54 68 69 73 20  70 72 6f 63 65 64 75 72  |;. This procedur|
00002320  65 20 77 69 6c 6c 20 61  64 64 20 74 68 65 20 73  |e will add the s|
00002330  70 72 69 74 65 20 61 64  64 24 20 74 6f 20 74 68  |prite add$ to th|
00002340  65 20 73 70 72 69 74 65  0d 0a 32 2e f4 20 73 70  |e sprite..2.. sp|
00002350  72 69 74 65 6e 61 6d 65  24 20 61 74 20 74 68 65  |ritename$ at the|
00002360  20 70 6f 73 69 74 69 6f  6e 20 78 70 6f 73 25 2c  | position xpos%,|
00002370  79 70 6f 73 25 2e 0d 0a  3c 2e c8 99 22 4f 53 5f  |ypos%...<..."OS_|
00002380  53 70 72 69 74 65 4f 70  22 2c 32 35 36 2b 36 30  |SpriteOp",256+60|
00002390  2c 73 70 72 69 74 65 25  2c 74 65 6d 70 6c 61 74  |,sprite%,templat|
000023a0  65 24 2c 30 0d 0a 46 35  c8 99 22 4f 53 5f 53 70  |e$,0..F5.."OS_Sp|
000023b0  72 69 74 65 4f 70 22 2c  32 35 36 2b 33 34 2c 73  |riteOp",256+34,s|
000023c0  70 72 69 74 65 25 2c 61  64 64 24 2c 78 70 6f 73  |prite%,add$,xpos|
000023d0  25 2c 79 70 6f 73 25 2c  38 0d 0a 50 1c c8 99 22  |%,ypos%,8..P..."|
000023e0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
000023f0  2b 36 30 2c 30 0d 0a 5a  05 e1 0d 0a 64 04 0d 0a  |+60,0..Z....d...|
00002400  6e 31 dd f2 61 64 64 73  70 72 69 74 65 28 74 65  |n1..addsprite(te|
00002410  6d 70 6c 61 74 65 24 2c  74 65 6d 70 24 2c 61 64  |mplate$,temp$,ad|
00002420  64 24 2c 78 70 6f 73 25  2c 79 70 6f 73 25 29 0d  |d$,xpos%,ypos%).|
00002430  0a 78 3b f4 20 54 68 69  73 20 70 72 6f 63 65 64  |.x;. This proced|
00002440  75 72 65 20 77 69 6c 6c  20 61 64 64 20 74 68 65  |ure will add the|
00002450  20 73 70 72 69 74 65 20  61 64 64 24 20 74 6f 20  | sprite add$ to |
00002460  74 68 65 20 73 70 72 69  74 65 0d 0a 82 44 f4 20  |the sprite...D. |
00002470  73 70 72 69 74 65 6e 61  6d 65 24 20 61 74 20 74  |spritename$ at t|
00002480  68 65 20 70 6f 73 69 74  69 6f 6e 20 78 70 6f 73  |he position xpos|
00002490  25 2c 79 70 6f 73 25 2c  20 63 72 65 61 74 69 6e  |%,ypos%, creatin|
000024a0  67 20 61 20 6e 65 77 20  73 70 72 69 74 65 0d 0a  |g a new sprite..|
000024b0  8c 22 f4 20 63 61 6c 6c  65 64 20 74 65 6d 70 24  |.". called temp$|
000024c0  20 69 6e 20 74 68 65 20  70 72 6f 63 65 73 73 2e  | in the process.|
000024d0  0d 0a 96 32 c8 99 22 4f  53 5f 53 70 72 69 74 65  |...2.."OS_Sprite|
000024e0  4f 70 22 2c 32 35 36 2b  32 37 2c 73 70 72 69 74  |Op",256+27,sprit|
000024f0  65 25 2c 74 65 6d 70 6c  61 74 65 24 2c 74 65 6d  |e%,template$,tem|
00002500  70 24 0d 0a a0 2a c8 99  22 4f 53 5f 53 70 72 69  |p$...*.."OS_Spri|
00002510  74 65 4f 70 22 2c 32 35  36 2b 36 30 2c 73 70 72  |teOp",256+60,spr|
00002520  69 74 65 25 2c 74 65 6d  70 24 2c 30 0d 0a aa 35  |ite%,temp$,0...5|
00002530  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00002540  32 35 36 2b 33 34 2c 73  70 72 69 74 65 25 2c 61  |256+34,sprite%,a|
00002550  64 64 24 2c 78 70 6f 73  25 2c 79 70 6f 73 25 2c  |dd$,xpos%,ypos%,|
00002560  30 0d 0a b4 1c c8 99 22  4f 53 5f 53 70 72 69 74  |0......"OS_Sprit|
00002570  65 4f 70 22 2c 32 35 36  2b 36 30 2c 30 0d 0a be  |eOp",256+60,0...|
00002580  05 e1 0d 0a c8 04 0d 0a  d2 0f dd f2 77 69 6d 70  |............wimp|
00002590  5f 70 6f 6c 6c 0d 0a dc  3c f4 20 54 68 69 73 20  |_poll...<. This |
000025a0  69 73 20 74 68 65 20 68  65 61 72 74 20 6f 66 20  |is the heart of |
000025b0  74 68 65 20 70 72 6f 67  72 61 6d 6d 65 2e 20 50  |the programme. P|
000025c0  6f 6c 6c 73 20 74 68 65  20 57 49 4d 50 20 61 6e  |olls the WIMP an|
000025d0  64 0d 0a e6 3a f4 20 70  65 72 66 6f 72 6d 73 20  |d...:. performs |
000025e0  61 63 74 69 6f 6e 73 20  64 65 70 65 6e 64 65 6e  |actions dependen|
000025f0  74 20 6f 6e 20 74 68 65  20 65 76 65 6e 74 73 20  |t on the events |
00002600  74 68 61 74 20 6f 63 63  75 72 2e 0d 0a f0 1a ea  |that occur......|
00002610  20 6f 75 74 6c 69 6e 65  25 2c 41 25 2c 42 25 2c  | outline%,A%,B%,|
00002620  58 25 2c 59 25 0d 0a fa  0e c8 95 20 ac 20 71 75  |X%,Y%...... . qu|
00002630  69 74 25 0d 0b 04 13 20  20 de 20 6f 75 74 6c 69  |it%....  . outli|
00002640  6e 65 25 20 32 30 0d 0b  0e 15 20 20 21 6f 75 74  |ne% 20....  !out|
00002650  6c 69 6e 65 25 3d 6d 61  69 6e 25 0d 0b 18 1a 20  |line%=main%.... |
00002660  20 c8 99 20 22 57 69 6d  70 45 78 74 5f 50 72 65  | .. "WimpExt_Pre|
00002670  50 6f 6c 6c 22 0d 0b 22  31 20 20 c8 99 20 22 57  |Poll".."1  .. "W|
00002680  69 6d 70 5f 50 6f 6c 6c  22 2c 25 31 31 31 30 30  |imp_Poll",%11100|
00002690  30 30 30 31 31 30 30 30  31 2c 71 25 20 b8 20 72  |000110001,q% . r|
000026a0  65 61 73 6f 6e 25 0d 0b  2c 34 20 20 c8 99 20 22  |eason%..,4  .. "|
000026b0  57 69 6d 70 45 78 74 5f  41 63 74 69 6f 6e 22 2c  |WimpExt_Action",|
000026c0  74 61 73 6b 25 2c 71 25  2c 72 65 61 73 6f 6e 25  |task%,q%,reason%|
000026d0  20 b8 20 72 65 61 73 6f  6e 25 0d 0b 36 12 20 20  | . reason%..6.  |
000026e0  c8 8e 20 72 65 61 73 6f  6e 25 20 ca 0d 0b 40 29  |.. reason% ...@)|
000026f0  20 20 20 20 c9 20 31 20  3a 20 c8 99 20 22 57 69  |    . 1 : .. "Wi|
00002700  6d 70 45 78 74 5f 41 75  74 6f 52 65 64 72 61 77  |mpExt_AutoRedraw|
00002710  22 2c 2c 71 25 0d 0b 4a  29 20 20 20 20 c9 20 32  |",,q%..J)    . 2|
00002720  20 3a 20 c8 99 20 22 57  69 6d 70 45 78 74 5f 4f  | : .. "WimpExt_O|
00002730  70 65 6e 4c 69 6e 6b 65  64 22 2c 2c 71 25 0d 0b  |penLinked",,q%..|
00002740  54 2a 20 20 20 20 c9 20  33 20 3a 20 c8 99 20 22  |T*    . 3 : .. "|
00002750  57 69 6d 70 45 78 74 5f  43 6c 6f 73 65 4c 69 6e  |WimpExt_CloseLin|
00002760  6b 65 64 22 2c 2c 71 25  0d 0b 5e 0d 20 20 20 20  |ked",,q%..^.    |
00002770  c9 20 36 20 3a 0d 0b 68  16 20 20 20 20 20 20 e7  |. 6 :..h.      .|
00002780  20 71 25 21 31 32 3d 2d  32 20 8c 0d 0b 72 16 20  | q%!12=-2 ...r. |
00002790  20 20 20 20 20 20 20 e7  20 71 25 21 38 3d 32 20  |       . q%!8=2 |
000027a0  8c 0d 0b 7c 38 20 20 20  20 20 20 20 20 20 20 c8  |...|8          .|
000027b0  99 20 22 57 69 6d 70 45  78 74 5f 43 72 65 61 74  |. "WimpExt_Creat|
000027c0  65 4d 65 6e 75 22 2c 2c  69 6d 65 6e 75 25 2c 21  |eMenu",,imenu%,!|
000027d0  71 25 2d 36 34 2c 32 35  30 0d 0b 86 1a 20 20 20  |q%-64,250....   |
000027e0  20 20 20 20 20 20 20 6d  65 6e 75 25 3d 69 6d 65  |       menu%=ime|
000027f0  6e 75 25 0d 0b 90 0d 20  20 20 20 20 20 20 20 cd  |nu%....        .|
00002800  0d 0b 9a 1f 20 20 20 20  20 20 20 20 e7 20 71 25  |....        . q%|
00002810  21 38 3d 34 20 8c 20 f2  6e 65 77 67 61 6d 65 0d  |!8=4 . .newgame.|
00002820  0b a4 0b 20 20 20 20 20  20 cd 0d 0b ae 22 20 20  |...      ...."  |
00002830  20 20 20 20 e7 20 71 25  21 31 32 3d 6d 61 69 6e  |    . q%!12=main|
00002840  25 20 80 20 71 25 21 38  3d 32 20 8c 0d 0b b8 34  |% . q%!8=2 ....4|
00002850  20 20 20 20 20 20 20 20  c8 99 20 22 57 69 6d 70  |        .. "Wimp|
00002860  45 78 74 5f 43 72 65 61  74 65 4d 65 6e 75 22 2c  |Ext_CreateMenu",|
00002870  2c 67 6d 65 6e 75 25 2c  21 71 25 2c 71 25 21 34  |,gmenu%,!q%,q%!4|
00002880  0d 0b c2 18 20 20 20 20  20 20 20 20 6d 65 6e 75  |....        menu|
00002890  25 3d 67 6d 65 6e 75 25  0d 0b cc 0b 20 20 20 20  |%=gmenu%....    |
000028a0  20 20 cd 0d 0b d6 2d 20  20 20 20 20 20 e7 20 71  |  ....-      . q|
000028b0  25 21 31 32 3d 6d 61 69  6e 25 20 80 20 28 71 25  |%!12=main% . (q%|
000028c0  21 38 3d 34 20 84 20 71  25 21 38 3d 31 29 20 8c  |!8=4 . q%!8=1) .|
000028d0  0d 0b e0 16 20 20 20 20  20 20 20 20 c8 8e 20 67  |....        .. g|
000028e0  61 6d 65 25 20 ca 0d 0b  ea 2e 20 20 20 20 20 20  |ame% .....      |
000028f0  20 20 20 20 c9 20 31 20  3a 20 f2 6f 73 6d 6f 73  |    . 1 : .osmos|
00002900  69 73 5f 6d 6f 75 73 65  63 6c 69 63 6b 28 71 25  |is_mouseclick(q%|
00002910  21 31 36 29 0d 0b f4 45  20 20 20 20 20 20 20 20  |!16)...E        |
00002920  20 20 c9 20 32 20 3a 20  e7 20 64 65 61 6c 25 3d  |  . 2 : . deal%=|
00002930  34 20 8c 20 f2 6e 65 77  67 61 6d 65 20 8b 20 f2  |4 . .newgame . .|
00002940  70 79 72 61 6d 69 64 5f  6d 6f 75 73 65 63 6c 69  |pyramid_mousecli|
00002950  63 6b 28 71 25 21 31 36  29 0d 0b fe 0d 20 20 20  |ck(q%!16)....   |
00002960  20 20 20 20 20 cb 0d 0c  08 0b 20 20 20 20 20 20  |     .....      |
00002970  cd 0d 0c 12 0d 20 20 20  20 c9 20 39 20 3a 0d 0c  |.....    . 9 :..|
00002980  1c 14 20 20 20 20 20 20  c8 8e 20 6d 65 6e 75 25  |..      .. menu%|
00002990  20 ca 0d 0c 26 15 20 20  20 20 20 20 20 20 c9 20  | ...&.        . |
000029a0  69 6d 65 6e 75 25 3a 0d  0c 30 16 20 20 20 20 20  |imenu%:..0.     |
000029b0  20 20 20 20 20 c8 8e 20  21 71 25 20 ca 0d 0c 3a  |     .. !q% ...:|
000029c0  41 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 30  |A            . 0|
000029d0  20 3a 20 c8 99 22 57 69  6d 70 45 78 74 5f 4f 70  | : .."WimpExt_Op|
000029e0  65 6e 44 69 61 6c 6f 67  75 65 22 2c 2c 2c 69 6e  |enDialogue",,,in|
000029f0  66 6f 25 2c 21 71 25 2d  36 34 2c 31 38 34 0d 0c  |fo%,!q%-64,184..|
00002a00  44 26 20 20 20 20 20 20  20 20 20 20 20 20 c9 20  |D&            . |
00002a10  31 20 3a 20 67 61 6d 65  25 3d 31 3a f2 6e 65 77  |1 : game%=1:.new|
00002a20  67 61 6d 65 0d 0c 4e 1d  20 20 20 20 20 20 20 20  |game..N.        |
00002a30  20 20 20 20 c9 20 32 20  3a 20 71 75 69 74 25 3d  |    . 2 : quit%=|
00002a40  b9 0d 0c 58 0f 20 20 20  20 20 20 20 20 20 20 cb  |...X.          .|
00002a50  0d 0c 62 15 20 20 20 20  20 20 20 20 c9 20 67 6d  |..b.        . gm|
00002a60  65 6e 75 25 3a 0d 0c 6c  16 20 20 20 20 20 20 20  |enu%:..l.       |
00002a70  20 20 20 c8 8e 20 21 71  25 20 ca 0d 0c 76 15 20  |   .. !q% ...v. |
00002a80  20 20 20 20 20 20 20 20  20 20 20 c9 20 30 20 3a  |           . 0 :|
00002a90  0d 0c 80 1c 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00002aa0  20 20 c8 8e 20 67 61 6d  65 25 20 ca 0d 0c 8a 27  |  .. game% ....'|
00002ab0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002ac0  c9 20 31 20 3a 20 f2 6f  73 6d 6f 73 69 73 5f 75  |. 1 : .osmosis_u|
00002ad0  6e 64 6f 0d 0c 94 27 20  20 20 20 20 20 20 20 20  |ndo...'         |
00002ae0  20 20 20 20 20 20 20 c9  20 32 20 3a 20 f2 70 79  |       . 2 : .py|
00002af0  72 61 6d 69 64 5f 75 6e  64 6f 0d 0c 9e 13 20 20  |ramid_undo....  |
00002b00  20 20 20 20 20 20 20 20  20 20 20 20 cb 0d 0c a8  |            ....|
00002b10  15 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 31  |.            . 1|
00002b20  20 3a 0d 0c b2 1c 20 20  20 20 20 20 20 20 20 20  | :....          |
00002b30  20 20 20 20 c8 8e 20 67  61 6d 65 25 20 ca 0d 0c  |    .. game% ...|
00002b40  bc 22 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |."              |
00002b50  20 20 c9 20 31 20 3a 20  f2 6e 65 77 67 61 6d 65  |  . 1 : .newgame|
00002b60  0d 0c c6 19 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00002b70  20 20 20 20 c9 20 32 20  3a 0d 0c d0 1d 20 20 20  |    . 2 :....   |
00002b80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 64  |               d|
00002b90  65 61 6c 25 3d 34 0d 0c  da 24 20 20 20 20 20 20  |eal%=4...$      |
00002ba0  20 20 20 20 20 20 20 20  20 20 20 20 f2 70 79 72  |            .pyr|
00002bb0  61 6d 69 64 5f 73 63 6f  72 65 0d 0c e4 1e 20 20  |amid_score....  |
00002bc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002bd0  f2 6e 65 77 67 61 6d 65  0d 0c ee 13 20 20 20 20  |.newgame....    |
00002be0  20 20 20 20 20 20 20 20  20 20 cb 0d 0c f8 15 20  |          ..... |
00002bf0  20 20 20 20 20 20 20 20  20 20 20 c9 20 32 20 3a  |           . 2 :|
00002c00  0d 0d 02 19 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00002c10  20 20 67 61 6d 65 25 3d  31 0d 0d 0c 1a 20 20 20  |  game%=1....   |
00002c20  20 20 20 20 20 20 20 20  20 20 20 f2 6e 65 77 67  |           .newg|
00002c30  61 6d 65 0d 0d 16 15 20  20 20 20 20 20 20 20 20  |ame....         |
00002c40  20 20 20 c9 20 33 20 3a  0d 0d 20 19 20 20 20 20  |   . 3 :.. .    |
00002c50  20 20 20 20 20 20 20 20  20 20 67 61 6d 65 25 3d  |          game%=|
00002c60  32 0d 0d 2a 1a 20 20 20  20 20 20 20 20 20 20 20  |2..*.           |
00002c70  20 20 20 f2 6e 65 77 67  61 6d 65 0d 0d 34 1d 20  |   .newgame..4. |
00002c80  20 20 20 20 20 20 20 20  20 20 20 c9 20 34 20 3a  |           . 4 :|
00002c90  20 71 75 69 74 25 3d b9  0d 0d 3e 0f 20 20 20 20  | quit%=...>.    |
00002ca0  20 20 20 20 20 20 cb 0d  0d 48 0b 20 20 20 20 20  |      ...H.     |
00002cb0  20 cb 0d 0d 52 11 20 20  20 20 c9 20 31 37 2c 31  | ...R.    . 17,1|
00002cc0  38 20 3a 0d 0d 5c 14 20  20 20 20 20 20 c8 8e 20  |8 :..\.      .. |
00002cd0  71 25 21 31 36 20 ca 0d  0d 66 19 20 20 20 20 20  |q%!16 ...f.     |
00002ce0  20 20 20 c9 20 30 20 3a  20 71 75 69 74 25 3d b9  |   . 0 : quit%=.|
00002cf0  0d 0d 70 0b 20 20 20 20  20 20 cb 0d 0d 7a 07 20  |..p.      ...z. |
00002d00  20 cb 0d 0d 84 05 ce 0d  0d 8e 05 e1 0d 0d 98 04  | ...............|
00002d10  0d 0d a2 0d dd f2 6e 65  77 67 61 6d 65 0d 0d ac  |......newgame...|
00002d20  26 f4 20 43 61 6c 6c 73  20 74 68 65 20 72 65 6c  |&. Calls the rel|
00002d30  65 76 61 6e 74 20 67 61  6d 65 20 72 6f 75 74 69  |evant game routi|
00002d40  6e 65 2e 0d 0d b6 2d c8  99 22 57 69 6d 70 5f 46  |ne....-.."Wimp_F|
00002d50  6f 72 63 65 52 65 64 72  61 77 22 2c 6d 61 69 6e  |orceRedraw",main|
00002d60  25 2c 30 2c 2d 31 31 30  30 2c 31 34 38 30 2c 30  |%,0,-1100,1480,0|
00002d70  0d 0d c0 0e c8 8e 20 67  61 6d 65 25 20 ca 0d 0d  |...... game% ...|
00002d80  ca 14 20 20 c9 20 31 20  3a 20 f2 6f 73 6d 6f 73  |..  . 1 : .osmos|
00002d90  69 73 0d 0d d4 14 20 20  c9 20 32 20 3a 20 f2 70  |is....  . 2 : .p|
00002da0  79 72 61 6d 69 64 0d 0d  de 05 cb 0d 0d e8 0d 70  |yramid.........p|
00002db0  6c 61 79 65 64 25 3d b9  0d 0d f2 05 e1 0d 0d fc  |layed%=.........|
00002dc0  04 0d 0e 06 1c dd f2 63  6c 65 61 6e 75 70 77 69  |.......cleanupwi|
00002dd0  6e 64 6f 77 28 77 69 6e  64 6f 77 25 29 0d 0e 10  |ndow(window%)...|
00002de0  32 f4 20 44 65 6c 65 74  65 73 20 61 6c 6c 20 69  |2. Deletes all i|
00002df0  63 6f 6e 73 20 66 72 6f  6d 20 74 68 65 20 73 70  |cons from the sp|
00002e00  65 63 69 66 69 65 64 20  77 69 6e 64 6f 77 2e 0d  |ecified window..|
00002e10  0e 1a 0f ea 20 64 65 6c  65 74 65 25 2c 49 0d 0e  |.... delete%,I..|
00002e20  24 15 e7 20 69 63 6f 6e  6e 75 6d 62 65 72 25 3e  |$.. iconnumber%>|
00002e30  31 20 8c 0d 0e 2e 11 20  20 de 20 64 65 6c 65 74  |1 .....  . delet|
00002e40  65 25 20 38 0d 0e 38 16  20 20 21 64 65 6c 65 74  |e% 8..8.  !delet|
00002e50  65 25 3d 77 69 6e 64 6f  77 25 0d 0e 42 19 20 20  |e%=window%..B.  |
00002e60  e3 20 49 3d 31 20 b8 20  69 63 6f 6e 6e 75 6d 62  |. I=1 . iconnumb|
00002e70  65 72 25 0d 0e 4c 13 20  20 20 20 64 65 6c 65 74  |er%..L.    delet|
00002e80  65 25 21 34 3d 49 0d 0e  56 24 20 20 20 20 c8 99  |e%!4=I..V$    ..|
00002e90  22 57 69 6d 70 5f 44 65  6c 65 74 65 49 63 6f 6e  |"Wimp_DeleteIcon|
00002ea0  22 2c 2c 64 65 6c 65 74  65 25 0d 0e 60 09 20 20  |",,delete%..`.  |
00002eb0  ed 20 49 0d 0e 6a 05 cd  0d 0e 74 05 e1 0d 0e 7e  |. I..j....t....~|
00002ec0  04 0d 0e 88 0d dd f2 73  68 75 66 66 6c 65 0d 0e  |.......shuffle..|
00002ed0  92 42 f4 20 54 68 69 73  20 70 72 6f 63 65 64 75  |.B. This procedu|
00002ee0  72 65 20 77 69 6c 6c 20  73 65 74 20 75 70 20 74  |re will set up t|
00002ef0  68 65 20 70 61 63 6b 20  6f 66 20 35 32 20 63 61  |he pack of 52 ca|
00002f00  72 64 73 20 61 6e 64 20  65 6e 73 75 72 65 20 61  |rds and ensure a|
00002f10  0d 0e 9c 1a f4 20 72 61  6e 64 6f 6d 20 64 69 73  |..... random dis|
00002f20  74 72 69 62 75 74 69 6f  6e 2e 0d 0e a6 08 f2 64  |tribution......d|
00002f30  69 6d 0d 0e b0 21 ea 20  73 68 75 66 66 6c 65 31  |im...!. shuffle1|
00002f40  25 2c 73 68 75 66 66 6c  65 32 25 2c 49 2c 73 65  |%,shuffle2%,I,se|
00002f50  65 64 25 0d 0e ba 0f 73  65 65 64 25 3d b3 28 2d  |ed%....seed%=.(-|
00002f60  91 29 0d 0e c4 0e e3 20  49 3d 31 20 b8 20 35 32  |.)..... I=1 . 52|
00002f70  0d 0e ce 10 20 20 70 61  63 6b 25 28 49 29 3d 49  |....  pack%(I)=I|
00002f80  0d 0e d8 07 ed 20 49 0d  0e e2 0f e3 20 49 3d 31  |..... I..... I=1|
00002f90  20 b8 20 31 30 30 0d 0e  ec 07 20 20 f5 0d 0e f6  | . 100....  ....|
00002fa0  17 20 20 20 20 73 68 75  66 66 6c 65 31 25 3d b3  |.    shuffle1%=.|
00002fb0  28 35 32 29 0d 0f 00 17  20 20 20 20 73 68 75 66  |(52)....    shuf|
00002fc0  66 6c 65 32 25 3d b3 28  35 32 29 0d 0f 0a 1c 20  |fle2%=.(52).... |
00002fd0  20 fd 20 73 68 75 66 66  6c 65 31 25 3c 3e 73 68  | . shuffle1%<>sh|
00002fe0  75 66 66 6c 65 32 25 0d  0f 14 2a 20 20 c8 94 20  |uffle2%...*  .. |
00002ff0  70 61 63 6b 25 28 73 68  75 66 66 6c 65 31 25 29  |pack%(shuffle1%)|
00003000  2c 70 61 63 6b 25 28 73  68 75 66 66 6c 65 32 25  |,pack%(shuffle2%|
00003010  29 0d 0f 1e 07 ed 20 49  0d 0f 28 05 e1 0d 0f 32  |)..... I..(....2|
00003020  04 0d 0f 3c 09 dd f2 64  69 6d 0d 0f 46 1a f4 20  |...<...dim..F.. |
00003030  53 65 74 73 20 75 70 20  67 61 6d 65 20 61 72 72  |Sets up game arr|
00003040  61 79 73 2e 0d 0f 50 1d  e7 20 70 6c 61 79 65 64  |ays...P.. played|
00003050  25 3d a3 20 8c 20 de 20  70 61 63 6b 25 28 35 32  |%=. . . pack%(52|
00003060  29 0d 0f 5a 0e c8 8e 20  67 61 6d 65 25 20 ca 0d  |)..Z... game% ..|
00003070  0f 64 0b 20 20 c9 20 31  20 3a 0d 0f 6e 16 20 20  |.d.  . 1 :..n.  |
00003080  20 20 e7 20 6f 73 6d 6f  64 69 6d 25 3d a3 20 8c  |  . osmodim%=. .|
00003090  0d 0f 78 e4 20 20 20 20  20 20 de 20 6f 73 6d 6f  |..x.      . osmo|
000030a0  70 61 63 6b 25 28 33 35  29 2c 6f 73 6d 6f 77 61  |pack%(35),osmowa|
000030b0  73 74 65 25 28 33 35 29  2c 6f 73 6d 6f 70 69 6c  |ste%(35),osmopil|
000030c0  65 31 25 28 34 29 2c 6f  73 6d 6f 70 69 6c 65 32  |e1%(4),osmopile2|
000030d0  25 28 34 29 2c 6f 73 6d  6f 70 69 6c 65 33 25 28  |%(4),osmopile3%(|
000030e0  34 29 2c 6f 73 6d 6f 70  69 6c 65 34 25 28 34 29  |4),osmopile4%(4)|
000030f0  2c 6f 73 6d 6f 70 69 6c  65 31 68 61 6e 25 28 34  |,osmopile1han%(4|
00003100  29 2c 6f 73 6d 6f 70 69  6c 65 32 68 61 6e 25 28  |),osmopile2han%(|
00003110  34 29 2c 6f 73 6d 6f 70  69 6c 65 33 68 61 6e 25  |4),osmopile3han%|
00003120  28 34 29 2c 6f 73 6d 6f  70 69 6c 65 34 68 61 6e  |(4),osmopile4han|
00003130  25 28 34 29 2c 6f 73 6d  6f 66 6f 75 6e 64 31 25  |%(4),osmofound1%|
00003140  28 31 33 29 2c 6f 73 6d  6f 66 6f 75 6e 64 32 25  |(13),osmofound2%|
00003150  28 31 33 29 2c 6f 73 6d  6f 66 6f 75 6e 64 33 25  |(13),osmofound3%|
00003160  28 31 33 29 2c 6f 73 6d  6f 66 6f 75 6e 64 34 25  |(13),osmofound4%|
00003170  28 31 33 29 0d 0f 82 a3  20 20 20 20 20 20 de 20  |(13)....      . |
00003180  6f 73 6d 6f 66 6f 75 6e  64 31 68 61 6e 25 28 31  |osmofound1han%(1|
00003190  33 29 2c 6f 73 6d 6f 66  6f 75 6e 64 32 68 61 6e  |3),osmofound2han|
000031a0  25 28 31 33 29 2c 6f 73  6d 6f 66 6f 75 6e 64 33  |%(13),osmofound3|
000031b0  68 61 6e 25 28 31 33 29  2c 6f 73 6d 6f 66 6f 75  |han%(13),osmofou|
000031c0  6e 64 34 68 61 6e 25 28  31 33 29 2c 6f 73 6d 6f  |nd4han%(13),osmo|
000031d0  66 6f 75 6e 64 31 76 61  6c 25 28 31 33 29 2c 6f  |found1val%(13),o|
000031e0  73 6d 6f 66 6f 75 6e 64  32 76 61 6c 25 28 31 33  |smofound2val%(13|
000031f0  29 2c 6f 73 6d 6f 66 6f  75 6e 64 33 76 61 6c 25  |),osmofound3val%|
00003200  28 31 33 29 2c 6f 73 6d  6f 66 6f 75 6e 64 34 76  |(13),osmofound4v|
00003210  61 6c 25 28 31 33 29 0d  0f 8c 14 20 20 20 20 20  |al%(13)....     |
00003220  20 6f 73 6d 6f 64 69 6d  25 3d b9 0d 0f 96 09 20  | osmodim%=..... |
00003230  20 20 20 cd 0d 0f a0 0b  20 20 c9 20 32 20 3a 0d  |   .....  . 2 :.|
00003240  0f aa 15 20 20 20 20 e7  20 70 79 72 64 69 6d 25  |...    . pyrdim%|
00003250  3d a3 20 8c 0d 0f b4 5f  20 20 20 20 20 20 de 20  |=. ...._      . |
00003260  70 79 72 6c 61 79 25 28  32 38 29 2c 70 79 72 6c  |pyrlay%(28),pyrl|
00003270  61 79 68 61 6e 25 28 32  38 29 2c 70 79 72 70 61  |ayhan%(28),pyrpa|
00003280  63 6b 25 28 32 34 29 2c  70 79 72 77 61 73 74 65  |ck%(24),pyrwaste|
00003290  25 28 32 34 29 2c 70 79  72 66 6f 75 6e 64 25 28  |%(24),pyrfound%(|
000032a0  35 32 29 2c 70 79 72 64  65 6c 65 74 65 64 25 28  |52),pyrdeleted%(|
000032b0  32 38 29 0d 0f be 13 20  20 20 20 20 20 70 79 72  |28)....      pyr|
000032c0  64 69 6d 25 3d b9 0d 0f  c8 09 20 20 20 20 cd 0d  |dim%=.....    ..|
000032d0  0f d2 05 cb 0d 0f dc 05  e1 0d 0f e6 04 0d 0f f0  |................|
000032e0  40 dd a4 63 72 65 61 74  65 69 63 6f 6e 28 77 69  |@..createicon(wi|
000032f0  6e 25 2c 6e 61 6d 65 24  2c 74 65 78 74 24 2c 78  |n%,name$,text$,x|
00003300  6d 69 6e 25 2c 79 6d 69  6e 25 2c 78 6d 61 78 25  |min%,ymin%,xmax%|
00003310  2c 79 6d 61 78 25 2c 66  6c 61 67 25 29 0d 0f fa  |,ymax%,flag%)...|
00003320  35 ea 20 69 63 6f 6e 68  61 6e 64 6c 65 25 2c 6e  |5. iconhandle%,n|
00003330  61 6d 65 25 2c 73 6c 65  6e 67 74 68 25 2c 74 6c  |ame%,slength%,tl|
00003340  65 6e 67 74 68 25 2c 69  63 6f 6e 25 2c 74 65 78  |ength%,icon%,tex|
00003350  74 25 0d 10 04 0f 74 65  78 74 24 2b 3d bd 28 30  |t%....text$+=.(0|
00003360  29 0d 10 0e 21 74 6c 65  6e 67 74 68 25 3d 28 a9  |)...!tlength%=(.|
00003370  28 74 65 78 74 24 29 2b  34 29 20 80 20 28 ac 20  |(text$)+4) . (. |
00003380  33 29 0d 10 18 21 73 6c  65 6e 67 74 68 25 3d 28  |3)...!slength%=(|
00003390  a9 28 6e 61 6d 65 24 29  2b 34 29 20 80 20 28 ac  |.(name$)+4) . (.|
000033a0  20 33 29 0d 10 22 20 de  20 69 63 6f 6e 25 20 33  | 3).." . icon% 3|
000033b0  36 2b 74 6c 65 6e 67 74  68 25 2b 73 6c 65 6e 67  |6+tlength%+sleng|
000033c0  74 68 25 0d 10 2c 1b 74  65 78 74 25 3d 69 63 6f  |th%..,.text%=ico|
000033d0  6e 25 2b 33 36 2b 73 6c  65 6e 67 74 68 25 0d 10  |n%+36+slength%..|
000033e0  36 10 24 74 65 78 74 25  3d 74 65 78 74 24 0d 10  |6.$text%=text$..|
000033f0  40 12 6e 61 6d 65 25 3d  69 63 6f 6e 25 2b 33 36  |@.name%=icon%+36|
00003400  0d 10 4a 2f e7 20 6e 61  6d 65 24 3d 22 22 20 8c  |..J/. name$="" .|
00003410  20 24 6e 61 6d 65 25 3d  22 72 35 22 20 8b 20 24  | $name%="r5" . $|
00003420  6e 61 6d 65 25 3d 22 73  22 2b 6e 61 6d 65 24 0d  |name%="s"+name$.|
00003430  10 54 10 69 63 6f 6e 25  21 30 3d 77 69 6e 25 0d  |.T.icon%!0=win%.|
00003440  10 5e 11 69 63 6f 6e 25  21 34 3d 78 6d 69 6e 25  |.^.icon%!4=xmin%|
00003450  0d 10 68 11 69 63 6f 6e  25 21 38 3d 79 6d 69 6e  |..h.icon%!8=ymin|
00003460  25 0d 10 72 12 69 63 6f  6e 25 21 31 32 3d 78 6d  |%..r.icon%!12=xm|
00003470  61 78 25 0d 10 7c 12 69  63 6f 6e 25 21 31 36 3d  |ax%..|.icon%!16=|
00003480  79 6d 61 78 25 0d 10 86  12 69 63 6f 6e 25 21 32  |ymax%....icon%!2|
00003490  30 3d 66 6c 61 67 25 0d  10 90 12 69 63 6f 6e 25  |0=flag%....icon%|
000034a0  21 32 34 3d 74 65 78 74  25 0d 10 9a 12 69 63 6f  |!24=text%....ico|
000034b0  6e 25 21 32 38 3d 6e 61  6d 65 25 0d 10 a4 15 69  |n%!28=name%....i|
000034c0  63 6f 6e 25 21 33 32 3d  74 6c 65 6e 67 74 68 25  |con%!32=tlength%|
000034d0  0d 10 ae 2c c8 99 22 57  69 6d 70 5f 43 72 65 61  |...,.."Wimp_Crea|
000034e0  74 65 49 63 6f 6e 22 2c  2c 69 63 6f 6e 25 20 b8  |teIcon",,icon% .|
000034f0  20 69 63 6f 6e 68 61 6e  64 6c 65 25 0d 10 b8 1d  | iconhandle%....|
00003500  69 63 6f 6e 6e 75 6d 62  65 72 25 3d 69 63 6f 6e  |iconnumber%=icon|
00003510  6e 75 6d 62 65 72 25 2b  31 0d 10 c2 10 3d 69 63  |number%+1....=ic|
00003520  6f 6e 68 61 6e 64 6c 65  25 0d 10 cc 04 0d 10 d6  |onhandle%.......|
00003530  2c dd f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |,..seticonsprite|
00003540  28 77 69 6e 64 6f 77 25  2c f8 20 69 63 6f 6e 25  |(window%,. icon%|
00003550  2c 73 70 72 69 74 65 24  29 0d 10 e0 3e f4 20 53  |,sprite$)...>. S|
00003560  65 74 73 20 74 68 65 20  73 70 72 69 74 65 20 6f  |ets the sprite o|
00003570  66 20 74 68 65 20 67 69  76 65 6e 20 69 6e 64 69  |f the given indi|
00003580  72 65 63 74 65 64 20 74  65 78 74 2b 73 70 72 69  |rected text+spri|
00003590  74 65 20 69 63 6f 6e 0d  10 ea 11 f4 20 74 6f 20  |te icon..... to |
000035a0  73 70 72 69 74 65 24 2e  0d 10 f4 3c ea 20 62 6c  |sprite$....<. bl|
000035b0  6f 63 6b 25 2c 62 6c 6f  63 6b 32 25 2c 62 6c 6f  |ock%,block2%,blo|
000035c0  63 6b 33 25 2c 74 65 73  74 24 2c 49 2c 78 6d 69  |ck3%,test$,I,xmi|
000035d0  6e 25 2c 79 6d 69 6e 25  2c 78 6d 61 78 25 2c 79  |n%,ymin%,xmax%,y|
000035e0  6d 61 78 25 0d 10 fe 24  de 20 62 6c 6f 63 6b 25  |max%...$. block%|
000035f0  20 34 30 2c 62 6c 6f 63  6b 32 25 20 34 30 2c 62  | 40,block2% 40,b|
00003600  6c 6f 63 6b 33 25 20 38  0d 11 08 13 21 62 6c 6f  |lock3% 8....!blo|
00003610  63 6b 25 3d 77 69 6e 64  6f 77 25 0d 11 12 12 62  |ck%=window%....b|
00003620  6c 6f 63 6b 25 21 34 3d  69 63 6f 6e 25 0d 11 1c  |lock%!4=icon%...|
00003630  14 21 62 6c 6f 63 6b 32  25 3d 77 69 6e 64 6f 77  |.!block2%=window|
00003640  25 0d 11 26 13 62 6c 6f  63 6b 32 25 21 34 3d 69  |%..&.block2%!4=i|
00003650  63 6f 6e 25 0d 11 30 2b  c8 99 22 57 69 6d 70 5f  |con%..0+.."Wimp_|
00003660  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 62  |GetIconState",,b|
00003670  6c 6f 63 6b 25 20 b8 20  2c 62 6c 6f 63 6b 25 0d  |lock% . ,block%.|
00003680  11 3a 20 c8 99 22 57 69  6d 70 5f 44 65 6c 65 74  |.: .."Wimp_Delet|
00003690  65 49 63 6f 6e 22 2c 2c  62 6c 6f 63 6b 32 25 0d  |eIcon",,block2%.|
000036a0  11 44 18 24 62 6c 6f 63  6b 33 25 3d 22 73 22 2b  |.D.$block3%="s"+|
000036b0  73 70 72 69 74 65 24 0d  11 4e 10 de 20 62 6c 6f  |sprite$..N.. blo|
000036c0  63 6b 32 25 20 33 36 0d  11 58 14 21 62 6c 6f 63  |ck2% 36..X.!bloc|
000036d0  6b 32 25 3d 77 69 6e 64  6f 77 25 0d 11 62 12 e3  |k2%=window%..b..|
000036e0  20 49 3d 34 20 b8 20 33  32 20 88 20 34 0d 11 6c  | I=4 . 32 . 4..l|
000036f0  1c 20 20 62 6c 6f 63 6b  32 25 21 49 3d 62 6c 6f  |.  block2%!I=blo|
00003700  63 6b 25 21 28 49 2b 34  29 0d 11 76 07 ed 20 49  |ck%!(I+4)..v.. I|
00003710  0d 11 80 16 62 6c 6f 63  6b 32 25 21 32 38 3d 62  |....block2%!28=b|
00003720  6c 6f 63 6b 33 25 0d 11  8a 28 c8 99 22 57 69 6d  |lock3%...(.."Wim|
00003730  70 5f 43 72 65 61 74 65  49 63 6f 6e 22 2c 2c 62  |p_CreateIcon",,b|
00003740  6c 6f 63 6b 32 25 20 b8  20 69 63 6f 6e 25 0d 11  |lock2% . icon%..|
00003750  94 13 78 6d 69 6e 25 3d  62 6c 6f 63 6b 32 25 21  |..xmin%=block2%!|
00003760  34 0d 11 9e 13 79 6d 69  6e 25 3d 62 6c 6f 63 6b  |4....ymin%=block|
00003770  32 25 21 38 0d 11 a8 14  78 6d 61 78 25 3d 62 6c  |2%!8....xmax%=bl|
00003780  6f 63 6b 32 25 21 31 32  0d 11 b2 14 79 6d 61 78  |ock2%!12....ymax|
00003790  25 3d 62 6c 6f 63 6b 32  25 21 31 36 0d 11 bc 38  |%=block2%!16...8|
000037a0  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
000037b0  72 61 77 22 2c 77 69 6e  64 6f 77 25 2c 78 6d 69  |raw",window%,xmi|
000037c0  6e 25 2c 79 6d 69 6e 25  2c 78 6d 61 78 25 2c 79  |n%,ymin%,xmax%,y|
000037d0  6d 61 78 25 0d 11 c6 05  e1 0d 11 d0 04 0d 11 da  |max%............|
000037e0  14 dd a4 63 61 72 64 76  61 6c 28 6e 61 6d 65 25  |...cardval(name%|
000037f0  29 0d 11 e4 3f f4 20 54  68 69 73 20 66 75 6e 63  |)...?. This func|
00003800  74 69 6f 6e 20 77 69 6c  6c 20 72 65 74 75 72 6e  |tion will return|
00003810  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 74 68  | the value of th|
00003820  65 20 63 61 72 64 20 28  69 2e 65 2e 20 74 68 65  |e card (i.e. the|
00003830  0d 11 ee 19 f4 20 6e 75  6d 62 65 72 20 73 68 6f  |..... number sho|
00003840  77 6e 20 6f 6e 20 69 74  29 0d 11 f8 0a ea 20 76  |wn on it)..... v|
00003850  61 6c 25 0d 12 02 2a c8  99 22 57 69 6d 70 45 78  |al%...*.."WimpEx|
00003860  74 5f 44 69 76 69 64 65  22 2c 2c 2c 6e 61 6d 65  |t_Divide",,,name|
00003870  25 2c 31 33 20 b8 20 2c  2c 76 61 6c 25 0d 12 0c  |%,13 . ,,val%...|
00003880  16 e7 20 76 61 6c 25 3d  30 20 8c 20 76 61 6c 25  |.. val%=0 . val%|
00003890  3d 31 33 0d 12 16 09 3d  76 61 6c 25 0d 12 20 04  |=13....=val%.. .|
000038a0  0d 12 2a 1e dd f2 62 6c  61 6e 6b 69 63 6f 6e 28  |..*...blankicon(|
000038b0  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 29 0d 12  |window%,icon%)..|
000038c0  34 3a f4 20 54 68 69 73  20 70 72 6f 63 65 64 75  |4:. This procedu|
000038d0  72 65 20 77 69 6c 6c 20  72 65 6d 6f 76 65 20 74  |re will remove t|
000038e0  68 65 20 69 63 6f 6e 20  66 72 6f 6d 20 74 68 65  |he icon from the|
000038f0  20 73 63 72 65 65 6e 2e  0d 12 3e 0c ea 20 62 6c  | screen...>.. bl|
00003900  6f 63 6b 25 0d 12 48 0e  de 20 62 6c 6f 63 6b 25  |ock%..H.. block%|
00003910  20 38 0d 12 52 13 21 62  6c 6f 63 6b 25 3d 77 69  | 8..R.!block%=wi|
00003920  6e 64 6f 77 25 0d 12 5c  12 62 6c 6f 63 6b 25 21  |ndow%..\.block%!|
00003930  34 3d 69 63 6f 6e 25 0d  12 66 24 f2 73 65 74 69  |4=icon%..f$.seti|
00003940  63 6f 6e 73 70 72 69 74  65 28 77 69 6e 64 6f 77  |consprite(window|
00003950  25 2c 69 63 6f 6e 25 2c  22 22 29 0d 12 70 05 e1  |%,icon%,"")..p..|
00003960  0d 12 7a 04 0d 12 84 0d  dd f2 6f 73 6d 6f 73 69  |..z.......osmosi|
00003970  73 0d 12 8e 30 c8 99 22  57 69 6d 70 45 78 74 5f  |s...0.."WimpExt_|
00003980  53 65 74 57 69 6e 64 6f  77 54 69 74 6c 65 22 2c  |SetWindowTitle",|
00003990  2c 2c 6d 61 69 6e 25 2c  22 4f 73 6d 6f 73 69 73  |,,main%,"Osmosis|
000039a0  22 0d 12 98 38 e7 20 70  6c 61 79 65 64 25 3d b9  |"...8. played%=.|
000039b0  20 80 20 69 63 6f 6e 6e  75 6d 62 65 72 25 3c 3e  | . iconnumber%<>|
000039c0  30 20 8c 20 f2 63 6c 65  61 6e 75 70 77 69 6e 64  |0 . .cleanupwind|
000039d0  6f 77 28 6d 61 69 6e 25  29 0d 12 a2 0c f2 73 68  |ow(main%).....sh|
000039e0  75 66 66 6c 65 0d 12 ac  11 f2 6f 73 6d 6f 73 69  |uffle.....osmosi|
000039f0  73 5f 64 65 61 6c 0d 12  b6 13 f2 6f 73 6d 6f 73  |s_deal.....osmos|
00003a00  69 73 5f 6c 61 79 6f 75  74 0d 12 c0 05 e1 0d 12  |is_layout.......|
00003a10  ca 04 0d 12 d4 12 dd f2  6f 73 6d 6f 73 69 73 5f  |........osmosis_|
00003a20  64 65 61 6c 0d 12 de 3e  f4 20 54 68 69 73 20 70  |deal...>. This p|
00003a30  72 6f 63 65 64 75 72 65  20 77 69 6c 6c 20 64 65  |rocedure will de|
00003a40  61 6c 20 6f 75 74 20 74  68 65 20 63 61 72 64 73  |al out the cards|
00003a50  20 69 6e 74 6f 20 74 68  65 20 72 65 6c 65 76 61  | into the releva|
00003a60  6e 74 0d 12 e8 31 f4 20  61 72 72 61 79 73 20 61  |nt...1. arrays a|
00003a70  6e 64 20 6c 61 79 20 6f  75 74 20 74 68 65 20 63  |nd lay out the c|
00003a80  61 72 64 73 20 69 6e 20  74 68 65 20 77 69 6e 64  |ards in the wind|
00003a90  6f 77 2e 0d 12 f2 07 ea  20 49 0d 12 fc 0d e3 20  |ow...... I..... |
00003aa0  49 3d 31 20 b8 20 34 0d  13 06 1c 20 20 6f 73 6d  |I=1 . 4....  osm|
00003ab0  6f 70 69 6c 65 31 25 28  49 29 3d 70 61 63 6b 25  |opile1%(I)=pack%|
00003ac0  28 49 29 0d 13 10 1e 20  20 6f 73 6d 6f 70 69 6c  |(I)....  osmopil|
00003ad0  65 32 25 28 49 29 3d 70  61 63 6b 25 28 49 2b 34  |e2%(I)=pack%(I+4|
00003ae0  29 0d 13 1a 1e 20 20 6f  73 6d 6f 70 69 6c 65 33  |)....  osmopile3|
00003af0  25 28 49 29 3d 70 61 63  6b 25 28 49 2b 38 29 0d  |%(I)=pack%(I+8).|
00003b00  13 24 1f 20 20 6f 73 6d  6f 70 69 6c 65 34 25 28  |.$.  osmopile4%(|
00003b10  49 29 3d 70 61 63 6b 25  28 49 2b 31 32 29 0d 13  |I)=pack%(I+12)..|
00003b20  2e 07 ed 20 49 0d 13 38  0e e3 20 49 3d 31 20 b8  |... I..8.. I=1 .|
00003b30  20 31 33 0d 13 42 16 20  20 6f 73 6d 6f 66 6f 75  | 13..B.  osmofou|
00003b40  6e 64 31 25 28 49 29 3d  30 0d 13 4c 16 20 20 6f  |nd1%(I)=0..L.  o|
00003b50  73 6d 6f 66 6f 75 6e 64  32 25 28 49 29 3d 30 0d  |smofound2%(I)=0.|
00003b60  13 56 16 20 20 6f 73 6d  6f 66 6f 75 6e 64 33 25  |.V.  osmofound3%|
00003b70  28 49 29 3d 30 0d 13 60  16 20 20 6f 73 6d 6f 66  |(I)=0..`.  osmof|
00003b80  6f 75 6e 64 34 25 28 49  29 3d 30 0d 13 6a 07 ed  |ound4%(I)=0..j..|
00003b90  20 49 0d 13 74 1c 6f 73  6d 6f 66 6f 75 6e 64 31  | I..t.osmofound1|
00003ba0  25 28 31 29 3d 70 61 63  6b 25 28 31 37 29 0d 13  |%(1)=pack%(17)..|
00003bb0  7e 0e e3 20 49 3d 31 20  b8 20 33 35 0d 13 88 1e  |~.. I=1 . 35....|
00003bc0  20 20 6f 73 6d 6f 70 61  63 6b 25 28 49 29 3d 70  |  osmopack%(I)=p|
00003bd0  61 63 6b 25 28 49 2b 31  37 29 0d 13 92 07 ed 20  |ack%(I+17)..... |
00003be0  49 0d 13 9c 0e e3 20 49  3d 31 20 b8 20 33 35 0d  |I..... I=1 . 35.|
00003bf0  13 a6 15 20 20 6f 73 6d  6f 77 61 73 74 65 25 28  |...  osmowaste%(|
00003c00  49 29 3d 30 0d 13 b0 07  ed 20 49 0d 13 ba 46 c8  |I)=0..... I...F.|
00003c10  99 22 57 69 6d 70 45 78  74 5f 44 69 76 69 64 65  |."WimpExt_Divide|
00003c20  22 2c 2c 2c 6f 73 6d 6f  66 6f 75 6e 64 31 25 28  |",,,osmofound1%(|
00003c30  31 29 2c 31 33 20 b8 20  73 75 69 74 31 25 2c 2c  |1),13 . suit1%,,|
00003c40  6f 73 6d 6f 66 6f 75 6e  64 31 76 61 6c 25 28 31  |osmofound1val%(1|
00003c50  29 0d 13 c4 13 73 75 69  74 31 25 3d 73 75 69 74  |)....suit1%=suit|
00003c60  31 25 2b 31 0d 13 ce 1b  e7 20 6f 73 6d 6f 66 6f  |1%+1..... osmofo|
00003c70  75 6e 64 31 76 61 6c 25  28 31 29 3d 30 20 8c 0d  |und1val%(1)=0 ..|
00003c80  13 d8 15 20 20 73 75 69  74 31 25 3d 73 75 69 74  |...  suit1%=suit|
00003c90  31 25 2d 31 0d 13 e2 1a  20 20 6f 73 6d 6f 66 6f  |1%-1....  osmofo|
00003ca0  75 6e 64 31 76 61 6c 25  28 31 29 3d 31 33 0d 13  |und1val%(1)=13..|
00003cb0  ec 05 cd 0d 13 f6 0c 73  75 69 74 32 25 3d 30 0d  |.......suit2%=0.|
00003cc0  14 00 0c 73 75 69 74 33  25 3d 30 0d 14 0a 0c 73  |...suit3%=0....s|
00003cd0  75 69 74 34 25 3d 30 0d  14 14 05 e1 0d 14 1e 04  |uit4%=0.........|
00003ce0  0d 14 28 14 dd f2 6f 73  6d 6f 73 69 73 5f 6c 61  |..(...osmosis_la|
00003cf0  79 6f 75 74 0d 14 32 26  f4 20 53 65 74 73 20 6f  |yout..2&. Sets o|
00003d00  75 74 20 74 68 65 20 63  61 72 64 73 20 66 6f 72  |ut the cards for|
00003d10  20 74 68 65 20 67 61 6d  65 2e 0d 14 3c 0d ea 20  | the game...<.. |
00003d20  49 2c 6c 65 66 74 25 0d  14 46 24 c8 99 20 22 57  |I,left%..F$.. "W|
00003d30  69 6d 70 45 78 74 5f 4f  70 65 6e 57 69 6e 64 6f  |impExt_OpenWindo|
00003d40  77 54 6f 70 22 2c 6d 61  69 6e 25 0d 14 50 15 74  |wTop",main%..P.t|
00003d50  6f 70 25 3d 2d 31 30 3a  6c 65 66 74 25 3d 31 30  |op%=-10:left%=10|
00003d60  0d 14 5a 12 e3 20 49 3d  34 20 b8 20 32 20 88 20  |..Z.. I=4 . 2 . |
00003d70  2d 31 0d 14 64 62 20 20  20 6f 73 6d 6f 70 69 6c  |-1..db   osmopil|
00003d80  65 31 68 61 6e 25 28 49  29 3d a4 63 72 65 61 74  |e1han%(I)=.creat|
00003d90  65 69 63 6f 6e 28 6d 61  69 6e 25 2c 22 62 61 63  |eicon(main%,"bac|
00003da0  6b 22 2c 22 22 2c 6c 65  66 74 25 2c 74 6f 70 25  |k","",left%,top%|
00003db0  2d 32 30 38 2c 6c 65 66  74 25 2b 31 35 38 2c 74  |-208,left%+158,t|
00003dc0  6f 70 25 2c 25 31 31 30  30 30 31 30 30 30 31 31  |op%,%11000100011|
00003dd0  30 31 31 29 0d 14 6e 66  20 20 20 6f 73 6d 6f 70  |011)..nf   osmop|
00003de0  69 6c 65 32 68 61 6e 25  28 49 29 3d a4 63 72 65  |ile2han%(I)=.cre|
00003df0  61 74 65 69 63 6f 6e 28  6d 61 69 6e 25 2c 22 62  |ateicon(main%,"b|
00003e00  61 63 6b 22 2c 22 22 2c  6c 65 66 74 25 2c 74 6f  |ack","",left%,to|
00003e10  70 25 2d 34 32 36 2c 6c  65 66 74 25 2b 31 35 38  |p%-426,left%+158|
00003e20  2c 74 6f 70 25 2d 32 31  38 2c 25 31 31 30 30 30  |,top%-218,%11000|
00003e30  31 30 30 30 31 31 30 31  31 29 0d 14 78 66 20 20  |100011011)..xf  |
00003e40  20 6f 73 6d 6f 70 69 6c  65 33 68 61 6e 25 28 49  | osmopile3han%(I|
00003e50  29 3d a4 63 72 65 61 74  65 69 63 6f 6e 28 6d 61  |)=.createicon(ma|
00003e60  69 6e 25 2c 22 62 61 63  6b 22 2c 22 22 2c 6c 65  |in%,"back","",le|
00003e70  66 74 25 2c 74 6f 70 25  2d 36 34 34 2c 6c 65 66  |ft%,top%-644,lef|
00003e80  74 25 2b 31 35 38 2c 74  6f 70 25 2d 34 33 36 2c  |t%+158,top%-436,|
00003e90  25 31 31 30 30 30 31 30  30 30 31 31 30 31 31 29  |%11000100011011)|
00003ea0  0d 14 82 66 20 20 20 6f  73 6d 6f 70 69 6c 65 34  |...f   osmopile4|
00003eb0  68 61 6e 25 28 49 29 3d  a4 63 72 65 61 74 65 69  |han%(I)=.createi|
00003ec0  63 6f 6e 28 6d 61 69 6e  25 2c 22 62 61 63 6b 22  |con(main%,"back"|
00003ed0  2c 22 22 2c 6c 65 66 74  25 2c 74 6f 70 25 2d 38  |,"",left%,top%-8|
00003ee0  36 32 2c 6c 65 66 74 25  2b 31 35 38 2c 74 6f 70  |62,left%+158,top|
00003ef0  25 2d 36 35 34 2c 25 31  31 30 30 30 31 30 30 30  |%-654,%110001000|
00003f00  31 31 30 31 31 29 0d 14  8c 15 20 20 20 6c 65 66  |11011)....   lef|
00003f10  74 25 3d 6c 65 66 74 25  2b 33 30 0d 14 96 07 ed  |t%=left%+30.....|
00003f20  20 49 0d 14 a0 67 6f 73  6d 6f 70 69 6c 65 31 68  | I...gosmopile1h|
00003f30  61 6e 25 28 31 29 3d a4  63 72 65 61 74 65 69 63  |an%(1)=.createic|
00003f40  6f 6e 28 6d 61 69 6e 25  2c c3 6f 73 6d 6f 70 69  |on(main%,.osmopi|
00003f50  6c 65 31 25 28 31 29 2c  22 22 2c 6c 65 66 74 25  |le1%(1),"",left%|
00003f60  2c 74 6f 70 25 2d 32 30  38 2c 6c 65 66 74 25 2b  |,top%-208,left%+|
00003f70  31 35 38 2c 74 6f 70 25  2c 25 31 31 30 30 30 31  |158,top%,%110001|
00003f80  30 30 30 31 31 30 31 31  29 0d 14 aa 6b 6f 73 6d  |00011011)...kosm|
00003f90  6f 70 69 6c 65 32 68 61  6e 25 28 31 29 3d a4 63  |opile2han%(1)=.c|
00003fa0  72 65 61 74 65 69 63 6f  6e 28 6d 61 69 6e 25 2c  |reateicon(main%,|
00003fb0  c3 6f 73 6d 6f 70 69 6c  65 32 25 28 31 29 2c 22  |.osmopile2%(1),"|
00003fc0  22 2c 6c 65 66 74 25 2c  74 6f 70 25 2d 34 32 36  |",left%,top%-426|
00003fd0  2c 6c 65 66 74 25 2b 31  35 38 2c 74 6f 70 25 2d  |,left%+158,top%-|
00003fe0  32 31 38 2c 25 31 31 30  30 30 31 30 30 30 31 31  |218,%11000100011|
00003ff0  30 31 31 29 0d 14 b4 6b  6f 73 6d 6f 70 69 6c 65  |011)...kosmopile|
00004000  33 68 61 6e 25 28 31 29  3d a4 63 72 65 61 74 65  |3han%(1)=.create|
00004010  69 63 6f 6e 28 6d 61 69  6e 25 2c c3 6f 73 6d 6f  |icon(main%,.osmo|
00004020  70 69 6c 65 33 25 28 31  29 2c 22 22 2c 6c 65 66  |pile3%(1),"",lef|
00004030  74 25 2c 74 6f 70 25 2d  36 34 34 2c 6c 65 66 74  |t%,top%-644,left|
00004040  25 2b 31 35 38 2c 74 6f  70 25 2d 34 33 36 2c 25  |%+158,top%-436,%|
00004050  31 31 30 30 30 31 30 30  30 31 31 30 31 31 29 0d  |11000100011011).|
00004060  14 be 6b 6f 73 6d 6f 70  69 6c 65 34 68 61 6e 25  |..kosmopile4han%|
00004070  28 31 29 3d a4 63 72 65  61 74 65 69 63 6f 6e 28  |(1)=.createicon(|
00004080  6d 61 69 6e 25 2c c3 6f  73 6d 6f 70 69 6c 65 34  |main%,.osmopile4|
00004090  25 28 31 29 2c 22 22 2c  6c 65 66 74 25 2c 74 6f  |%(1),"",left%,to|
000040a0  70 25 2d 38 36 32 2c 6c  65 66 74 25 2b 31 35 38  |p%-862,left%+158|
000040b0  2c 74 6f 70 25 2d 36 35  34 2c 25 31 31 30 30 30  |,top%-654,%11000|
000040c0  31 30 30 30 31 31 30 31  31 29 0d 14 c8 58 6f 73  |100011011)...Xos|
000040d0  6d 6f 70 61 63 6b 68 61  6e 25 3d a4 63 72 65 61  |mopackhan%=.crea|
000040e0  74 65 69 63 6f 6e 28 6d  61 69 6e 25 2c 22 62 61  |teicon(main%,"ba|
000040f0  63 6b 22 2c 22 22 2c 35  37 32 2c 74 6f 70 25 2d  |ck","",572,top%-|
00004100  31 30 38 30 2c 37 33 30  2c 74 6f 70 25 2d 38 37  |1080,730,top%-87|
00004110  32 2c 25 31 31 30 30 30  31 30 30 30 31 31 30 31  |2,%1100010001101|
00004120  31 29 0d 14 d2 5b 6f 73  6d 6f 77 61 73 74 65 68  |1)...[osmowasteh|
00004130  61 6e 25 3d a4 63 72 65  61 74 65 69 63 6f 6e 28  |an%=.createicon(|
00004140  6d 61 69 6e 25 2c 22 6e  6f 63 61 72 64 22 2c 22  |main%,"nocard","|
00004150  22 2c 37 35 30 2c 74 6f  70 25 2d 31 30 38 30 2c  |",750,top%-1080,|
00004160  39 30 38 2c 74 6f 70 25  2d 38 37 32 2c 25 31 31  |908,top%-872,%11|
00004170  30 30 30 31 30 30 30 31  31 30 31 31 29 0d 14 dc  |000100011011)...|
00004180  0e 6c 65 66 74 31 25 3d  33 30 38 0d 14 e6 66 6f  |.left1%=308...fo|
00004190  73 6d 6f 66 6f 75 6e 64  31 68 61 6e 25 28 31 29  |smofound1han%(1)|
000041a0  3d a4 63 72 65 61 74 65  69 63 6f 6e 28 6d 61 69  |=.createicon(mai|
000041b0  6e 25 2c c3 6f 73 6d 6f  66 6f 75 6e 64 31 25 28  |n%,.osmofound1%(|
000041c0  31 29 2c 22 22 2c 6c 65  66 74 31 25 2c 74 6f 70  |1),"",left1%,top|
000041d0  25 2d 32 30 38 2c 6c 65  66 74 31 25 2b 31 35 38  |%-208,left1%+158|
000041e0  2c 74 6f 70 25 2c 25 31  30 30 30 31 31 30 31 31  |,top%,%100011011|
000041f0  29 0d 14 f0 2b 66 6f 75  6e 64 31 25 3d 31 3a 66  |)...+found1%=1:f|
00004200  6f 75 6e 64 32 25 3d 30  3a 66 6f 75 6e 64 33 25  |ound2%=0:found3%|
00004210  3d 30 3a 66 6f 75 6e 64  34 25 3d 30 0d 14 fa 14  |=0:found4%=0....|
00004220  6c 65 66 74 31 25 3d 6c  65 66 74 31 25 2b 37 30  |left1%=left1%+70|
00004230  0d 15 04 24 6c 65 66 74  32 25 3d 33 30 38 3a 6c  |...$left2%=308:l|
00004240  65 66 74 33 25 3d 33 30  38 3a 6c 65 66 74 34 25  |eft3%=308:left4%|
00004250  3d 33 30 38 0d 15 0e 0e  74 6f 70 31 25 3d 74 6f  |=308....top1%=to|
00004260  70 25 0d 15 18 33 74 6f  70 32 25 3d 74 6f 70 31  |p%...3top2%=top1|
00004270  25 2d 32 31 38 3a 74 6f  70 33 25 3d 74 6f 70 32  |%-218:top3%=top2|
00004280  25 2d 32 31 38 3a 74 6f  70 34 25 3d 74 6f 70 33  |%-218:top4%=top3|
00004290  25 2d 32 31 38 0d 15 22  27 74 75 72 6e 31 25 3d  |%-218.."'turn1%=|
000042a0  a3 3a 74 75 72 6e 32 25  3d a3 3a 74 75 72 6e 33  |.:turn2%=.:turn3|
000042b0  25 3d a3 3a 74 75 72 6e  34 25 3d a3 0d 15 2c 2f  |%=.:turn4%=...,/|
000042c0  74 75 72 6e 65 64 31 25  3d a3 3a 74 75 72 6e 65  |turned1%=.:turne|
000042d0  64 32 25 3d a3 3a 74 75  72 6e 65 64 33 25 3d a3  |d2%=.:turned3%=.|
000042e0  3a 74 75 72 6e 65 64 34  25 3d a3 0d 15 36 05 e1  |:turned4%=...6..|
000042f0  0d 15 40 04 0d 15 4a 1f  dd f2 6f 73 6d 6f 73 69  |..@...J...osmosi|
00004300  73 5f 6d 6f 75 73 65 63  6c 69 63 6b 28 69 63 6f  |s_mouseclick(ico|
00004310  6e 25 29 0d 15 54 38 f4  20 50 72 6f 63 65 73 73  |n%)..T8. Process|
00004320  65 73 20 6d 6f 75 73 65  20 63 6c 69 63 6b 73 20  |es mouse clicks |
00004330  69 6e 20 74 68 65 20 6f  73 6d 6f 73 69 73 20 6d  |in the osmosis m|
00004340  61 69 6e 20 77 69 6e 64  6f 77 2e 0d 15 5e 2b f4  |ain window...^+.|
00004350  20 46 69 72 73 74 20 73  65 74 20 75 70 20 74 68  | First set up th|
00004360  65 20 6e 65 78 65 73 73  61 72 79 20 76 61 72 69  |e nexessary vari|
00004370  61 62 6c 65 73 2e 0d 15  68 6e ea 20 63 6c 69 63  |ables...hn. clic|
00004380  6b 25 2c 6e 61 6d 65 24  2c 6e 61 6d 65 25 2c 69  |k%,name$,name%,i|
00004390  63 6f 6e 73 75 69 74 25  2c 49 2c 4a 2c 63 61 72  |consuit%,I,J,car|
000043a0  64 76 61 6c 75 65 25 2c  74 61 67 25 2c 68 6f 6c  |dvalue%,tag%,hol|
000043b0  65 24 2c 6c 61 79 25 2c  65 6d 70 74 79 25 2c 69  |e$,lay%,empty%,i|
000043c0  63 6f 6e 68 61 6e 64 6c  65 25 2c 65 6d 70 74 79  |conhandle%,empty|
000043d0  25 2c 63 61 72 64 6d 6f  76 65 64 25 2c 73 68 61  |%,cardmoved%,sha|
000043e0  64 65 64 25 0d 15 72 42  74 61 67 25 3d a3 3a 6c  |ded%..rBtag%=.:l|
000043f0  61 79 25 3d a3 3a 63 61  72 64 6d 6f 76 65 64 25  |ay%=.:cardmoved%|
00004400  3d a3 3a 74 75 72 6e 31  25 3d a3 3a 74 75 72 6e  |=.:turn1%=.:turn|
00004410  32 25 3d a3 3a 74 75 72  6e 33 25 3d a3 3a 74 75  |2%=.:turn3%=.:tu|
00004420  72 6e 34 25 3d a3 0d 15  7c 0f de 20 63 6c 69 63  |rn4%=...|.. clic|
00004430  6b 25 20 34 30 0d 15 86  11 21 63 6c 69 63 6b 25  |k% 40....!click%|
00004440  3d 6d 61 69 6e 25 0d 15  90 12 63 6c 69 63 6b 25  |=main%....click%|
00004450  21 34 3d 69 63 6f 6e 25  0d 15 9a 2b c8 99 22 57  |!4=icon%...+.."W|
00004460  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00004470  22 2c 2c 63 6c 69 63 6b  25 20 b8 20 2c 63 6c 69  |",,click% . ,cli|
00004480  63 6b 25 0d 15 a4 14 6e  61 6d 65 24 3d 24 63 6c  |ck%....name$=$cl|
00004490  69 63 6b 25 21 33 32 0d  15 ae 13 6e 61 6d 65 24  |ick%!32....name$|
000044a0  3d c1 6e 61 6d 65 24 2c  32 29 0d 15 b8 10 6e 61  |=.name$,2)....na|
000044b0  6d 65 25 3d bb 6e 61 6d  65 24 0d 15 c2 53 e7 20  |me%=.name$...S. |
000044c0  69 63 6f 6e 25 3d 30 20  8c 20 69 63 6f 6e 73 75  |icon%=0 . iconsu|
000044d0  69 74 25 3d 30 20 8b 20  c8 99 22 57 69 6d 70 45  |it%=0 . .."WimpE|
000044e0  78 74 5f 44 69 76 69 64  65 22 2c 2c 2c 6e 61 6d  |xt_Divide",,,nam|
000044f0  65 25 2c 31 33 20 b8 20  69 63 6f 6e 73 75 69 74  |e%,13 . iconsuit|
00004500  25 2c 2c 63 61 72 64 76  61 6c 75 65 25 0d 15 cc  |%,,cardvalue%...|
00004510  19 69 63 6f 6e 73 75 69  74 25 3d 69 63 6f 6e 73  |.iconsuit%=icons|
00004520  75 69 74 25 2b 31 0d 15  d6 14 e7 20 63 61 72 64  |uit%+1..... card|
00004530  76 61 6c 75 65 25 3d 30  20 8c 0d 15 e0 1b 20 20  |value%=0 .....  |
00004540  69 63 6f 6e 73 75 69 74  25 3d 69 63 6f 6e 73 75  |iconsuit%=iconsu|
00004550  69 74 25 2d 31 0d 15 ea  13 20 20 63 61 72 64 76  |it%-1....  cardv|
00004560  61 6c 75 65 25 3d 31 33  0d 15 f4 05 cd 0d 15 fe  |alue%=13........|
00004570  1c f4 20 4e 6f 77 20 70  72 6f 63 65 73 73 20 74  |.. Now process t|
00004580  68 65 20 65 76 65 6e 74  2e 0d 16 08 8c e7 20 6e  |he event...... n|
00004590  61 6d 65 25 3c 3e 30 20  80 20 28 69 63 6f 6e 25  |ame%<>0 . (icon%|
000045a0  3d 6f 73 6d 6f 70 69 6c  65 31 68 61 6e 25 28 31  |=osmopile1han%(1|
000045b0  29 20 84 20 69 63 6f 6e  25 3d 6f 73 6d 6f 70 69  |) . icon%=osmopi|
000045c0  6c 65 32 68 61 6e 25 28  31 29 20 84 20 69 63 6f  |le2han%(1) . ico|
000045d0  6e 25 3d 6f 73 6d 6f 70  69 6c 65 33 68 61 6e 25  |n%=osmopile3han%|
000045e0  28 31 29 20 84 20 69 63  6f 6e 25 3d 6f 73 6d 6f  |(1) . icon%=osmo|
000045f0  70 69 6c 65 34 68 61 6e  25 28 31 29 20 84 20 69  |pile4han%(1) . i|
00004600  63 6f 6e 25 3d 6f 73 6d  6f 77 61 73 74 65 68 61  |con%=osmowasteha|
00004610  6e 25 29 20 8c 0d 16 12  14 20 20 c8 8e 20 69 63  |n%) .....  .. ic|
00004620  6f 6e 73 75 69 74 25 20  ca 0d 16 1c 12 20 20 20  |onsuit% .....   |
00004630  20 c9 20 73 75 69 74 31  25 20 3a 0d 16 26 1b 20  | . suit1% :..&. |
00004640  20 20 20 20 20 66 6f 75  6e 64 31 25 3d 66 6f 75  |     found1%=fou|
00004650  6e 64 31 25 2b 31 0d 16  30 6a 20 20 20 20 20 20  |nd1%+1..0j      |
00004660  6f 73 6d 6f 66 6f 75 6e  64 31 68 61 6e 25 28 66  |osmofound1han%(f|
00004670  6f 75 6e 64 31 25 29 3d  a4 63 72 65 61 74 65 69  |ound1%)=.createi|
00004680  63 6f 6e 28 6d 61 69 6e  25 2c 6e 61 6d 65 24 2c  |con(main%,name$,|
00004690  22 22 2c 6c 65 66 74 31  25 2c 74 6f 70 31 25 2d  |"",left1%,top1%-|
000046a0  32 30 38 2c 6c 65 66 74  31 25 2b 31 35 38 2c 74  |208,left1%+158,t|
000046b0  6f 70 31 25 2c 25 31 30  30 30 31 31 30 31 31 29  |op1%,%100011011)|
000046c0  0d 16 3a 1a 20 20 20 20  20 20 6c 65 66 74 31 25  |..:.      left1%|
000046d0  3d 6c 65 66 74 31 25 2b  37 30 0d 16 44 24 20 20  |=left1%+70..D$  |
000046e0  20 20 20 20 6f 73 6d 6f  66 6f 75 6e 64 31 25 28  |    osmofound1%(|
000046f0  66 6f 75 6e 64 31 25 29  3d 6e 61 6d 65 25 0d 16  |found1%)=name%..|
00004700  4e 2c 20 20 20 20 20 20  6f 73 6d 6f 66 6f 75 6e  |N,      osmofoun|
00004710  64 31 76 61 6c 25 28 66  6f 75 6e 64 31 25 29 3d  |d1val%(found1%)=|
00004720  63 61 72 64 76 61 6c 75  65 25 0d 16 58 40 20 20  |cardvalue%..X@  |
00004730  20 20 20 20 f2 6f 73 6d  6f 73 69 73 5f 6d 6f 76  |    .osmosis_mov|
00004740  65 63 61 72 64 28 69 63  6f 6e 25 2c 6f 73 6d 6f  |ecard(icon%,osmo|
00004750  66 6f 75 6e 64 31 68 61  6e 25 28 66 6f 75 6e 64  |found1han%(found|
00004760  31 25 29 2c 6e 61 6d 65  24 29 0d 16 62 16 20 20  |1%),name$)..b.  |
00004770  20 20 20 20 63 61 72 64  6d 6f 76 65 64 25 3d b9  |    cardmoved%=.|
00004780  0d 16 6c 29 20 20 20 20  20 20 e7 20 6f 73 6d 6f  |..l)      . osmo|
00004790  66 6f 75 6e 64 31 25 28  31 33 29 3c 3e 30 20 8c  |found1%(13)<>0 .|
000047a0  20 74 75 72 6e 31 25 3d  b9 0d 16 76 12 20 20 20  | turn1%=...v.   |
000047b0  20 c9 20 73 75 69 74 32  25 20 3a 0d 16 80 19 20  | . suit2% :.... |
000047c0  20 20 20 20 20 e3 20 49  3d 31 20 b8 20 66 6f 75  |     . I=1 . fou|
000047d0  6e 64 31 25 0d 16 8a 33  20 20 20 20 20 20 20 20  |nd1%...3        |
000047e0  e7 20 63 61 72 64 76 61  6c 75 65 25 3d 6f 73 6d  |. cardvalue%=osm|
000047f0  6f 66 6f 75 6e 64 31 76  61 6c 25 28 49 29 20 8c  |ofound1val%(I) .|
00004800  20 74 61 67 25 3d b9 0d  16 94 0d 20 20 20 20 20  | tag%=.....     |
00004810  20 ed 20 49 0d 16 9e 14  20 20 20 20 20 20 e7 20  | . I....      . |
00004820  74 61 67 25 3d b9 20 8c  0d 16 a8 1d 20 20 20 20  |tag%=. .....    |
00004830  20 20 20 20 66 6f 75 6e  64 32 25 3d 66 6f 75 6e  |    found2%=foun|
00004840  64 32 25 2b 31 0d 16 b2  6c 20 20 20 20 20 20 20  |d2%+1...l       |
00004850  20 6f 73 6d 6f 66 6f 75  6e 64 32 68 61 6e 25 28  | osmofound2han%(|
00004860  66 6f 75 6e 64 32 25 29  3d a4 63 72 65 61 74 65  |found2%)=.create|
00004870  69 63 6f 6e 28 6d 61 69  6e 25 2c 6e 61 6d 65 24  |icon(main%,name$|
00004880  2c 22 22 2c 6c 65 66 74  32 25 2c 74 6f 70 32 25  |,"",left2%,top2%|
00004890  2d 32 30 38 2c 6c 65 66  74 32 25 2b 31 35 38 2c  |-208,left2%+158,|
000048a0  74 6f 70 32 25 2c 25 31  30 30 30 31 31 30 31 31  |top2%,%100011011|
000048b0  29 0d 16 bc 1c 20 20 20  20 20 20 20 20 6c 65 66  |)....        lef|
000048c0  74 32 25 3d 6c 65 66 74  32 25 2b 37 30 0d 16 c6  |t2%=left2%+70...|
000048d0  26 20 20 20 20 20 20 20  20 6f 73 6d 6f 66 6f 75  |&        osmofou|
000048e0  6e 64 32 25 28 66 6f 75  6e 64 32 25 29 3d 6e 61  |nd2%(found2%)=na|
000048f0  6d 65 25 0d 16 d0 2e 20  20 20 20 20 20 20 20 6f  |me%....        o|
00004900  73 6d 6f 66 6f 75 6e 64  32 76 61 6c 25 28 66 6f  |smofound2val%(fo|
00004910  75 6e 64 32 25 29 3d 63  61 72 64 76 61 6c 75 65  |und2%)=cardvalue|
00004920  25 0d 16 da 42 20 20 20  20 20 20 20 20 f2 6f 73  |%...B        .os|
00004930  6d 6f 73 69 73 5f 6d 6f  76 65 63 61 72 64 28 69  |mosis_movecard(i|
00004940  63 6f 6e 25 2c 6f 73 6d  6f 66 6f 75 6e 64 32 68  |con%,osmofound2h|
00004950  61 6e 25 28 66 6f 75 6e  64 32 25 29 2c 6e 61 6d  |an%(found2%),nam|
00004960  65 24 29 0d 16 e4 18 20  20 20 20 20 20 20 20 63  |e$)....        c|
00004970  61 72 64 6d 6f 76 65 64  25 3d b9 0d 16 ee 0b 20  |ardmoved%=..... |
00004980  20 20 20 20 20 cd 0d 16  f8 29 20 20 20 20 20 20  |     ....)      |
00004990  e7 20 6f 73 6d 6f 66 6f  75 6e 64 32 25 28 31 33  |. osmofound2%(13|
000049a0  29 3c 3e 30 20 8c 20 74  75 72 6e 32 25 3d b9 0d  |)<>0 . turn2%=..|
000049b0  17 02 12 20 20 20 20 c9  20 73 75 69 74 33 25 20  |...    . suit3% |
000049c0  3a 0d 17 0c 19 20 20 20  20 20 20 e3 20 49 3d 31  |:....      . I=1|
000049d0  20 b8 20 66 6f 75 6e 64  32 25 0d 17 16 33 20 20  | . found2%...3  |
000049e0  20 20 20 20 20 20 e7 20  63 61 72 64 76 61 6c 75  |      . cardvalu|
000049f0  65 25 3d 6f 73 6d 6f 66  6f 75 6e 64 32 76 61 6c  |e%=osmofound2val|
00004a00  25 28 49 29 20 8c 20 74  61 67 25 3d b9 0d 17 20  |%(I) . tag%=... |
00004a10  0d 20 20 20 20 20 20 ed  20 49 0d 17 2a 14 20 20  |.      . I..*.  |
00004a20  20 20 20 20 e7 20 74 61  67 25 3d b9 20 8c 0d 17  |    . tag%=. ...|
00004a30  34 1d 20 20 20 20 20 20  20 20 66 6f 75 6e 64 33  |4.        found3|
00004a40  25 3d 66 6f 75 6e 64 33  25 2b 31 0d 17 3e 6c 20  |%=found3%+1..>l |
00004a50  20 20 20 20 20 20 20 6f  73 6d 6f 66 6f 75 6e 64  |       osmofound|
00004a60  33 68 61 6e 25 28 66 6f  75 6e 64 33 25 29 3d a4  |3han%(found3%)=.|
00004a70  63 72 65 61 74 65 69 63  6f 6e 28 6d 61 69 6e 25  |createicon(main%|
00004a80  2c 6e 61 6d 65 24 2c 22  22 2c 6c 65 66 74 33 25  |,name$,"",left3%|
00004a90  2c 74 6f 70 33 25 2d 32  30 38 2c 6c 65 66 74 33  |,top3%-208,left3|
00004aa0  25 2b 31 35 38 2c 74 6f  70 33 25 2c 25 31 30 30  |%+158,top3%,%100|
00004ab0  30 31 31 30 31 31 29 0d  17 48 1c 20 20 20 20 20  |011011)..H.     |
00004ac0  20 20 20 6c 65 66 74 33  25 3d 6c 65 66 74 33 25  |   left3%=left3%|
00004ad0  2b 37 30 0d 17 52 26 20  20 20 20 20 20 20 20 6f  |+70..R&        o|
00004ae0  73 6d 6f 66 6f 75 6e 64  33 25 28 66 6f 75 6e 64  |smofound3%(found|
00004af0  33 25 29 3d 6e 61 6d 65  25 0d 17 5c 2e 20 20 20  |3%)=name%..\.   |
00004b00  20 20 20 20 20 6f 73 6d  6f 66 6f 75 6e 64 33 76  |     osmofound3v|
00004b10  61 6c 25 28 66 6f 75 6e  64 33 25 29 3d 63 61 72  |al%(found3%)=car|
00004b20  64 76 61 6c 75 65 25 0d  17 66 42 20 20 20 20 20  |dvalue%..fB     |
00004b30  20 20 20 f2 6f 73 6d 6f  73 69 73 5f 6d 6f 76 65  |   .osmosis_move|
00004b40  63 61 72 64 28 69 63 6f  6e 25 2c 6f 73 6d 6f 66  |card(icon%,osmof|
00004b50  6f 75 6e 64 33 68 61 6e  25 28 66 6f 75 6e 64 33  |ound3han%(found3|
00004b60  25 29 2c 6e 61 6d 65 24  29 0d 17 70 18 20 20 20  |%),name$)..p.   |
00004b70  20 20 20 20 20 63 61 72  64 6d 6f 76 65 64 25 3d  |     cardmoved%=|
00004b80  b9 0d 17 7a 0b 20 20 20  20 20 20 cd 0d 17 84 29  |...z.      ....)|
00004b90  20 20 20 20 20 20 e7 20  6f 73 6d 6f 66 6f 75 6e  |      . osmofoun|
00004ba0  64 33 25 28 31 33 29 3c  3e 30 20 8c 20 74 75 72  |d3%(13)<>0 . tur|
00004bb0  6e 33 25 3d b9 0d 17 8e  12 20 20 20 20 c9 20 73  |n3%=.....    . s|
00004bc0  75 69 74 34 25 20 3a 0d  17 98 19 20 20 20 20 20  |uit4% :....     |
00004bd0  20 e3 20 49 3d 31 20 b8  20 66 6f 75 6e 64 33 25  | . I=1 . found3%|
00004be0  0d 17 a2 33 20 20 20 20  20 20 20 20 e7 20 63 61  |...3        . ca|
00004bf0  72 64 76 61 6c 75 65 25  3d 6f 73 6d 6f 66 6f 75  |rdvalue%=osmofou|
00004c00  6e 64 33 76 61 6c 25 28  49 29 20 8c 20 74 61 67  |nd3val%(I) . tag|
00004c10  25 3d b9 0d 17 ac 0d 20  20 20 20 20 20 ed 20 49  |%=.....      . I|
00004c20  0d 17 b6 14 20 20 20 20  20 20 e7 20 74 61 67 25  |....      . tag%|
00004c30  3d b9 20 8c 0d 17 c0 1d  20 20 20 20 20 20 20 20  |=. .....        |
00004c40  66 6f 75 6e 64 34 25 3d  66 6f 75 6e 64 34 25 2b  |found4%=found4%+|
00004c50  31 0d 17 ca 6c 20 20 20  20 20 20 20 20 6f 73 6d  |1...l        osm|
00004c60  6f 66 6f 75 6e 64 34 68  61 6e 25 28 66 6f 75 6e  |ofound4han%(foun|
00004c70  64 34 25 29 3d a4 63 72  65 61 74 65 69 63 6f 6e  |d4%)=.createicon|
00004c80  28 6d 61 69 6e 25 2c 6e  61 6d 65 24 2c 22 22 2c  |(main%,name$,"",|
00004c90  6c 65 66 74 34 25 2c 74  6f 70 34 25 2d 32 30 38  |left4%,top4%-208|
00004ca0  2c 6c 65 66 74 34 25 2b  31 35 38 2c 74 6f 70 34  |,left4%+158,top4|
00004cb0  25 2c 25 31 30 30 30 31  31 30 31 31 29 0d 17 d4  |%,%100011011)...|
00004cc0  1c 20 20 20 20 20 20 20  20 6c 65 66 74 34 25 3d  |.        left4%=|
00004cd0  6c 65 66 74 34 25 2b 37  30 0d 17 de 26 20 20 20  |left4%+70...&   |
00004ce0  20 20 20 20 20 6f 73 6d  6f 66 6f 75 6e 64 34 25  |     osmofound4%|
00004cf0  28 66 6f 75 6e 64 34 25  29 3d 6e 61 6d 65 25 0d  |(found4%)=name%.|
00004d00  17 e8 2e 20 20 20 20 20  20 20 20 6f 73 6d 6f 66  |...        osmof|
00004d10  6f 75 6e 64 34 76 61 6c  25 28 66 6f 75 6e 64 34  |ound4val%(found4|
00004d20  25 29 3d 63 61 72 64 76  61 6c 75 65 25 0d 17 f2  |%)=cardvalue%...|
00004d30  42 20 20 20 20 20 20 20  20 f2 6f 73 6d 6f 73 69  |B        .osmosi|
00004d40  73 5f 6d 6f 76 65 63 61  72 64 28 69 63 6f 6e 25  |s_movecard(icon%|
00004d50  2c 6f 73 6d 6f 66 6f 75  6e 64 34 68 61 6e 25 28  |,osmofound4han%(|
00004d60  66 6f 75 6e 64 34 25 29  2c 6e 61 6d 65 24 29 0d  |found4%),name$).|
00004d70  17 fc 18 20 20 20 20 20  20 20 20 63 61 72 64 6d  |...        cardm|
00004d80  6f 76 65 64 25 3d b9 0d  18 06 0b 20 20 20 20 20  |oved%=.....     |
00004d90  20 cd 0d 18 10 29 20 20  20 20 20 20 e7 20 6f 73  | ....)      . os|
00004da0  6d 6f 66 6f 75 6e 64 34  25 28 31 33 29 3c 3e 30  |mofound4%(13)<>0|
00004db0  20 8c 20 74 75 72 6e 34  25 3d b9 0d 18 1a 07 20  | . turn4%=..... |
00004dc0  20 cb 0d 18 24 1b 20 20  e7 20 69 63 6f 6e 73 75  | ...$.  . iconsu|
00004dd0  69 74 25 3c 3e 73 75 69  74 31 25 20 8c 0d 18 2e  |it%<>suit1% ....|
00004de0  1c 20 20 20 20 e7 20 6f  73 6d 6f 66 6f 75 6e 64  |.    . osmofound|
00004df0  32 25 28 31 29 3d 30 20  8c 0d 18 38 2a 20 20 20  |2%(1)=0 ...8*   |
00004e00  20 20 20 e7 20 63 61 72  64 76 61 6c 75 65 25 3d  |   . cardvalue%=|
00004e10  6f 73 6d 6f 66 6f 75 6e  64 31 76 61 6c 25 28 31  |osmofound1val%(1|
00004e20  29 20 8c 0d 18 42 20 20  20 20 20 20 20 20 20 6f  |) ...B         o|
00004e30  73 6d 6f 66 6f 75 6e 64  32 25 28 31 29 3d 6e 61  |smofound2%(1)=na|
00004e40  6d 65 25 0d 18 4c 66 20  20 20 20 20 20 20 20 6f  |me%..Lf        o|
00004e50  73 6d 6f 66 6f 75 6e 64  32 68 61 6e 25 28 31 29  |smofound2han%(1)|
00004e60  3d a4 63 72 65 61 74 65  69 63 6f 6e 28 6d 61 69  |=.createicon(mai|
00004e70  6e 25 2c 6e 61 6d 65 24  2c 22 22 2c 6c 65 66 74  |n%,name$,"",left|
00004e80  32 25 2c 74 6f 70 32 25  2d 32 30 38 2c 6c 65 66  |2%,top2%-208,lef|
00004e90  74 32 25 2b 31 35 38 2c  74 6f 70 32 25 2c 25 31  |t2%+158,top2%,%1|
00004ea0  30 30 30 31 31 30 31 31  29 0d 18 56 1c 20 20 20  |00011011)..V.   |
00004eb0  20 20 20 20 20 6c 65 66  74 32 25 3d 6c 65 66 74  |     left2%=left|
00004ec0  32 25 2b 37 30 0d 18 60  1c 20 20 20 20 20 20 20  |2%+70..`.       |
00004ed0  20 73 75 69 74 32 25 3d  69 63 6f 6e 73 75 69 74  | suit2%=iconsuit|
00004ee0  25 0d 18 6a 3c 20 20 20  20 20 20 20 20 f2 6f 73  |%..j<        .os|
00004ef0  6d 6f 73 69 73 5f 6d 6f  76 65 63 61 72 64 28 69  |mosis_movecard(i|
00004f00  63 6f 6e 25 2c 6f 73 6d  6f 66 6f 75 6e 64 32 68  |con%,osmofound2h|
00004f10  61 6e 25 28 31 29 2c 6e  61 6d 65 24 29 0d 18 74  |an%(1),name$)..t|
00004f20  15 20 20 20 20 20 20 20  20 66 6f 75 6e 64 32 25  |.        found2%|
00004f30  3d 31 0d 18 7e 18 20 20  20 20 20 20 20 20 63 61  |=1..~.        ca|
00004f40  72 64 6d 6f 76 65 64 25  3d b9 0d 18 88 0b 20 20  |rdmoved%=.....  |
00004f50  20 20 20 20 cd 0d 18 92  09 20 20 20 20 cc 0d 18  |    .....    ...|
00004f60  9c 1e 20 20 20 20 20 20  e7 20 6f 73 6d 6f 66 6f  |..      . osmofo|
00004f70  75 6e 64 33 25 28 31 29  3d 30 20 8c 0d 18 a6 2c  |und3%(1)=0 ....,|
00004f80  20 20 20 20 20 20 20 20  e7 20 63 61 72 64 76 61  |        . cardva|
00004f90  6c 75 65 25 3d 6f 73 6d  6f 66 6f 75 6e 64 31 76  |lue%=osmofound1v|
00004fa0  61 6c 25 28 31 29 20 8c  0d 18 b0 22 20 20 20 20  |al%(1) ...."    |
00004fb0  20 20 20 20 20 20 6f 73  6d 6f 66 6f 75 6e 64 33  |      osmofound3|
00004fc0  25 28 31 29 3d 6e 61 6d  65 25 0d 18 ba 68 20 20  |%(1)=name%...h  |
00004fd0  20 20 20 20 20 20 20 20  6f 73 6d 6f 66 6f 75 6e  |        osmofoun|
00004fe0  64 33 68 61 6e 25 28 31  29 3d a4 63 72 65 61 74  |d3han%(1)=.creat|
00004ff0  65 69 63 6f 6e 28 6d 61  69 6e 25 2c 6e 61 6d 65  |eicon(main%,name|
00005000  24 2c 22 22 2c 6c 65 66  74 33 25 2c 74 6f 70 33  |$,"",left3%,top3|
00005010  25 2d 32 30 38 2c 6c 65  66 74 33 25 2b 31 35 38  |%-208,left3%+158|
00005020  2c 74 6f 70 33 25 2c 25  31 30 30 30 31 31 30 31  |,top3%,%10001101|
00005030  31 29 0d 18 c4 1e 20 20  20 20 20 20 20 20 20 20  |1)....          |
00005040  6c 65 66 74 33 25 3d 6c  65 66 74 33 25 2b 37 30  |left3%=left3%+70|
00005050  0d 18 ce 1e 20 20 20 20  20 20 20 20 20 20 73 75  |....          su|
00005060  69 74 33 25 3d 69 63 6f  6e 73 75 69 74 25 0d 18  |it3%=iconsuit%..|
00005070  d8 3e 20 20 20 20 20 20  20 20 20 20 f2 6f 73 6d  |.>          .osm|
00005080  6f 73 69 73 5f 6d 6f 76  65 63 61 72 64 28 69 63  |osis_movecard(ic|
00005090  6f 6e 25 2c 6f 73 6d 6f  66 6f 75 6e 64 33 68 61  |on%,osmofound3ha|
000050a0  6e 25 28 31 29 2c 6e 61  6d 65 24 29 0d 18 e2 1a  |n%(1),name$)....|
000050b0  20 20 20 20 20 20 20 20  20 20 63 61 72 64 6d 6f  |          cardmo|
000050c0  76 65 64 25 3d b9 0d 18  ec 17 20 20 20 20 20 20  |ved%=.....      |
000050d0  20 20 20 20 66 6f 75 6e  64 33 25 3d 31 0d 18 f6  |    found3%=1...|
000050e0  0d 20 20 20 20 20 20 20  20 cd 0d 19 00 0b 20 20  |.        .....  |
000050f0  20 20 20 20 cc 0d 19 0a  20 20 20 20 20 20 20 20  |    ....        |
00005100  20 e7 20 6f 73 6d 6f 66  6f 75 6e 64 34 25 28 31  | . osmofound4%(1|
00005110  29 3d 30 20 8c 0d 19 14  2e 20 20 20 20 20 20 20  |)=0 .....       |
00005120  20 20 20 e7 20 63 61 72  64 76 61 6c 75 65 25 3d  |   . cardvalue%=|
00005130  6f 73 6d 6f 66 6f 75 6e  64 31 76 61 6c 25 28 31  |osmofound1val%(1|
00005140  29 20 8c 0d 19 1e 24 20  20 20 20 20 20 20 20 20  |) ....$         |
00005150  20 20 20 6f 73 6d 6f 66  6f 75 6e 64 34 25 28 31  |   osmofound4%(1|
00005160  29 3d 6e 61 6d 65 25 0d  19 28 6a 20 20 20 20 20  |)=name%..(j     |
00005170  20 20 20 20 20 20 20 6f  73 6d 6f 66 6f 75 6e 64  |       osmofound|
00005180  34 68 61 6e 25 28 31 29  3d a4 63 72 65 61 74 65  |4han%(1)=.create|
00005190  69 63 6f 6e 28 6d 61 69  6e 25 2c 6e 61 6d 65 24  |icon(main%,name$|
000051a0  2c 22 22 2c 6c 65 66 74  34 25 2c 74 6f 70 34 25  |,"",left4%,top4%|
000051b0  2d 32 30 38 2c 6c 65 66  74 34 25 2b 31 35 38 2c  |-208,left4%+158,|
000051c0  74 6f 70 34 25 2c 25 31  30 30 30 31 31 30 31 31  |top4%,%100011011|
000051d0  29 0d 19 32 20 20 20 20  20 20 20 20 20 20 20 20  |)..2            |
000051e0  20 6c 65 66 74 34 25 3d  6c 65 66 74 34 25 2b 37  | left4%=left4%+7|
000051f0  30 0d 19 3c 20 20 20 20  20 20 20 20 20 20 20 20  |0..<            |
00005200  20 73 75 69 74 34 25 3d  69 63 6f 6e 73 75 69 74  | suit4%=iconsuit|
00005210  25 0d 19 46 40 20 20 20  20 20 20 20 20 20 20 20  |%..F@           |
00005220  20 f2 6f 73 6d 6f 73 69  73 5f 6d 6f 76 65 63 61  | .osmosis_moveca|
00005230  72 64 28 69 63 6f 6e 25  2c 6f 73 6d 6f 66 6f 75  |rd(icon%,osmofou|
00005240  6e 64 34 68 61 6e 25 28  31 29 2c 6e 61 6d 65 24  |nd4han%(1),name$|
00005250  29 0d 19 50 1c 20 20 20  20 20 20 20 20 20 20 20  |)..P.           |
00005260  20 63 61 72 64 6d 6f 76  65 64 25 3d b9 0d 19 5a  | cardmoved%=...Z|
00005270  19 20 20 20 20 20 20 20  20 20 20 20 20 66 6f 75  |.            fou|
00005280  6e 64 34 25 3d 31 0d 19  64 0f 20 20 20 20 20 20  |nd4%=1..d.      |
00005290  20 20 20 20 cd 0d 19 6e  0d 20 20 20 20 20 20 20  |    ...n.       |
000052a0  20 cd 0d 19 78 0b 20 20  20 20 20 20 cd 0d 19 82  | ...x.      ....|
000052b0  09 20 20 20 20 cd 0d 19  8c 07 20 20 cd 0d 19 96  |.    .....  ....|
000052c0  16 20 20 e7 20 63 61 72  64 6d 6f 76 65 64 25 3d  |.  . cardmoved%=|
000052d0  a3 20 8c 0d 19 a0 21 20  20 20 20 65 6d 70 74 79  |. ....!    empty|
000052e0  25 3d a4 6f 73 6d 6f 73  69 73 5f 65 6d 70 74 79  |%=.osmosis_empty|
000052f0  70 69 6c 65 0d 19 aa 15  20 20 20 20 e7 20 65 6d  |pile....    . em|
00005300  70 74 79 25 3c 3e 30 20  8c 0d 19 b4 16 20 20 20  |pty%<>0 .....   |
00005310  20 20 20 63 61 72 64 6d  6f 76 65 64 25 3d b9 0d  |   cardmoved%=..|
00005320  19 be 2f 20 20 20 20 20  20 f2 6f 73 6d 6f 73 69  |../      .osmosi|
00005330  73 5f 6d 6f 76 65 63 61  72 64 28 69 63 6f 6e 25  |s_movecard(icon%|
00005340  2c 65 6d 70 74 79 25 2c  6e 61 6d 65 24 29 0d 19  |,empty%,name$)..|
00005350  c8 15 20 20 20 20 20 20  c8 8e 20 65 6d 70 74 79  |..      .. empty|
00005360  25 20 ca 0d 19 d2 34 20  20 20 20 20 20 20 20 c9  |% ....4        .|
00005370  20 6f 73 6d 6f 70 69 6c  65 31 68 61 6e 25 28 31  | osmopile1han%(1|
00005380  29 20 3a 20 6f 73 6d 6f  70 69 6c 65 31 25 28 31  |) : osmopile1%(1|
00005390  29 3d 6e 61 6d 65 25 0d  19 dc 34 20 20 20 20 20  |)=name%...4     |
000053a0  20 20 20 c9 20 6f 73 6d  6f 70 69 6c 65 32 68 61  |   . osmopile2ha|
000053b0  6e 25 28 31 29 20 3a 20  6f 73 6d 6f 70 69 6c 65  |n%(1) : osmopile|
000053c0  32 25 28 31 29 3d 6e 61  6d 65 25 0d 19 e6 34 20  |2%(1)=name%...4 |
000053d0  20 20 20 20 20 20 20 c9  20 6f 73 6d 6f 70 69 6c  |       . osmopil|
000053e0  65 33 68 61 6e 25 28 31  29 20 3a 20 6f 73 6d 6f  |e3han%(1) : osmo|
000053f0  70 69 6c 65 33 25 28 31  29 3d 6e 61 6d 65 25 0d  |pile3%(1)=name%.|
00005400  19 f0 34 20 20 20 20 20  20 20 20 c9 20 6f 73 6d  |..4        . osm|
00005410  6f 70 69 6c 65 34 68 61  6e 25 28 31 29 20 3a 20  |opile4han%(1) : |
00005420  6f 73 6d 6f 70 69 6c 65  34 25 28 31 29 3d 6e 61  |osmopile4%(1)=na|
00005430  6d 65 25 0d 19 fa 0b 20  20 20 20 20 20 cb 0d 1a  |me%....      ...|
00005440  04 09 20 20 20 20 cd 0d  1a 0e 07 20 20 cd 0d 1a  |..    .....  ...|
00005450  18 05 cd 0d 1a 22 1a e7  20 69 63 6f 6e 25 3d 6f  |.....".. icon%=o|
00005460  73 6d 6f 70 61 63 6b 68  61 6e 25 20 8c 0d 1a 2c  |smopackhan% ...,|
00005470  1c 20 20 6c 61 73 74 66  72 6f 6d 25 3d 6f 73 6d  |.  lastfrom%=osm|
00005480  6f 70 61 63 6b 68 61 6e  25 0d 1a 36 18 20 20 e7  |opackhan%..6.  .|
00005490  20 6f 73 6d 6f 70 61 63  6b 25 28 31 29 3d 30 20  | osmopack%(1)=0 |
000054a0  8c 0d 1a 40 13 20 20 20  20 6c 61 73 74 74 75 72  |...@.    lasttur|
000054b0  6e 25 3d 30 0d 1a 4a 12  20 20 20 20 e3 20 49 3d  |n%=0..J.    . I=|
000054c0  31 20 b8 20 33 35 0d 1a  54 27 20 20 20 20 20 20  |1 . 35..T'      |
000054d0  6f 73 6d 6f 70 61 63 6b  25 28 49 29 3d 6f 73 6d  |osmopack%(I)=osm|
000054e0  6f 77 61 73 74 65 25 28  33 36 2d 49 29 0d 1a 5e  |owaste%(36-I)..^|
000054f0  0b 20 20 20 20 ed 20 49  0d 1a 68 12 20 20 20 20  |.    . I..h.    |
00005500  e3 20 49 3d 31 20 b8 20  33 35 0d 1a 72 19 20 20  |. I=1 . 35..r.  |
00005510  20 20 20 20 6f 73 6d 6f  77 61 73 74 65 25 28 49  |    osmowaste%(I|
00005520  29 3d 30 0d 1a 7c 0b 20  20 20 20 ed 20 49 0d 1a  |)=0..|.    . I..|
00005530  86 19 20 20 20 20 c8 95  20 6f 73 6d 6f 70 61 63  |..    .. osmopac|
00005540  6b 25 28 31 29 3d 30 0d  1a 90 14 20 20 20 20 20  |k%(1)=0....     |
00005550  20 e3 20 49 3d 31 20 b8  20 33 34 0d 1a 9a 27 20  | . I=1 . 34...' |
00005560  20 20 20 20 20 20 20 6f  73 6d 6f 70 61 63 6b 25  |       osmopack%|
00005570  28 49 29 3d 6f 73 6d 6f  70 61 63 6b 25 28 49 2b  |(I)=osmopack%(I+|
00005580  31 29 0d 1a a4 0d 20 20  20 20 20 20 ed 20 49 0d  |1)....      . I.|
00005590  1a ae 19 20 20 20 20 20  20 6f 73 6d 6f 70 61 63  |...      osmopac|
000055a0  6b 25 28 33 35 29 3d 30  0d 1a b8 09 20 20 20 20  |k%(35)=0....    |
000055b0  ce 0d 1a c2 31 20 20 20  20 f2 73 65 74 69 63 6f  |....1    .setico|
000055c0  6e 73 70 72 69 74 65 28  6d 61 69 6e 25 2c 6f 73  |nsprite(main%,os|
000055d0  6d 6f 70 61 63 6b 68 61  6e 25 2c 22 62 61 63 6b  |mopackhan%,"back|
000055e0  22 29 0d 1a cc 34 20 20  20 20 f2 73 65 74 69 63  |")...4    .setic|
000055f0  6f 6e 73 70 72 69 74 65  28 6d 61 69 6e 25 2c 6f  |onsprite(main%,o|
00005600  73 6d 6f 77 61 73 74 65  68 61 6e 25 2c 22 6e 6f  |smowastehan%,"no|
00005610  63 61 72 64 22 29 0d 1a  d6 07 20 20 cc 0d 1a e0  |card")....  ....|
00005620  1a 20 20 20 20 e7 20 6f  73 6d 6f 70 61 63 6b 25  |.    . osmopack%|
00005630  28 33 29 3d 30 20 8c 0d  1a ea 1c 20 20 20 20 20  |(3)=0 .....     |
00005640  20 e7 20 6f 73 6d 6f 70  61 63 6b 25 28 32 29 3d  | . osmopack%(2)=|
00005650  30 20 8c 0d 1a f4 1b 20  20 20 20 20 20 20 20 e3  |0 .....        .|
00005660  20 49 3d 33 34 20 b8 20  31 20 88 20 2d 31 0d 1a  | I=34 . 1 . -1..|
00005670  fe 2b 20 20 20 20 20 20  20 20 20 20 6f 73 6d 6f  |.+          osmo|
00005680  77 61 73 74 65 25 28 49  2b 31 29 3d 6f 73 6d 6f  |waste%(I+1)=osmo|
00005690  77 61 73 74 65 25 28 49  29 0d 1b 08 0f 20 20 20  |waste%(I)....   |
000056a0  20 20 20 20 20 ed 20 49  0d 1b 12 26 20 20 20 20  |     . I...&    |
000056b0  20 20 20 20 6f 73 6d 6f  77 61 73 74 65 25 28 31  |    osmowaste%(1|
000056c0  29 3d 6f 73 6d 6f 70 61  63 6b 25 28 31 29 0d 1b  |)=osmopack%(1)..|
000056d0  1c 1a 20 20 20 20 20 20  20 20 6f 73 6d 6f 70 61  |..        osmopa|
000056e0  63 6b 25 28 31 29 3d 30  0d 1b 26 17 20 20 20 20  |ck%(1)=0..&.    |
000056f0  20 20 20 20 6c 61 73 74  74 75 72 6e 25 3d 31 0d  |    lastturn%=1.|
00005700  1b 30 0b 20 20 20 20 20  20 cc 0d 1b 3a 1b 20 20  |.0.      ...:.  |
00005710  20 20 20 20 20 20 e3 20  49 3d 33 33 20 b8 20 31  |      . I=33 . 1|
00005720  20 88 20 2d 31 0d 1b 44  2b 20 20 20 20 20 20 20  | . -1..D+       |
00005730  20 20 20 6f 73 6d 6f 77  61 73 74 65 25 28 49 2b  |   osmowaste%(I+|
00005740  32 29 3d 6f 73 6d 6f 77  61 73 74 65 25 28 49 29  |2)=osmowaste%(I)|
00005750  0d 1b 4e 0f 20 20 20 20  20 20 20 20 ed 20 49 0d  |..N.        . I.|
00005760  1b 58 26 20 20 20 20 20  20 20 20 6f 73 6d 6f 77  |.X&        osmow|
00005770  61 73 74 65 25 28 32 29  3d 6f 73 6d 6f 70 61 63  |aste%(2)=osmopac|
00005780  6b 25 28 31 29 0d 1b 62  26 20 20 20 20 20 20 20  |k%(1)..b&       |
00005790  20 6f 73 6d 6f 77 61 73  74 65 25 28 31 29 3d 6f  | osmowaste%(1)=o|
000057a0  73 6d 6f 70 61 63 6b 25  28 32 29 0d 1b 6c 29 20  |smopack%(2)..l) |
000057b0  20 20 20 20 20 20 20 6f  73 6d 6f 70 61 63 6b 25  |       osmopack%|
000057c0  28 31 29 3d 30 3a 6f 73  6d 6f 70 61 63 6b 25 28  |(1)=0:osmopack%(|
000057d0  32 29 3d 30 0d 1b 76 17  20 20 20 20 20 20 20 20  |2)=0..v.        |
000057e0  6c 61 73 74 74 75 72 6e  25 3d 32 0d 1b 80 0b 20  |lastturn%=2.... |
000057f0  20 20 20 20 20 cd 0d 1b  8a 09 20 20 20 20 cc 0d  |     .....    ..|
00005800  1b 94 19 20 20 20 20 20  20 e3 20 49 3d 33 32 20  |...      . I=32 |
00005810  b8 20 31 20 88 20 2d 31  0d 1b 9e 29 20 20 20 20  |. 1 . -1...)    |
00005820  20 20 20 20 6f 73 6d 6f  77 61 73 74 65 25 28 49  |    osmowaste%(I|
00005830  2b 33 29 3d 6f 73 6d 6f  77 61 73 74 65 25 28 49  |+3)=osmowaste%(I|
00005840  29 0d 1b a8 0d 20 20 20  20 20 20 ed 20 49 0d 1b  |)....      . I..|
00005850  b2 24 20 20 20 20 20 20  6f 73 6d 6f 77 61 73 74  |.$      osmowast|
00005860  65 25 28 33 29 3d 6f 73  6d 6f 70 61 63 6b 25 28  |e%(3)=osmopack%(|
00005870  31 29 0d 1b bc 24 20 20  20 20 20 20 6f 73 6d 6f  |1)...$      osmo|
00005880  77 61 73 74 65 25 28 32  29 3d 6f 73 6d 6f 70 61  |waste%(2)=osmopa|
00005890  63 6b 25 28 32 29 0d 1b  c6 24 20 20 20 20 20 20  |ck%(2)...$      |
000058a0  6f 73 6d 6f 77 61 73 74  65 25 28 31 29 3d 6f 73  |osmowaste%(1)=os|
000058b0  6d 6f 70 61 63 6b 25 28  33 29 0d 1b d0 14 20 20  |mopack%(3)....  |
000058c0  20 20 20 20 e3 20 49 3d  31 20 b8 20 33 32 0d 1b  |    . I=1 . 32..|
000058d0  da 27 20 20 20 20 20 20  20 20 6f 73 6d 6f 70 61  |.'        osmopa|
000058e0  63 6b 25 28 49 29 3d 6f  73 6d 6f 70 61 63 6b 25  |ck%(I)=osmopack%|
000058f0  28 49 2b 33 29 0d 1b e4  0d 20 20 20 20 20 20 ed  |(I+3)....      .|
00005900  20 49 0d 1b ee 15 20 20  20 20 20 20 e3 20 49 3d  | I....      . I=|
00005910  33 33 20 b8 20 33 35 0d  1b f8 1a 20 20 20 20 20  |33 . 35....     |
00005920  20 20 20 6f 73 6d 6f 70  61 63 6b 25 28 49 29 3d  |   osmopack%(I)=|
00005930  30 0d 1c 02 0d 20 20 20  20 20 20 ed 20 49 0d 1c  |0....      . I..|
00005940  0c 15 20 20 20 20 20 20  6c 61 73 74 74 75 72 6e  |..      lastturn|
00005950  25 3d 33 0d 1c 16 09 20  20 20 20 cd 0d 1c 20 1b  |%=3....    ... .|
00005960  20 20 20 20 e7 20 6f 73  6d 6f 77 61 73 74 65 25  |    . osmowaste%|
00005970  28 31 29 3d 30 20 8c 0d  1c 2a 36 20 20 20 20 20  |(1)=0 ...*6     |
00005980  20 f2 73 65 74 69 63 6f  6e 73 70 72 69 74 65 28  | .seticonsprite(|
00005990  6d 61 69 6e 25 2c 6f 73  6d 6f 77 61 73 74 65 68  |main%,osmowasteh|
000059a0  61 6e 25 2c 22 6e 6f 63  61 72 64 22 29 0d 1c 34  |an%,"nocard")..4|
000059b0  09 20 20 20 20 cc 0d 1c  3e 3c 20 20 20 20 20 20  |.    ...><      |
000059c0  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
000059d0  61 69 6e 25 2c 6f 73 6d  6f 77 61 73 74 65 68 61  |ain%,osmowasteha|
000059e0  6e 25 2c c3 6f 73 6d 6f  77 61 73 74 65 25 28 31  |n%,.osmowaste%(1|
000059f0  29 29 0d 1c 48 09 20 20  20 20 cd 0d 1c 52 46 20  |))..H.    ...RF |
00005a00  20 20 20 e7 20 6f 73 6d  6f 70 61 63 6b 25 28 31  |   . osmopack%(1|
00005a10  29 3d 30 20 8c 20 f2 73  65 74 69 63 6f 6e 73 70  |)=0 . .seticonsp|
00005a20  72 69 74 65 28 6d 61 69  6e 25 2c 6f 73 6d 6f 70  |rite(main%,osmop|
00005a30  61 63 6b 68 61 6e 25 2c  22 6e 6f 63 61 72 64 22  |ackhan%,"nocard"|
00005a40  29 0d 1c 5c 07 20 20 cd  0d 1c 66 10 63 61 72 64  |)..\.  ...f.card|
00005a50  6d 6f 76 65 64 25 3d b9  0d 1c 70 05 cd 0d 1c 7a  |moved%=...p....z|
00005a60  10 e7 20 74 75 72 6e 31  25 3d b9 20 8c 0d 1c 84  |.. turn1%=. ....|
00005a70  10 20 20 e3 20 49 3d 31  20 b8 20 31 33 0d 1c 8e  |.  . I=1 . 13...|
00005a80  36 20 20 20 20 f2 73 65  74 69 63 6f 6e 73 70 72  |6    .seticonspr|
00005a90  69 74 65 28 6d 61 69 6e  25 2c 6f 73 6d 6f 66 6f  |ite(main%,osmofo|
00005aa0  75 6e 64 31 68 61 6e 25  28 49 29 2c 22 62 61 63  |und1han%(I),"bac|
00005ab0  6b 22 29 0d 1c 98 09 20  20 ed 20 49 0d 1c a2 19  |k")....  . I....|
00005ac0  20 20 74 75 72 6e 31 25  3d a3 3a 74 75 72 6e 65  |  turn1%=.:turne|
00005ad0  64 31 25 3d b9 0d 1c ac  05 cd 0d 1c b6 10 e7 20  |d1%=........... |
00005ae0  74 75 72 6e 32 25 3d b9  20 8c 0d 1c c0 10 20 20  |turn2%=. .....  |
00005af0  e3 20 49 3d 31 20 b8 20  31 33 0d 1c ca 36 20 20  |. I=1 . 13...6  |
00005b00  20 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |  .seticonsprite|
00005b10  28 6d 61 69 6e 25 2c 6f  73 6d 6f 66 6f 75 6e 64  |(main%,osmofound|
00005b20  32 68 61 6e 25 28 49 29  2c 22 62 61 63 6b 22 29  |2han%(I),"back")|
00005b30  0d 1c d4 09 20 20 ed 20  49 0d 1c de 19 20 20 74  |....  . I....  t|
00005b40  75 72 6e 32 25 3d a3 3a  74 75 72 6e 65 64 32 25  |urn2%=.:turned2%|
00005b50  3d b9 0d 1c e8 05 cd 0d  1c f2 10 e7 20 74 75 72  |=........... tur|
00005b60  6e 33 25 3d b9 20 8c 0d  1c fc 10 20 20 e3 20 49  |n3%=. .....  . I|
00005b70  3d 31 20 b8 20 31 33 0d  1d 06 36 20 20 20 20 f2  |=1 . 13...6    .|
00005b80  73 65 74 69 63 6f 6e 73  70 72 69 74 65 28 6d 61  |seticonsprite(ma|
00005b90  69 6e 25 2c 6f 73 6d 6f  66 6f 75 6e 64 33 68 61  |in%,osmofound3ha|
00005ba0  6e 25 28 49 29 2c 22 62  61 63 6b 22 29 0d 1d 10  |n%(I),"back")...|
00005bb0  09 20 20 ed 20 49 0d 1d  1a 19 20 20 74 75 72 6e  |.  . I....  turn|
00005bc0  33 25 3d a3 3a 74 75 72  6e 65 64 33 25 3d b9 0d  |3%=.:turned3%=..|
00005bd0  1d 24 05 cd 0d 1d 2e 10  e7 20 74 75 72 6e 34 25  |.$....... turn4%|
00005be0  3d b9 20 8c 0d 1d 38 10  20 20 e3 20 49 3d 31 20  |=. ...8.  . I=1 |
00005bf0  b8 20 31 33 0d 1d 42 36  20 20 20 20 f2 73 65 74  |. 13..B6    .set|
00005c00  69 63 6f 6e 73 70 72 69  74 65 28 6d 61 69 6e 25  |iconsprite(main%|
00005c10  2c 6f 73 6d 6f 66 6f 75  6e 64 34 68 61 6e 25 28  |,osmofound4han%(|
00005c20  49 29 2c 22 62 61 63 6b  22 29 0d 1d 4c 09 20 20  |I),"back")..L.  |
00005c30  ed 20 49 0d 1d 56 19 20  20 74 75 72 6e 34 25 3d  |. I..V.  turn4%=|
00005c40  a3 3a 74 75 72 6e 65 64  34 25 3d b9 0d 1d 60 05  |.:turned4%=...`.|
00005c50  cd 0d 1d 6a 14 e7 20 63  61 72 64 6d 6f 76 65 64  |...j.. cardmoved|
00005c60  25 3d b9 20 8c 0d 1d 74  32 20 20 c8 99 22 57 69  |%=. ...t2  .."Wi|
00005c70  6d 70 45 78 74 5f 53 68  61 64 65 45 6e 74 72 79  |mpExt_ShadeEntry|
00005c80  22 2c 2c 67 6d 65 6e 75  25 2c 30 2c 30 20 b8 20  |",,gmenu%,0,0 . |
00005c90  73 68 61 64 65 64 25 0d  1d 7e 36 20 20 e7 20 73  |shaded%..~6  . s|
00005ca0  68 61 64 65 64 25 3d 30  20 8c 20 c8 99 22 57 69  |haded%=0 . .."Wi|
00005cb0  6d 70 45 78 74 5f 53 68  61 64 65 45 6e 74 72 79  |mpExt_ShadeEntry|
00005cc0  22 2c 2c 67 6d 65 6e 75  25 2c 30 2c 30 0d 1d 88  |",,gmenu%,0,0...|
00005cd0  05 cd 0d 1d 92 18 e7 20  69 63 6f 6e 25 3d 30 20  |....... icon%=0 |
00005ce0  8c 20 f2 6e 65 77 67 61  6d 65 0d 1d 9c 05 e1 0d  |. .newgame......|
00005cf0  1d a6 04 0d 1d b0 2f dd  f2 6f 73 6d 6f 73 69 73  |....../..osmosis|
00005d00  5f 6d 6f 76 65 63 61 72  64 28 73 74 61 72 74 6c  |_movecard(startl|
00005d10  6f 63 25 2c 65 6e 64 6c  6f 63 25 2c 6e 61 6d 65  |oc%,endloc%,name|
00005d20  24 29 0d 1d ba 3d f4 20  54 68 69 73 20 70 72 6f  |$)...=. This pro|
00005d30  63 65 64 75 72 65 20 70  65 72 66 6f 72 6d 73 20  |cedure performs |
00005d40  6d 6f 76 65 6d 65 6e 74  20 6f 66 20 61 20 63 61  |movement of a ca|
00005d50  72 64 2c 20 6b 6e 6f 77  69 6e 67 20 69 74 73 0d  |rd, knowing its.|
00005d60  1d c4 3e f4 20 69 6e 69  74 69 61 6c 20 6c 6f 63  |..>. initial loc|
00005d70  61 74 69 6f 6e 2c 20 69  6e 63 6c 75 64 69 6e 67  |ation, including|
00005d80  20 6d 6f 76 69 6e 67 20  63 61 72 64 73 20 75 70  | moving cards up|
00005d90  20 69 6e 20 74 68 65 20  70 69 6c 65 2e 0d 1d ce  | in the pile....|
00005da0  38 6c 61 73 74 66 72 6f  6d 25 3d 73 74 61 72 74  |8lastfrom%=start|
00005db0  6c 6f 63 25 3a 6c 61 73  74 74 6f 25 3d 65 6e 64  |loc%:lastto%=end|
00005dc0  6c 6f 63 25 3a 6c 61 73  74 63 61 72 64 25 3d bb  |loc%:lastcard%=.|
00005dd0  6e 61 6d 65 24 0d 1d d8  12 c8 8e 20 73 74 61 72  |name$...... star|
00005de0  74 6c 6f 63 25 20 ca 0d  1d e2 1a 20 20 c9 20 6f  |tloc% .....  . o|
00005df0  73 6d 6f 70 69 6c 65 31  68 61 6e 25 28 31 29 20  |smopile1han%(1) |
00005e00  3a 0d 1d ec 11 20 20 20  20 e3 20 49 3d 31 20 b8  |:....    . I=1 .|
00005e10  20 33 0d 1d f6 27 20 20  20 20 20 20 6f 73 6d 6f  | 3...'      osmo|
00005e20  70 69 6c 65 31 25 28 49  29 3d 6f 73 6d 6f 70 69  |pile1%(I)=osmopi|
00005e30  6c 65 31 25 28 49 2b 31  29 0d 1e 00 0b 20 20 20  |le1%(I+1)....   |
00005e40  20 ed 20 49 0d 1e 0a 17  20 20 20 20 6f 73 6d 6f  | . I....    osmo|
00005e50  70 69 6c 65 31 25 28 34  29 3d 30 0d 1e 14 3d 20  |pile1%(4)=0...= |
00005e60  20 20 20 f2 73 65 74 69  63 6f 6e 73 70 72 69 74  |   .seticonsprit|
00005e70  65 28 6d 61 69 6e 25 2c  6f 73 6d 6f 70 69 6c 65  |e(main%,osmopile|
00005e80  31 68 61 6e 25 28 31 29  2c c3 6f 73 6d 6f 70 69  |1han%(1),.osmopi|
00005e90  6c 65 31 25 28 31 29 29  0d 1e 1e 2b 20 20 20 20  |le1%(1))...+    |
00005ea0  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
00005eb0  61 69 6e 25 2c 65 6e 64  6c 6f 63 25 2c 6e 61 6d  |ain%,endloc%,nam|
00005ec0  65 24 29 0d 1e 28 11 20  20 20 20 e3 20 49 3d 32  |e$)..(.    . I=2|
00005ed0  20 b8 20 34 0d 1e 32 48  20 20 20 20 20 20 e7 20  | . 4..2H      . |
00005ee0  6f 73 6d 6f 70 69 6c 65  31 25 28 49 29 3d 30 20  |osmopile1%(I)=0 |
00005ef0  8c 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |. .seticonsprite|
00005f00  28 6d 61 69 6e 25 2c 6f  73 6d 6f 70 69 6c 65 31  |(main%,osmopile1|
00005f10  68 61 6e 25 28 49 29 2c  22 30 22 29 0d 1e 3c 0b  |han%(I),"0")..<.|
00005f20  20 20 20 20 ed 20 49 0d  1e 46 1a 20 20 c9 20 6f  |    . I..F.  . o|
00005f30  73 6d 6f 70 69 6c 65 32  68 61 6e 25 28 31 29 20  |smopile2han%(1) |
00005f40  3a 0d 1e 50 11 20 20 20  20 e3 20 49 3d 31 20 b8  |:..P.    . I=1 .|
00005f50  20 33 0d 1e 5a 27 20 20  20 20 20 20 6f 73 6d 6f  | 3..Z'      osmo|
00005f60  70 69 6c 65 32 25 28 49  29 3d 6f 73 6d 6f 70 69  |pile2%(I)=osmopi|
00005f70  6c 65 32 25 28 49 2b 31  29 0d 1e 64 0b 20 20 20  |le2%(I+1)..d.   |
00005f80  20 ed 20 49 0d 1e 6e 17  20 20 20 20 6f 73 6d 6f  | . I..n.    osmo|
00005f90  70 69 6c 65 32 25 28 34  29 3d 30 0d 1e 78 3d 20  |pile2%(4)=0..x= |
00005fa0  20 20 20 f2 73 65 74 69  63 6f 6e 73 70 72 69 74  |   .seticonsprit|
00005fb0  65 28 6d 61 69 6e 25 2c  6f 73 6d 6f 70 69 6c 65  |e(main%,osmopile|
00005fc0  32 68 61 6e 25 28 31 29  2c c3 6f 73 6d 6f 70 69  |2han%(1),.osmopi|
00005fd0  6c 65 32 25 28 31 29 29  0d 1e 82 2b 20 20 20 20  |le2%(1))...+    |
00005fe0  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
00005ff0  61 69 6e 25 2c 65 6e 64  6c 6f 63 25 2c 6e 61 6d  |ain%,endloc%,nam|
00006000  65 24 29 0d 1e 8c 11 20  20 20 20 e3 20 49 3d 32  |e$)....    . I=2|
00006010  20 b8 20 34 0d 1e 96 48  20 20 20 20 20 20 e7 20  | . 4...H      . |
00006020  6f 73 6d 6f 70 69 6c 65  32 25 28 49 29 3d 30 20  |osmopile2%(I)=0 |
00006030  8c 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |. .seticonsprite|
00006040  28 6d 61 69 6e 25 2c 6f  73 6d 6f 70 69 6c 65 32  |(main%,osmopile2|
00006050  68 61 6e 25 28 49 29 2c  22 30 22 29 0d 1e a0 0b  |han%(I),"0")....|
00006060  20 20 20 20 ed 20 49 0d  1e aa 1a 20 20 c9 20 6f  |    . I....  . o|
00006070  73 6d 6f 70 69 6c 65 33  68 61 6e 25 28 31 29 20  |smopile3han%(1) |
00006080  3a 0d 1e b4 11 20 20 20  20 e3 20 49 3d 31 20 b8  |:....    . I=1 .|
00006090  20 33 0d 1e be 27 20 20  20 20 20 20 6f 73 6d 6f  | 3...'      osmo|
000060a0  70 69 6c 65 33 25 28 49  29 3d 6f 73 6d 6f 70 69  |pile3%(I)=osmopi|
000060b0  6c 65 33 25 28 49 2b 31  29 0d 1e c8 0b 20 20 20  |le3%(I+1)....   |
000060c0  20 ed 20 49 0d 1e d2 17  20 20 20 20 6f 73 6d 6f  | . I....    osmo|
000060d0  70 69 6c 65 33 25 28 34  29 3d 30 0d 1e dc 3d 20  |pile3%(4)=0...= |
000060e0  20 20 20 f2 73 65 74 69  63 6f 6e 73 70 72 69 74  |   .seticonsprit|
000060f0  65 28 6d 61 69 6e 25 2c  6f 73 6d 6f 70 69 6c 65  |e(main%,osmopile|
00006100  33 68 61 6e 25 28 31 29  2c c3 6f 73 6d 6f 70 69  |3han%(1),.osmopi|
00006110  6c 65 33 25 28 31 29 29  0d 1e e6 2b 20 20 20 20  |le3%(1))...+    |
00006120  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
00006130  61 69 6e 25 2c 65 6e 64  6c 6f 63 25 2c 6e 61 6d  |ain%,endloc%,nam|
00006140  65 24 29 0d 1e f0 11 20  20 20 20 e3 20 49 3d 32  |e$)....    . I=2|
00006150  20 b8 20 34 0d 1e fa 48  20 20 20 20 20 20 e7 20  | . 4...H      . |
00006160  6f 73 6d 6f 70 69 6c 65  33 25 28 49 29 3d 30 20  |osmopile3%(I)=0 |
00006170  8c 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |. .seticonsprite|
00006180  28 6d 61 69 6e 25 2c 6f  73 6d 6f 70 69 6c 65 33  |(main%,osmopile3|
00006190  68 61 6e 25 28 49 29 2c  22 30 22 29 0d 1f 04 0b  |han%(I),"0")....|
000061a0  20 20 20 20 ed 20 49 0d  1f 0e 1a 20 20 c9 20 6f  |    . I....  . o|
000061b0  73 6d 6f 70 69 6c 65 34  68 61 6e 25 28 31 29 20  |smopile4han%(1) |
000061c0  3a 0d 1f 18 11 20 20 20  20 e3 20 49 3d 31 20 b8  |:....    . I=1 .|
000061d0  20 33 0d 1f 22 27 20 20  20 20 20 20 6f 73 6d 6f  | 3.."'      osmo|
000061e0  70 69 6c 65 34 25 28 49  29 3d 6f 73 6d 6f 70 69  |pile4%(I)=osmopi|
000061f0  6c 65 34 25 28 49 2b 31  29 0d 1f 2c 0b 20 20 20  |le4%(I+1)..,.   |
00006200  20 ed 20 49 0d 1f 36 17  20 20 20 20 6f 73 6d 6f  | . I..6.    osmo|
00006210  70 69 6c 65 34 25 28 34  29 3d 30 0d 1f 40 3d 20  |pile4%(4)=0..@= |
00006220  20 20 20 f2 73 65 74 69  63 6f 6e 73 70 72 69 74  |   .seticonsprit|
00006230  65 28 6d 61 69 6e 25 2c  6f 73 6d 6f 70 69 6c 65  |e(main%,osmopile|
00006240  34 68 61 6e 25 28 31 29  2c c3 6f 73 6d 6f 70 69  |4han%(1),.osmopi|
00006250  6c 65 34 25 28 31 29 29  0d 1f 4a 2b 20 20 20 20  |le4%(1))..J+    |
00006260  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
00006270  61 69 6e 25 2c 65 6e 64  6c 6f 63 25 2c 6e 61 6d  |ain%,endloc%,nam|
00006280  65 24 29 0d 1f 54 11 20  20 20 20 e3 20 49 3d 32  |e$)..T.    . I=2|
00006290  20 b8 20 34 0d 1f 5e 48  20 20 20 20 20 20 e7 20  | . 4..^H      . |
000062a0  6f 73 6d 6f 70 69 6c 65  34 25 28 49 29 3d 30 20  |osmopile4%(I)=0 |
000062b0  8c 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |. .seticonsprite|
000062c0  28 6d 61 69 6e 25 2c 6f  73 6d 6f 70 69 6c 65 34  |(main%,osmopile4|
000062d0  68 61 6e 25 28 49 29 2c  22 30 22 29 0d 1f 68 0b  |han%(I),"0")..h.|
000062e0  20 20 20 20 ed 20 49 0d  1f 72 17 20 20 c9 20 6f  |    . I..r.  . o|
000062f0  73 6d 6f 77 61 73 74 65  68 61 6e 25 20 3a 0d 1f  |smowastehan% :..|
00006300  7c 12 20 20 20 20 e3 20  49 3d 31 20 b8 20 33 34  ||.    . I=1 . 34|
00006310  0d 1f 86 27 20 20 20 20  20 20 6f 73 6d 6f 77 61  |...'      osmowa|
00006320  73 74 65 25 28 49 29 3d  6f 73 6d 6f 77 61 73 74  |ste%(I)=osmowast|
00006330  65 25 28 49 2b 31 29 0d  1f 90 0b 20 20 20 20 ed  |e%(I+1)....    .|
00006340  20 49 0d 1f 9a 18 20 20  20 20 6f 73 6d 6f 77 61  | I....    osmowa|
00006350  73 74 65 25 28 33 35 29  3d 30 0d 1f a4 41 20 20  |ste%(35)=0...A  |
00006360  20 20 e7 20 6f 73 6d 6f  77 61 73 74 65 25 28 31  |  . osmowaste%(1|
00006370  29 3d 30 20 8c 20 68 6f  6c 65 24 3d 22 6e 6f 63  |)=0 . hole$="noc|
00006380  61 72 64 22 20 8b 20 68  6f 6c 65 24 3d c3 6f 73  |ard" . hole$=.os|
00006390  6d 6f 77 61 73 74 65 25  28 31 29 0d 1f ae 31 20  |mowaste%(1)...1 |
000063a0  20 20 20 f2 73 65 74 69  63 6f 6e 73 70 72 69 74  |   .seticonsprit|
000063b0  65 28 6d 61 69 6e 25 2c  6f 73 6d 6f 77 61 73 74  |e(main%,osmowast|
000063c0  65 68 61 6e 25 2c 68 6f  6c 65 24 29 0d 1f b8 2b  |ehan%,hole$)...+|
000063d0  20 20 20 20 f2 73 65 74  69 63 6f 6e 73 70 72 69  |    .seticonspri|
000063e0  74 65 28 6d 61 69 6e 25  2c 65 6e 64 6c 6f 63 25  |te(main%,endloc%|
000063f0  2c 6e 61 6d 65 24 29 0d  1f c2 05 cb 0d 1f cc 05  |,name$).........|
00006400  e1 0d 1f d6 04 0d 1f e0  17 dd a4 6f 73 6d 6f 73  |...........osmos|
00006410  69 73 5f 65 6d 70 74 79  70 69 6c 65 0d 1f ea 44  |is_emptypile...D|
00006420  f4 20 43 68 65 63 6b 73  20 74 6f 20 73 65 65 20  |. Checks to see |
00006430  69 66 20 74 68 65 72 65  20 61 72 65 20 61 6e 79  |if there are any|
00006440  20 65 6d 70 74 79 20 70  69 6c 65 73 2c 20 72 65  | empty piles, re|
00006450  74 75 72 6e 73 20 74 68  65 20 68 61 6e 64 6c 65  |turns the handle|
00006460  0d 1f f4 3c f4 20 6f 66  20 74 68 65 20 66 69 72  |...<. of the fir|
00006470  73 74 20 65 6d 70 74 79  20 70 69 6c 65 20 69 74  |st empty pile it|
00006480  20 65 6e 63 6f 75 6e 74  65 72 73 2c 20 65 6c 73  | encounters, els|
00006490  65 20 72 65 74 75 72 6e  73 20 30 2e 0d 1f fe 29  |e returns 0....)|
000064a0  e7 20 6f 73 6d 6f 70 69  6c 65 31 25 28 31 29 3d  |. osmopile1%(1)=|
000064b0  30 20 8c 20 3d 6f 73 6d  6f 70 69 6c 65 31 68 61  |0 . =osmopile1ha|
000064c0  6e 25 28 31 29 0d 20 08  29 e7 20 6f 73 6d 6f 70  |n%(1). .). osmop|
000064d0  69 6c 65 32 25 28 31 29  3d 30 20 8c 20 3d 6f 73  |ile2%(1)=0 . =os|
000064e0  6d 6f 70 69 6c 65 32 68  61 6e 25 28 31 29 0d 20  |mopile2han%(1). |
000064f0  12 29 e7 20 6f 73 6d 6f  70 69 6c 65 33 25 28 31  |.). osmopile3%(1|
00006500  29 3d 30 20 8c 20 3d 6f  73 6d 6f 70 69 6c 65 33  |)=0 . =osmopile3|
00006510  68 61 6e 25 28 31 29 0d  20 1c 29 e7 20 6f 73 6d  |han%(1). .). osm|
00006520  6f 70 69 6c 65 34 25 28  31 29 3d 30 20 8c 20 3d  |opile4%(1)=0 . =|
00006530  6f 73 6d 6f 70 69 6c 65  34 68 61 6e 25 28 31 29  |osmopile4han%(1)|
00006540  0d 20 26 06 3d 30 0d 20  30 04 0d 20 3a 12 dd f2  |. &.=0. 0.. :...|
00006550  6f 73 6d 6f 73 69 73 5f  75 6e 64 6f 0d 20 44 37  |osmosis_undo. D7|
00006560  f4 20 54 68 69 73 20 70  72 6f 63 65 64 75 72 65  |. This procedure|
00006570  20 77 69 6c 6c 20 75 6e  64 6f 20 74 68 65 20 6c  | will undo the l|
00006580  61 73 74 20 6d 6f 76 65  20 69 6e 20 4f 73 6d 6f  |ast move in Osmo|
00006590  73 69 73 0d 20 4e 0d ea  20 66 72 6f 6d 25 2c 49  |sis. N.. from%,I|
000065a0  0d 20 58 0b 66 72 6f 6d  25 3d 30 0d 20 62 39 e7  |. X.from%=0. b9.|
000065b0  20 6c 61 73 74 66 72 6f  6d 25 3d 6f 73 6d 6f 70  | lastfrom%=osmop|
000065c0  69 6c 65 31 68 61 6e 25  28 31 29 20 8c 20 66 72  |ile1han%(1) . fr|
000065d0  6f 6d 25 3d 6f 73 6d 6f  70 69 6c 65 31 68 61 6e  |om%=osmopile1han|
000065e0  25 28 31 29 0d 20 6c 39  e7 20 6c 61 73 74 66 72  |%(1). l9. lastfr|
000065f0  6f 6d 25 3d 6f 73 6d 6f  70 69 6c 65 32 68 61 6e  |om%=osmopile2han|
00006600  25 28 31 29 20 8c 20 66  72 6f 6d 25 3d 6f 73 6d  |%(1) . from%=osm|
00006610  6f 70 69 6c 65 32 68 61  6e 25 28 31 29 0d 20 76  |opile2han%(1). v|
00006620  39 e7 20 6c 61 73 74 66  72 6f 6d 25 3d 6f 73 6d  |9. lastfrom%=osm|
00006630  6f 70 69 6c 65 33 68 61  6e 25 28 31 29 20 8c 20  |opile3han%(1) . |
00006640  66 72 6f 6d 25 3d 6f 73  6d 6f 70 69 6c 65 33 68  |from%=osmopile3h|
00006650  61 6e 25 28 31 29 0d 20  80 39 e7 20 6c 61 73 74  |an%(1). .9. last|
00006660  66 72 6f 6d 25 3d 6f 73  6d 6f 70 69 6c 65 34 68  |from%=osmopile4h|
00006670  61 6e 25 28 31 29 20 8c  20 66 72 6f 6d 25 3d 6f  |an%(1) . from%=o|
00006680  73 6d 6f 70 69 6c 65 34  68 61 6e 25 28 31 29 0d  |smopile4han%(1).|
00006690  20 8a 33 e7 20 6c 61 73  74 66 72 6f 6d 25 3d 6f  | .3. lastfrom%=o|
000066a0  73 6d 6f 77 61 73 74 65  68 61 6e 25 20 8c 20 66  |smowastehan% . f|
000066b0  72 6f 6d 25 3d 6f 73 6d  6f 77 61 73 74 65 68 61  |rom%=osmowasteha|
000066c0  6e 25 0d 20 94 26 c8 99  22 57 69 6d 70 45 78 74  |n%. .&.."WimpExt|
000066d0  5f 53 68 61 64 65 45 6e  74 72 79 22 2c 2c 67 6d  |_ShadeEntry",,gm|
000066e0  65 6e 75 25 2c 30 2c 31  0d 20 9e 12 c8 8e 20 6c  |enu%,0,1. .... l|
000066f0  61 73 74 66 72 6f 6d 25  20 ca 0d 20 a8 16 20 20  |astfrom% .. ..  |
00006700  c9 20 6f 73 6d 6f 70 61  63 6b 68 61 6e 25 20 3a  |. osmopackhan% :|
00006710  0d 20 b2 16 20 20 20 20  c8 8e 20 6c 61 73 74 74  |. ..    .. lastt|
00006720  75 72 6e 25 20 ca 0d 20  bc 0f 20 20 20 20 20 20  |urn% .. ..      |
00006730  c9 20 30 20 3a 0d 20 c6  16 20 20 20 20 20 20 20  |. 0 :. ..       |
00006740  20 e3 20 49 3d 31 20 b8  20 33 35 0d 20 d0 2b 20  | . I=1 . 35. .+ |
00006750  20 20 20 20 20 20 20 20  20 6f 73 6d 6f 77 61 73  |         osmowas|
00006760  74 65 25 28 49 29 3d 6f  73 6d 6f 70 61 63 6b 25  |te%(I)=osmopack%|
00006770  28 33 36 2d 49 29 0d 20  da 0f 20 20 20 20 20 20  |(36-I). ..      |
00006780  20 20 ed 20 49 0d 20 e4  16 20 20 20 20 20 20 20  |  . I. ..       |
00006790  20 e3 20 49 3d 31 20 b8  20 33 35 0d 20 ee 1c 20  | . I=1 . 35. .. |
000067a0  20 20 20 20 20 20 20 20  20 6f 73 6d 6f 70 61 63  |         osmopac|
000067b0  6b 25 28 49 29 3d 30 0d  20 f8 0f 20 20 20 20 20  |k%(I)=0. ..     |
000067c0  20 20 20 ed 20 49 0d 21  02 1e 20 20 20 20 20 20  |   . I.!..      |
000067d0  20 20 c8 95 20 6f 73 6d  6f 77 61 73 74 65 25 28  |  .. osmowaste%(|
000067e0  31 29 3d 30 0d 21 0c 18  20 20 20 20 20 20 20 20  |1)=0.!..        |
000067f0  20 20 e3 20 49 3d 31 20  b8 20 33 34 0d 21 16 2d  |  . I=1 . 34.!.-|
00006800  20 20 20 20 20 20 20 20  20 20 20 20 6f 73 6d 6f  |            osmo|
00006810  77 61 73 74 65 25 28 49  29 3d 6f 73 6d 6f 77 61  |waste%(I)=osmowa|
00006820  73 74 65 25 28 49 2b 31  29 0d 21 20 11 20 20 20  |ste%(I+1).! .   |
00006830  20 20 20 20 20 20 20 ed  20 49 0d 21 2a 1e 20 20  |       . I.!*.  |
00006840  20 20 20 20 20 20 20 20  6f 73 6d 6f 77 61 73 74  |        osmowast|
00006850  65 25 28 33 35 29 3d 30  0d 21 34 0d 20 20 20 20  |e%(35)=0.!4.    |
00006860  20 20 20 20 ce 0d 21 3e  37 20 20 20 20 20 20 20  |    ..!>7       |
00006870  20 f2 73 65 74 69 63 6f  6e 73 70 72 69 74 65 28  | .seticonsprite(|
00006880  6d 61 69 6e 25 2c 6f 73  6d 6f 70 61 63 6b 68 61  |main%,osmopackha|
00006890  6e 25 2c 22 6e 6f 63 61  72 64 22 29 0d 21 48 3e  |n%,"nocard").!H>|
000068a0  20 20 20 20 20 20 20 20  f2 73 65 74 69 63 6f 6e  |        .seticon|
000068b0  73 70 72 69 74 65 28 6d  61 69 6e 25 2c 6f 73 6d  |sprite(main%,osm|
000068c0  6f 77 61 73 74 65 68 61  6e 25 2c c3 6f 73 6d 6f  |owastehan%,.osmo|
000068d0  77 61 73 74 65 25 28 31  29 29 0d 21 52 0f 20 20  |waste%(1)).!R.  |
000068e0  20 20 20 20 c9 20 31 20  3a 0d 21 5c 1b 20 20 20  |    . 1 :.!\.   |
000068f0  20 20 20 20 20 e3 20 49  3d 33 34 20 b8 20 31 20  |     . I=34 . 1 |
00006900  88 20 2d 31 0d 21 66 29  20 20 20 20 20 20 20 20  |. -1.!f)        |
00006910  20 20 6f 73 6d 6f 70 61  63 6b 25 28 49 2b 31 29  |  osmopack%(I+1)|
00006920  3d 6f 73 6d 6f 70 61 63  6b 25 28 49 29 0d 21 70  |=osmopack%(I).!p|
00006930  0f 20 20 20 20 20 20 20  20 ed 20 49 0d 21 7a 26  |.        . I.!z&|
00006940  20 20 20 20 20 20 20 20  6f 73 6d 6f 70 61 63 6b  |        osmopack|
00006950  25 28 31 29 3d 6f 73 6d  6f 77 61 73 74 65 25 28  |%(1)=osmowaste%(|
00006960  31 29 0d 21 84 16 20 20  20 20 20 20 20 20 e3 20  |1).!..        . |
00006970  49 3d 31 20 b8 20 33 34  0d 21 8e 2b 20 20 20 20  |I=1 . 34.!.+    |
00006980  20 20 20 20 20 20 6f 73  6d 6f 77 61 73 74 65 25  |      osmowaste%|
00006990  28 49 29 3d 6f 73 6d 6f  77 61 73 74 65 25 28 49  |(I)=osmowaste%(I|
000069a0  2b 31 29 0d 21 98 0f 20  20 20 20 20 20 20 20 ed  |+1).!..        .|
000069b0  20 49 0d 21 a2 3e 20 20  20 20 20 20 20 20 f2 73  | I.!.>        .s|
000069c0  65 74 69 63 6f 6e 73 70  72 69 74 65 28 6d 61 69  |eticonsprite(mai|
000069d0  6e 25 2c 6f 73 6d 6f 77  61 73 74 65 68 61 6e 25  |n%,osmowastehan%|
000069e0  2c c3 6f 73 6d 6f 77 61  73 74 65 25 28 31 29 29  |,.osmowaste%(1))|
000069f0  0d 21 ac 35 20 20 20 20  20 20 20 20 f2 73 65 74  |.!.5        .set|
00006a00  69 63 6f 6e 73 70 72 69  74 65 28 6d 61 69 6e 25  |iconsprite(main%|
00006a10  2c 6f 73 6d 6f 70 61 63  6b 68 61 6e 25 2c 22 62  |,osmopackhan%,"b|
00006a20  61 63 6b 22 29 0d 21 b6  0f 20 20 20 20 20 20 c9  |ack").!..      .|
00006a30  20 32 20 3a 0d 21 c0 1b  20 20 20 20 20 20 20 20  | 2 :.!..        |
00006a40  e3 20 49 3d 33 33 20 b8  20 31 20 88 20 2d 31 0d  |. I=33 . 1 . -1.|
00006a50  21 ca 29 20 20 20 20 20  20 20 20 20 20 6f 73 6d  |!.)          osm|
00006a60  6f 70 61 63 6b 25 28 49  2b 32 29 3d 6f 73 6d 6f  |opack%(I+2)=osmo|
00006a70  70 61 63 6b 25 28 49 29  0d 21 d4 0f 20 20 20 20  |pack%(I).!..    |
00006a80  20 20 20 20 ed 20 49 0d  21 de 26 20 20 20 20 20  |    . I.!.&     |
00006a90  20 20 20 6f 73 6d 6f 70  61 63 6b 25 28 32 29 3d  |   osmopack%(2)=|
00006aa0  6f 73 6d 6f 77 61 73 74  65 25 28 31 29 0d 21 e8  |osmowaste%(1).!.|
00006ab0  26 20 20 20 20 20 20 20  20 6f 73 6d 6f 70 61 63  |&        osmopac|
00006ac0  6b 25 28 31 29 3d 6f 73  6d 6f 77 61 73 74 65 25  |k%(1)=osmowaste%|
00006ad0  28 32 29 0d 21 f2 16 20  20 20 20 20 20 20 20 e3  |(2).!..        .|
00006ae0  20 49 3d 31 20 b8 20 33  33 0d 21 fc 2b 20 20 20  | I=1 . 33.!.+   |
00006af0  20 20 20 20 20 20 20 6f  73 6d 6f 77 61 73 74 65  |       osmowaste|
00006b00  25 28 49 29 3d 6f 73 6d  6f 77 61 73 74 65 25 28  |%(I)=osmowaste%(|
00006b10  49 2b 32 29 0d 22 06 0f  20 20 20 20 20 20 20 20  |I+2)."..        |
00006b20  ed 20 49 0d 22 10 2d 20  20 20 20 20 20 20 20 6f  |. I.".-        o|
00006b30  73 6d 6f 77 61 73 74 65  25 28 33 34 29 3d 30 3a  |smowaste%(34)=0:|
00006b40  6f 73 6d 6f 77 61 73 74  65 25 28 33 35 29 3d 30  |osmowaste%(35)=0|
00006b50  0d 22 1a 3e 20 20 20 20  20 20 20 20 f2 73 65 74  |.".>        .set|
00006b60  69 63 6f 6e 73 70 72 69  74 65 28 6d 61 69 6e 25  |iconsprite(main%|
00006b70  2c 6f 73 6d 6f 77 61 73  74 65 68 61 6e 25 2c c3  |,osmowastehan%,.|
00006b80  6f 73 6d 6f 77 61 73 74  65 25 28 31 29 29 0d 22  |osmowaste%(1))."|
00006b90  24 35 20 20 20 20 20 20  20 20 f2 73 65 74 69 63  |$5        .setic|
00006ba0  6f 6e 73 70 72 69 74 65  28 6d 61 69 6e 25 2c 6f  |onsprite(main%,o|
00006bb0  73 6d 6f 70 61 63 6b 68  61 6e 25 2c 22 62 61 63  |smopackhan%,"bac|
00006bc0  6b 22 29 0d 22 2e 0f 20  20 20 20 20 20 c9 20 33  |k")."..      . 3|
00006bd0  20 3a 0d 22 38 1b 20 20  20 20 20 20 20 20 e3 20  | :."8.        . |
00006be0  49 3d 33 32 20 b8 20 31  20 88 20 2d 31 0d 22 42  |I=32 . 1 . -1."B|
00006bf0  29 20 20 20 20 20 20 20  20 20 20 6f 73 6d 6f 70  |)          osmop|
00006c00  61 63 6b 25 28 49 2b 33  29 3d 6f 73 6d 6f 70 61  |ack%(I+3)=osmopa|
00006c10  63 6b 25 28 49 29 0d 22  4c 0f 20 20 20 20 20 20  |ck%(I)."L.      |
00006c20  20 20 ed 20 49 0d 22 56  26 20 20 20 20 20 20 20  |  . I."V&       |
00006c30  20 6f 73 6d 6f 70 61 63  6b 25 28 33 29 3d 6f 73  | osmopack%(3)=os|
00006c40  6d 6f 77 61 73 74 65 25  28 31 29 0d 22 60 26 20  |mowaste%(1)."`& |
00006c50  20 20 20 20 20 20 20 6f  73 6d 6f 70 61 63 6b 25  |       osmopack%|
00006c60  28 32 29 3d 6f 73 6d 6f  77 61 73 74 65 25 28 32  |(2)=osmowaste%(2|
00006c70  29 0d 22 6a 26 20 20 20  20 20 20 20 20 6f 73 6d  |)."j&        osm|
00006c80  6f 70 61 63 6b 25 28 31  29 3d 6f 73 6d 6f 77 61  |opack%(1)=osmowa|
00006c90  73 74 65 25 28 33 29 0d  22 74 16 20 20 20 20 20  |ste%(3)."t.     |
00006ca0  20 20 20 e3 20 49 3d 31  20 b8 20 33 32 0d 22 7e  |   . I=1 . 32."~|
00006cb0  2b 20 20 20 20 20 20 20  20 20 20 6f 73 6d 6f 77  |+          osmow|
00006cc0  61 73 74 65 25 28 49 29  3d 6f 73 6d 6f 77 61 73  |aste%(I)=osmowas|
00006cd0  74 65 25 28 49 2b 33 29  0d 22 88 0f 20 20 20 20  |te%(I+3)."..    |
00006ce0  20 20 20 20 ed 20 49 0d  22 92 17 20 20 20 20 20  |    . I."..     |
00006cf0  20 20 20 e3 20 49 3d 33  33 20 b8 20 33 35 0d 22  |   . I=33 . 35."|
00006d00  9c 1d 20 20 20 20 20 20  20 20 20 20 6f 73 6d 6f  |..          osmo|
00006d10  77 61 73 74 65 25 28 49  29 3d 30 0d 22 a6 0f 20  |waste%(I)=0.".. |
00006d20  20 20 20 20 20 20 20 ed  20 49 0d 22 b0 1f 20 20  |       . I."..  |
00006d30  20 20 20 20 20 20 e7 20  6f 73 6d 6f 77 61 73 74  |      . osmowast|
00006d40  65 25 28 31 29 3d 30 20  8c 0d 22 ba 3a 20 20 20  |e%(1)=0 ..".:   |
00006d50  20 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 73  |       .seticons|
00006d60  70 72 69 74 65 28 6d 61  69 6e 25 2c 6f 73 6d 6f  |prite(main%,osmo|
00006d70  77 61 73 74 65 68 61 6e  25 2c 22 6e 6f 63 61 72  |wastehan%,"nocar|
00006d80  64 22 29 0d 22 c4 0d 20  20 20 20 20 20 20 20 cc  |d")."..        .|
00006d90  0d 22 ce 40 20 20 20 20  20 20 20 20 20 20 f2 73  |.".@          .s|
00006da0  65 74 69 63 6f 6e 73 70  72 69 74 65 28 6d 61 69  |eticonsprite(mai|
00006db0  6e 25 2c 6f 73 6d 6f 77  61 73 74 65 68 61 6e 25  |n%,osmowastehan%|
00006dc0  2c c3 6f 73 6d 6f 77 61  73 74 65 25 28 31 29 29  |,.osmowaste%(1))|
00006dd0  0d 22 d8 0d 20 20 20 20  20 20 20 20 cd 0d 22 e2  |."..        ..".|
00006de0  09 20 20 20 20 cb 0d 22  ec 0f 20 20 c9 20 66 72  |.    .."..  . fr|
00006df0  6f 6d 25 20 3a 0d 22 f6  ab 20 20 20 20 e7 20 6c  |om% :."..    . l|
00006e00  61 73 74 74 6f 25 3d 6f  73 6d 6f 66 6f 75 6e 64  |astto%=osmofound|
00006e10  31 68 61 6e 25 28 66 6f  75 6e 64 31 25 29 20 84  |1han%(found1%) .|
00006e20  20 6c 61 73 74 74 6f 25  3d 6f 73 6d 6f 66 6f 75  | lastto%=osmofou|
00006e30  6e 64 32 68 61 6e 25 28  66 6f 75 6e 64 32 25 29  |nd2han%(found2%)|
00006e40  20 84 20 6c 61 73 74 74  6f 25 3d 6f 73 6d 6f 66  | . lastto%=osmof|
00006e50  6f 75 6e 64 33 68 61 6e  25 28 66 6f 75 6e 64 33  |ound3han%(found3|
00006e60  25 29 20 84 20 6c 61 73  74 74 6f 25 3d 6f 73 6d  |%) . lastto%=osm|
00006e70  6f 66 6f 75 6e 64 34 68  61 6e 25 28 66 6f 75 6e  |ofound4han%(foun|
00006e80  64 34 25 29 20 8c 20 f2  62 6c 61 6e 6b 69 63 6f  |d4%) . .blankico|
00006e90  6e 28 6d 61 69 6e 25 2c  6c 61 73 74 74 6f 25 29  |n(main%,lastto%)|
00006ea0  0d 23 00 12 20 20 20 20  c8 8e 20 66 72 6f 6d 25  |.#..    .. from%|
00006eb0  20 ca 0d 23 0a 1e 20 20  20 20 20 20 c9 20 6f 73  | ..#..      . os|
00006ec0  6d 6f 70 69 6c 65 31 68  61 6e 25 28 31 29 20 3a  |mopile1han%(1) :|
00006ed0  0d 23 14 1a 20 20 20 20  20 20 20 20 e3 20 49 3d  |.#..        . I=|
00006ee0  34 20 b8 20 32 20 88 20  2d 31 0d 23 1e 2b 20 20  |4 . 2 . -1.#.+  |
00006ef0  20 20 20 20 20 20 20 20  6f 73 6d 6f 70 69 6c 65  |        osmopile|
00006f00  31 25 28 49 29 3d 6f 73  6d 6f 70 69 6c 65 31 25  |1%(I)=osmopile1%|
00006f10  28 49 2d 31 29 0d 23 28  50 20 20 20 20 20 20 20  |(I-1).#(P       |
00006f20  20 20 20 e7 20 6f 73 6d  6f 70 69 6c 65 31 25 28  |   . osmopile1%(|
00006f30  49 29 3c 3e 30 20 8c 20  f2 73 65 74 69 63 6f 6e  |I)<>0 . .seticon|
00006f40  73 70 72 69 74 65 28 6d  61 69 6e 25 2c 6f 73 6d  |sprite(main%,osm|
00006f50  6f 70 69 6c 65 31 68 61  6e 25 28 49 29 2c 22 62  |opile1han%(I),"b|
00006f60  61 63 6b 22 29 0d 23 32  0f 20 20 20 20 20 20 20  |ack").#2.       |
00006f70  20 ed 20 49 0d 23 3c 23  20 20 20 20 20 20 20 20  | . I.#<#        |
00006f80  6f 73 6d 6f 70 69 6c 65  31 25 28 31 29 3d 6c 61  |osmopile1%(1)=la|
00006f90  73 74 63 61 72 64 25 0d  23 46 1e 20 20 20 20 20  |stcard%.#F.     |
00006fa0  20 c9 20 6f 73 6d 6f 70  69 6c 65 32 68 61 6e 25  | . osmopile2han%|
00006fb0  28 31 29 20 3a 0d 23 50  1a 20 20 20 20 20 20 20  |(1) :.#P.       |
00006fc0  20 e3 20 49 3d 34 20 b8  20 32 20 88 20 2d 31 0d  | . I=4 . 2 . -1.|
00006fd0  23 5a 2b 20 20 20 20 20  20 20 20 20 20 6f 73 6d  |#Z+          osm|
00006fe0  6f 70 69 6c 65 32 25 28  49 29 3d 6f 73 6d 6f 70  |opile2%(I)=osmop|
00006ff0  69 6c 65 32 25 28 49 2d  31 29 0d 23 64 50 20 20  |ile2%(I-1).#dP  |
00007000  20 20 20 20 20 20 20 20  e7 20 6f 73 6d 6f 70 69  |        . osmopi|
00007010  6c 65 32 25 28 49 29 3c  3e 30 20 8c 20 f2 73 65  |le2%(I)<>0 . .se|
00007020  74 69 63 6f 6e 73 70 72  69 74 65 28 6d 61 69 6e  |ticonsprite(main|
00007030  25 2c 6f 73 6d 6f 70 69  6c 65 32 68 61 6e 25 28  |%,osmopile2han%(|
00007040  49 29 2c 22 62 61 63 6b  22 29 0d 23 6e 0f 20 20  |I),"back").#n.  |
00007050  20 20 20 20 20 20 ed 20  49 0d 23 78 23 20 20 20  |      . I.#x#   |
00007060  20 20 20 20 20 6f 73 6d  6f 70 69 6c 65 32 25 28  |     osmopile2%(|
00007070  31 29 3d 6c 61 73 74 63  61 72 64 25 0d 23 82 1e  |1)=lastcard%.#..|
00007080  20 20 20 20 20 20 c9 20  6f 73 6d 6f 70 69 6c 65  |      . osmopile|
00007090  33 68 61 6e 25 28 31 29  20 3a 0d 23 8c 1a 20 20  |3han%(1) :.#..  |
000070a0  20 20 20 20 20 20 e3 20  49 3d 34 20 b8 20 32 20  |      . I=4 . 2 |
000070b0  88 20 2d 31 0d 23 96 2b  20 20 20 20 20 20 20 20  |. -1.#.+        |
000070c0  20 20 6f 73 6d 6f 70 69  6c 65 33 25 28 49 29 3d  |  osmopile3%(I)=|
000070d0  6f 73 6d 6f 70 69 6c 65  33 25 28 49 2d 31 29 0d  |osmopile3%(I-1).|
000070e0  23 a0 50 20 20 20 20 20  20 20 20 20 20 e7 20 6f  |#.P          . o|
000070f0  73 6d 6f 70 69 6c 65 33  25 28 49 29 3c 3e 30 20  |smopile3%(I)<>0 |
00007100  8c 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |. .seticonsprite|
00007110  28 6d 61 69 6e 25 2c 6f  73 6d 6f 70 69 6c 65 33  |(main%,osmopile3|
00007120  68 61 6e 25 28 49 29 2c  22 62 61 63 6b 22 29 0d  |han%(I),"back").|
00007130  23 aa 0f 20 20 20 20 20  20 20 20 ed 20 49 0d 23  |#..        . I.#|
00007140  b4 23 20 20 20 20 20 20  20 20 6f 73 6d 6f 70 69  |.#        osmopi|
00007150  6c 65 33 25 28 31 29 3d  6c 61 73 74 63 61 72 64  |le3%(1)=lastcard|
00007160  25 0d 23 be 1e 20 20 20  20 20 20 c9 20 6f 73 6d  |%.#..      . osm|
00007170  6f 70 69 6c 65 34 68 61  6e 25 28 31 29 20 3a 0d  |opile4han%(1) :.|
00007180  23 c8 1a 20 20 20 20 20  20 20 20 e3 20 49 3d 34  |#..        . I=4|
00007190  20 b8 20 32 20 88 20 2d  31 0d 23 d2 2b 20 20 20  | . 2 . -1.#.+   |
000071a0  20 20 20 20 20 20 20 6f  73 6d 6f 70 69 6c 65 34  |       osmopile4|
000071b0  25 28 49 29 3d 6f 73 6d  6f 70 69 6c 65 34 25 28  |%(I)=osmopile4%(|
000071c0  49 2d 31 29 0d 23 dc 50  20 20 20 20 20 20 20 20  |I-1).#.P        |
000071d0  20 20 e7 20 6f 73 6d 6f  70 69 6c 65 34 25 28 49  |  . osmopile4%(I|
000071e0  29 3c 3e 30 20 8c 20 f2  73 65 74 69 63 6f 6e 73  |)<>0 . .seticons|
000071f0  70 72 69 74 65 28 6d 61  69 6e 25 2c 6f 73 6d 6f  |prite(main%,osmo|
00007200  70 69 6c 65 34 68 61 6e  25 28 49 29 2c 22 62 61  |pile4han%(I),"ba|
00007210  63 6b 22 29 0d 23 e6 0f  20 20 20 20 20 20 20 20  |ck").#..        |
00007220  ed 20 49 0d 23 f0 23 20  20 20 20 20 20 20 20 6f  |. I.#.#        o|
00007230  73 6d 6f 70 69 6c 65 34  25 28 31 29 3d 6c 61 73  |smopile4%(1)=las|
00007240  74 63 61 72 64 25 0d 23  fa 1b 20 20 20 20 20 20  |tcard%.#..      |
00007250  c9 20 6f 73 6d 6f 77 61  73 74 65 68 61 6e 25 20  |. osmowastehan% |
00007260  3a 0d 24 04 1b 20 20 20  20 20 20 20 20 e3 20 49  |:.$..        . I|
00007270  3d 33 35 20 b8 20 32 20  88 20 2d 31 0d 24 0e 2b  |=35 . 2 . -1.$.+|
00007280  20 20 20 20 20 20 20 20  20 20 6f 73 6d 6f 77 61  |          osmowa|
00007290  73 74 65 25 28 49 29 3d  6f 73 6d 6f 77 61 73 74  |ste%(I)=osmowast|
000072a0  65 25 28 49 2d 31 29 0d  24 18 0f 20 20 20 20 20  |e%(I-1).$..     |
000072b0  20 20 20 ed 20 49 0d 24  22 23 20 20 20 20 20 20  |   . I.$"#      |
000072c0  20 20 6f 73 6d 6f 77 61  73 74 65 25 28 31 29 3d  |  osmowaste%(1)=|
000072d0  6c 61 73 74 63 61 72 64  25 0d 24 2c 09 20 20 20  |lastcard%.$,.   |
000072e0  20 cb 0d 24 36 14 20 20  20 20 c8 8e 20 6c 61 73  | ..$6.    .. las|
000072f0  74 74 6f 25 20 ca 0d 24  40 25 20 20 20 20 20 20  |tto% ..$@%      |
00007300  c9 20 6f 73 6d 6f 66 6f  75 6e 64 31 68 61 6e 25  |. osmofound1han%|
00007310  28 66 6f 75 6e 64 31 25  29 20 3a 0d 24 4a 2e 20  |(found1%) :.$J. |
00007320  20 20 20 20 20 20 20 66  6f 75 6e 64 31 25 3d 66  |       found1%=f|
00007330  6f 75 6e 64 31 25 2d 31  3a 6c 65 66 74 31 25 3d  |ound1%-1:left1%=|
00007340  6c 65 66 74 31 25 2d 37  30 0d 24 54 1a 20 20 20  |left1%-70.$T.   |
00007350  20 20 20 20 20 e7 20 74  75 72 6e 65 64 31 25 3d  |     . turned1%=|
00007360  b9 20 8c 0d 24 5e 18 20  20 20 20 20 20 20 20 20  |. ..$^.         |
00007370  20 e3 20 49 3d 31 20 b8  20 31 32 0d 24 68 47 20  | . I=1 . 12.$hG |
00007380  20 20 20 20 20 20 20 20  20 20 20 f2 73 65 74 69  |           .seti|
00007390  63 6f 6e 73 70 72 69 74  65 28 6d 61 69 6e 25 2c  |consprite(main%,|
000073a0  6f 73 6d 6f 66 6f 75 6e  64 31 68 61 6e 25 28 49  |osmofound1han%(I|
000073b0  29 2c c3 6f 73 6d 6f 66  6f 75 6e 64 31 25 28 49  |),.osmofound1%(I|
000073c0  29 29 0d 24 72 11 20 20  20 20 20 20 20 20 20 20  |)).$r.          |
000073d0  ed 20 49 0d 24 7c 0d 20  20 20 20 20 20 20 20 cd  |. I.$|.        .|
000073e0  0d 24 86 25 20 20 20 20  20 20 c9 20 6f 73 6d 6f  |.$.%      . osmo|
000073f0  66 6f 75 6e 64 32 68 61  6e 25 28 66 6f 75 6e 64  |found2han%(found|
00007400  32 25 29 20 3a 0d 24 90  2e 20 20 20 20 20 20 20  |2%) :.$..       |
00007410  20 66 6f 75 6e 64 32 25  3d 66 6f 75 6e 64 32 25  | found2%=found2%|
00007420  2d 31 3a 6c 65 66 74 32  25 3d 6c 65 66 74 32 25  |-1:left2%=left2%|
00007430  2d 37 30 0d 24 9a 1a 20  20 20 20 20 20 20 20 e7  |-70.$..        .|
00007440  20 74 75 72 6e 65 64 32  25 3d b9 20 8c 0d 24 a4  | turned2%=. ..$.|
00007450  18 20 20 20 20 20 20 20  20 20 20 e3 20 49 3d 31  |.          . I=1|
00007460  20 b8 20 31 32 0d 24 ae  47 20 20 20 20 20 20 20  | . 12.$.G       |
00007470  20 20 20 20 20 f2 73 65  74 69 63 6f 6e 73 70 72  |     .seticonspr|
00007480  69 74 65 28 6d 61 69 6e  25 2c 6f 73 6d 6f 66 6f  |ite(main%,osmofo|
00007490  75 6e 64 32 68 61 6e 25  28 49 29 2c c3 6f 73 6d  |und2han%(I),.osm|
000074a0  6f 66 6f 75 6e 64 32 25  28 49 29 29 0d 24 b8 11  |ofound2%(I)).$..|
000074b0  20 20 20 20 20 20 20 20  20 20 ed 20 49 0d 24 c2  |          . I.$.|
000074c0  0d 20 20 20 20 20 20 20  20 cd 0d 24 cc 25 20 20  |.        ..$.%  |
000074d0  20 20 20 20 c9 20 6f 73  6d 6f 66 6f 75 6e 64 33  |    . osmofound3|
000074e0  68 61 6e 25 28 66 6f 75  6e 64 33 25 29 20 3a 0d  |han%(found3%) :.|
000074f0  24 d6 2e 20 20 20 20 20  20 20 20 66 6f 75 6e 64  |$..        found|
00007500  33 25 3d 66 6f 75 6e 64  33 25 2d 31 3a 6c 65 66  |3%=found3%-1:lef|
00007510  74 33 25 3d 6c 65 66 74  33 25 2d 37 30 0d 24 e0  |t3%=left3%-70.$.|
00007520  1a 20 20 20 20 20 20 20  20 e7 20 74 75 72 6e 65  |.        . turne|
00007530  64 33 25 3d b9 20 8c 0d  24 ea 18 20 20 20 20 20  |d3%=. ..$..     |
00007540  20 20 20 20 20 e3 20 49  3d 31 20 b8 20 31 32 0d  |     . I=1 . 12.|
00007550  24 f4 47 20 20 20 20 20  20 20 20 20 20 20 20 f2  |$.G            .|
00007560  73 65 74 69 63 6f 6e 73  70 72 69 74 65 28 6d 61  |seticonsprite(ma|
00007570  69 6e 25 2c 6f 73 6d 6f  66 6f 75 6e 64 33 68 61  |in%,osmofound3ha|
00007580  6e 25 28 49 29 2c c3 6f  73 6d 6f 66 6f 75 6e 64  |n%(I),.osmofound|
00007590  33 25 28 49 29 29 0d 24  fe 11 20 20 20 20 20 20  |3%(I)).$..      |
000075a0  20 20 20 20 ed 20 49 0d  25 08 0d 20 20 20 20 20  |    . I.%..     |
000075b0  20 20 20 cd 0d 25 12 25  20 20 20 20 20 20 c9 20  |   ..%.%      . |
000075c0  6f 73 6d 6f 66 6f 75 6e  64 34 68 61 6e 25 28 66  |osmofound4han%(f|
000075d0  6f 75 6e 64 34 25 29 20  3a 0d 25 1c 2e 20 20 20  |ound4%) :.%..   |
000075e0  20 20 20 20 20 66 6f 75  6e 64 34 25 3d 66 6f 75  |     found4%=fou|
000075f0  6e 64 34 25 2d 31 3a 6c  65 66 74 34 25 3d 6c 65  |nd4%-1:left4%=le|
00007600  66 74 34 25 2d 37 30 0d  25 26 1a 20 20 20 20 20  |ft4%-70.%&.     |
00007610  20 20 20 e7 20 74 75 72  6e 65 64 34 25 3d b9 20  |   . turned4%=. |
00007620  8c 0d 25 30 18 20 20 20  20 20 20 20 20 20 20 e3  |..%0.          .|
00007630  20 49 3d 31 20 b8 20 31  32 0d 25 3a 47 20 20 20  | I=1 . 12.%:G   |
00007640  20 20 20 20 20 20 20 20  20 f2 73 65 74 69 63 6f  |         .setico|
00007650  6e 73 70 72 69 74 65 28  6d 61 69 6e 25 2c 6f 73  |nsprite(main%,os|
00007660  6d 6f 66 6f 75 6e 64 34  68 61 6e 25 28 49 29 2c  |mofound4han%(I),|
00007670  c3 6f 73 6d 6f 66 6f 75  6e 64 34 25 28 49 29 29  |.osmofound4%(I))|
00007680  0d 25 44 11 20 20 20 20  20 20 20 20 20 20 ed 20  |.%D.          . |
00007690  49 0d 25 4e 0d 20 20 20  20 20 20 20 20 cd 0d 25  |I.%N.        ..%|
000076a0  58 1e 20 20 20 20 20 20  c9 20 6f 73 6d 6f 70 69  |X.      . osmopi|
000076b0  6c 65 31 68 61 6e 25 28  31 29 20 3a 0d 25 62 1b  |le1han%(1) :.%b.|
000076c0  20 20 20 20 20 20 20 20  6f 73 6d 6f 70 69 6c 65  |        osmopile|
000076d0  31 25 28 31 29 3d 30 0d  25 6c 36 20 20 20 20 20  |1%(1)=0.%l6     |
000076e0  20 20 20 f2 73 65 74 69  63 6f 6e 73 70 72 69 74  |   .seticonsprit|
000076f0  65 28 6d 61 69 6e 25 2c  6f 73 6d 6f 70 69 6c 65  |e(main%,osmopile|
00007700  31 68 61 6e 25 28 31 29  2c 22 30 22 29 0d 25 76  |1han%(1),"0").%v|
00007710  1e 20 20 20 20 20 20 c9  20 6f 73 6d 6f 70 69 6c  |.      . osmopil|
00007720  65 32 68 61 6e 25 28 31  29 20 3a 0d 25 80 1b 20  |e2han%(1) :.%.. |
00007730  20 20 20 20 20 20 20 6f  73 6d 6f 70 69 6c 65 32  |       osmopile2|
00007740  25 28 31 29 3d 30 0d 25  8a 36 20 20 20 20 20 20  |%(1)=0.%.6      |
00007750  20 20 f2 73 65 74 69 63  6f 6e 73 70 72 69 74 65  |  .seticonsprite|
00007760  28 6d 61 69 6e 25 2c 6f  73 6d 6f 70 69 6c 65 32  |(main%,osmopile2|
00007770  68 61 6e 25 28 31 29 2c  22 30 22 29 0d 25 94 1e  |han%(1),"0").%..|
00007780  20 20 20 20 20 20 c9 20  6f 73 6d 6f 70 69 6c 65  |      . osmopile|
00007790  33 68 61 6e 25 28 31 29  20 3a 0d 25 9e 1b 20 20  |3han%(1) :.%..  |
000077a0  20 20 20 20 20 20 6f 73  6d 6f 70 69 6c 65 33 25  |      osmopile3%|
000077b0  28 31 29 3d 30 0d 25 a8  36 20 20 20 20 20 20 20  |(1)=0.%.6       |
000077c0  20 f2 73 65 74 69 63 6f  6e 73 70 72 69 74 65 28  | .seticonsprite(|
000077d0  6d 61 69 6e 25 2c 6f 73  6d 6f 70 69 6c 65 33 68  |main%,osmopile3h|
000077e0  61 6e 25 28 31 29 2c 22  30 22 29 0d 25 b2 1e 20  |an%(1),"0").%.. |
000077f0  20 20 20 20 20 c9 20 6f  73 6d 6f 70 69 6c 65 34  |     . osmopile4|
00007800  68 61 6e 25 28 31 29 20  3a 0d 25 bc 1b 20 20 20  |han%(1) :.%..   |
00007810  20 20 20 20 20 6f 73 6d  6f 70 69 6c 65 34 25 28  |     osmopile4%(|
00007820  31 29 3d 30 0d 25 c6 36  20 20 20 20 20 20 20 20  |1)=0.%.6        |
00007830  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
00007840  61 69 6e 25 2c 6f 73 6d  6f 70 69 6c 65 34 68 61  |ain%,osmopile4ha|
00007850  6e 25 28 31 29 2c 22 30  22 29 0d 25 d0 09 20 20  |n%(1),"0").%..  |
00007860  20 20 cb 0d 25 da 2e 20  20 20 20 f2 73 65 74 69  |  ..%..    .seti|
00007870  63 6f 6e 73 70 72 69 74  65 28 6d 61 69 6e 25 2c  |consprite(main%,|
00007880  66 72 6f 6d 25 2c c3 6c  61 73 74 63 61 72 64 25  |from%,.lastcard%|
00007890  29 0d 25 e4 05 cb 0d 25  ee 05 e1 0d 25 f8 04 0d  |).%....%....%...|
000078a0  26 02 0d dd f2 70 79 72  61 6d 69 64 0d 26 0c 23  |&....pyramid.&.#|
000078b0  f4 20 53 65 74 73 20 75  70 20 74 68 65 20 67 61  |. Sets up the ga|
000078c0  6d 65 20 66 6f 72 20 70  79 72 61 6d 69 64 2e 0d  |me for pyramid..|
000078d0  26 16 30 c8 99 22 57 69  6d 70 45 78 74 5f 53 65  |&.0.."WimpExt_Se|
000078e0  74 57 69 6e 64 6f 77 54  69 74 6c 65 22 2c 2c 2c  |tWindowTitle",,,|
000078f0  6d 61 69 6e 25 2c 22 50  79 72 61 6d 69 64 22 0d  |main%,"Pyramid".|
00007900  26 20 30 c8 99 22 57 69  6d 70 45 78 74 5f 53 68  |& 0.."WimpExt_Sh|
00007910  61 64 65 45 6e 74 72 79  22 2c 2c 67 6d 65 6e 75  |adeEntry",,gmenu|
00007920  25 2c 30 2c 30 20 b8 20  73 68 61 64 65 64 25 0d  |%,0,0 . shaded%.|
00007930  26 2a 34 e7 20 73 68 61  64 65 64 25 3d 31 20 8c  |&*4. shaded%=1 .|
00007940  20 c8 99 22 57 69 6d 70  45 78 74 5f 53 68 61 64  | .."WimpExt_Shad|
00007950  65 45 6e 74 72 79 22 2c  2c 67 6d 65 6e 75 25 2c  |eEntry",,gmenu%,|
00007960  30 2c 31 0d 26 34 38 e7  20 70 6c 61 79 65 64 25  |0,1.&48. played%|
00007970  3d b9 20 80 20 69 63 6f  6e 6e 75 6d 62 65 72 25  |=. . iconnumber%|
00007980  3c 3e 30 20 8c 20 f2 63  6c 65 61 6e 75 70 77 69  |<>0 . .cleanupwi|
00007990  6e 64 6f 77 28 6d 61 69  6e 25 29 0d 26 3e 0c f2  |ndow(main%).&>..|
000079a0  73 68 75 66 66 6c 65 0d  26 48 11 f2 70 79 72 61  |shuffle.&H..pyra|
000079b0  6d 69 64 5f 64 65 61 6c  0d 26 52 13 f2 70 79 72  |mid_deal.&R..pyr|
000079c0  61 6d 69 64 5f 6c 61 79  6f 75 74 0d 26 5c 05 e1  |amid_layout.&\..|
000079d0  0d 26 66 04 0d 26 70 12  dd f2 70 79 72 61 6d 69  |.&f..&p...pyrami|
000079e0  64 5f 64 65 61 6c 0d 26  7a 1e f4 20 53 65 74 73  |d_deal.&z.. Sets|
000079f0  20 75 70 20 74 68 65 20  67 61 6d 65 20 61 72 72  | up the game arr|
00007a00  61 79 73 2e 0d 26 84 07  ea 20 49 0d 26 8e 0e e3  |ays..&... I.&...|
00007a10  20 49 3d 31 20 b8 20 32  38 0d 26 98 19 20 20 70  | I=1 . 28.&..  p|
00007a20  79 72 6c 61 79 25 28 49  29 3d 70 61 63 6b 25 28  |yrlay%(I)=pack%(|
00007a30  49 29 0d 26 a2 07 ed 20  49 0d 26 ac 0e e3 20 49  |I).&... I.&... I|
00007a40  3d 31 20 b8 20 32 34 0d  26 b6 1d 20 20 70 79 72  |=1 . 24.&..  pyr|
00007a50  70 61 63 6b 25 28 49 29  3d 70 61 63 6b 25 28 49  |pack%(I)=pack%(I|
00007a60  2b 32 38 29 0d 26 c0 14  20 20 70 79 72 77 61 73  |+28).&..  pyrwas|
00007a70  74 65 25 28 49 29 3d 30  0d 26 ca 07 ed 20 49 0d  |te%(I)=0.&... I.|
00007a80  26 d4 0e e3 20 49 3d 31  20 b8 20 35 32 0d 26 de  |&... I=1 . 52.&.|
00007a90  14 20 20 70 79 72 66 6f  75 6e 64 25 28 49 29 3d  |.  pyrfound%(I)=|
00007aa0  30 0d 26 e8 07 ed 20 49  0d 26 f2 05 e1 0d 26 fc  |0.&... I.&....&.|
00007ab0  04 0d 27 06 14 dd f2 70  79 72 61 6d 69 64 5f 6c  |..'....pyramid_l|
00007ac0  61 79 6f 75 74 0d 27 10  28 f4 20 53 65 74 73 20  |ayout.'.(. Sets |
00007ad0  75 70 20 74 68 65 20 73  63 72 65 65 6e 20 77 69  |up the screen wi|
00007ae0  74 68 20 74 68 65 20 63  61 72 64 73 2e 0d 27 1a  |th the cards..'.|
00007af0  12 ea 20 6c 65 66 74 25  2c 74 6f 70 25 2c 49 0d  |.. left%,top%,I.|
00007b00  27 24 24 c8 99 20 22 57  69 6d 70 45 78 74 5f 4f  |'$$.. "WimpExt_O|
00007b10  70 65 6e 57 69 6e 64 6f  77 54 6f 70 22 2c 6d 61  |penWindowTop",ma|
00007b20  69 6e 25 0d 27 2e 16 6c  65 66 74 25 3d 36 36 31  |in%.'..left%=661|
00007b30  3a 74 6f 70 25 3d 2d 31  30 0d 27 38 57 70 79 72  |:top%=-10.'8Wpyr|
00007b40  6c 61 79 68 61 6e 25 28  31 29 3d a4 63 72 65 61  |layhan%(1)=.crea|
00007b50  74 65 69 63 6f 6e 28 6d  61 69 6e 25 2c c3 70 79  |teicon(main%,.py|
00007b60  72 6c 61 79 25 28 31 29  2c 22 22 2c 6c 65 66 74  |rlay%(1),"",left|
00007b70  25 2c 74 6f 70 25 2d 32  30 38 2c 6c 65 66 74 25  |%,top%-208,left%|
00007b80  2b 31 35 38 2c 74 6f 70  25 2c 31 32 35 37 31 29  |+158,top%,12571)|
00007b90  0d 27 42 13 6c 65 66 74  25 3d 6c 65 66 74 25 2d  |.'B.left%=left%-|
00007ba0  31 30 30 0d 27 4c 11 74  6f 70 25 3d 74 6f 70 25  |100.'L.top%=top%|
00007bb0  2d 31 32 35 0d 27 56 0d  e3 20 49 3d 32 20 b8 20  |-125.'V.. I=2 . |
00007bc0  33 0d 27 60 59 20 20 70  79 72 6c 61 79 68 61 6e  |3.'`Y  pyrlayhan|
00007bd0  25 28 49 29 3d a4 63 72  65 61 74 65 69 63 6f 6e  |%(I)=.createicon|
00007be0  28 6d 61 69 6e 25 2c c3  70 79 72 6c 61 79 25 28  |(main%,.pyrlay%(|
00007bf0  49 29 2c 22 22 2c 6c 65  66 74 25 2c 74 6f 70 25  |I),"",left%,top%|
00007c00  2d 32 30 38 2c 6c 65 66  74 25 2b 31 35 38 2c 74  |-208,left%+158,t|
00007c10  6f 70 25 2c 31 32 35 37  31 29 0d 27 6a 15 20 20  |op%,12571).'j.  |
00007c20  6c 65 66 74 25 3d 6c 65  66 74 25 2b 32 30 30 0d  |left%=left%+200.|
00007c30  27 74 07 ed 20 49 0d 27  7e 21 6c 65 66 74 25 3d  |'t.. I.'~!left%=|
00007c40  6c 65 66 74 25 2d 35 30  30 3a 74 6f 70 25 3d 74  |left%-500:top%=t|
00007c50  6f 70 25 2d 31 32 35 0d  27 88 0d e3 20 49 3d 34  |op%-125.'... I=4|
00007c60  20 b8 20 36 0d 27 92 59  20 20 70 79 72 6c 61 79  | . 6.'.Y  pyrlay|
00007c70  68 61 6e 25 28 49 29 3d  a4 63 72 65 61 74 65 69  |han%(I)=.createi|
00007c80  63 6f 6e 28 6d 61 69 6e  25 2c c3 70 79 72 6c 61  |con(main%,.pyrla|
00007c90  79 25 28 49 29 2c 22 22  2c 6c 65 66 74 25 2c 74  |y%(I),"",left%,t|
00007ca0  6f 70 25 2d 32 30 38 2c  6c 65 66 74 25 2b 31 35  |op%-208,left%+15|
00007cb0  38 2c 74 6f 70 25 2c 31  32 35 37 31 29 0d 27 9c  |8,top%,12571).'.|
00007cc0  15 20 20 6c 65 66 74 25  3d 6c 65 66 74 25 2b 32  |.  left%=left%+2|
00007cd0  30 30 0d 27 a6 07 ed 20  49 0d 27 b0 21 6c 65 66  |00.'... I.'.!lef|
00007ce0  74 25 3d 6c 65 66 74 25  2d 37 30 30 3a 74 6f 70  |t%=left%-700:top|
00007cf0  25 3d 74 6f 70 25 2d 31  32 35 0d 27 ba 0e e3 20  |%=top%-125.'... |
00007d00  49 3d 37 20 b8 20 31 30  0d 27 c4 59 20 20 70 79  |I=7 . 10.'.Y  py|
00007d10  72 6c 61 79 68 61 6e 25  28 49 29 3d a4 63 72 65  |rlayhan%(I)=.cre|
00007d20  61 74 65 69 63 6f 6e 28  6d 61 69 6e 25 2c c3 70  |ateicon(main%,.p|
00007d30  79 72 6c 61 79 25 28 49  29 2c 22 22 2c 6c 65 66  |yrlay%(I),"",lef|
00007d40  74 25 2c 74 6f 70 25 2d  32 30 38 2c 6c 65 66 74  |t%,top%-208,left|
00007d50  25 2b 31 35 38 2c 74 6f  70 25 2c 31 32 35 37 31  |%+158,top%,12571|
00007d60  29 0d 27 ce 15 20 20 6c  65 66 74 25 3d 6c 65 66  |).'..  left%=lef|
00007d70  74 25 2b 32 30 30 0d 27  d8 07 ed 20 49 0d 27 e2  |t%+200.'... I.'.|
00007d80  21 6c 65 66 74 25 3d 6c  65 66 74 25 2d 39 30 30  |!left%=left%-900|
00007d90  3a 74 6f 70 25 3d 74 6f  70 25 2d 31 32 35 0d 27  |:top%=top%-125.'|
00007da0  ec 0f e3 20 49 3d 31 31  20 b8 20 31 35 0d 27 f6  |... I=11 . 15.'.|
00007db0  59 20 20 70 79 72 6c 61  79 68 61 6e 25 28 49 29  |Y  pyrlayhan%(I)|
00007dc0  3d a4 63 72 65 61 74 65  69 63 6f 6e 28 6d 61 69  |=.createicon(mai|
00007dd0  6e 25 2c c3 70 79 72 6c  61 79 25 28 49 29 2c 22  |n%,.pyrlay%(I),"|
00007de0  22 2c 6c 65 66 74 25 2c  74 6f 70 25 2d 32 30 38  |",left%,top%-208|
00007df0  2c 6c 65 66 74 25 2b 31  35 38 2c 74 6f 70 25 2c  |,left%+158,top%,|
00007e00  31 32 35 37 31 29 0d 28  00 15 20 20 6c 65 66 74  |12571).(..  left|
00007e10  25 3d 6c 65 66 74 25 2b  32 30 30 0d 28 0a 07 ed  |%=left%+200.(...|
00007e20  20 49 0d 28 14 22 6c 65  66 74 25 3d 6c 65 66 74  | I.(."left%=left|
00007e30  25 2d 31 31 30 30 3a 74  6f 70 25 3d 74 6f 70 25  |%-1100:top%=top%|
00007e40  2d 31 32 35 0d 28 1e 0f  e3 20 49 3d 31 36 20 b8  |-125.(... I=16 .|
00007e50  20 32 31 0d 28 28 59 20  20 70 79 72 6c 61 79 68  | 21.((Y  pyrlayh|
00007e60  61 6e 25 28 49 29 3d a4  63 72 65 61 74 65 69 63  |an%(I)=.createic|
00007e70  6f 6e 28 6d 61 69 6e 25  2c c3 70 79 72 6c 61 79  |on(main%,.pyrlay|
00007e80  25 28 49 29 2c 22 22 2c  6c 65 66 74 25 2c 74 6f  |%(I),"",left%,to|
00007e90  70 25 2d 32 30 38 2c 6c  65 66 74 25 2b 31 35 38  |p%-208,left%+158|
00007ea0  2c 74 6f 70 25 2c 31 32  35 37 31 29 0d 28 32 15  |,top%,12571).(2.|
00007eb0  20 20 6c 65 66 74 25 3d  6c 65 66 74 25 2b 32 30  |  left%=left%+20|
00007ec0  30 0d 28 3c 07 ed 20 49  0d 28 46 22 6c 65 66 74  |0.(<.. I.(F"left|
00007ed0  25 3d 6c 65 66 74 25 2d  31 33 30 30 3a 74 6f 70  |%=left%-1300:top|
00007ee0  25 3d 74 6f 70 25 2d 31  32 35 0d 28 50 0f e3 20  |%=top%-125.(P.. |
00007ef0  49 3d 32 32 20 b8 20 32  38 0d 28 5a 59 20 20 70  |I=22 . 28.(ZY  p|
00007f00  79 72 6c 61 79 68 61 6e  25 28 49 29 3d a4 63 72  |yrlayhan%(I)=.cr|
00007f10  65 61 74 65 69 63 6f 6e  28 6d 61 69 6e 25 2c c3  |eateicon(main%,.|
00007f20  70 79 72 6c 61 79 25 28  49 29 2c 22 22 2c 6c 65  |pyrlay%(I),"",le|
00007f30  66 74 25 2c 74 6f 70 25  2d 32 30 38 2c 6c 65 66  |ft%,top%-208,lef|
00007f40  74 25 2b 31 35 38 2c 74  6f 70 25 2c 31 32 35 37  |t%+158,top%,1257|
00007f50  31 29 0d 28 64 15 20 20  6c 65 66 74 25 3d 6c 65  |1).(d.  left%=le|
00007f60  66 74 25 2b 32 30 30 0d  28 6e 07 ed 20 49 0d 28  |ft%+200.(n.. I.(|
00007f70  78 42 70 79 72 70 61 63  6b 68 61 6e 25 3d a4 63  |xBpyrpackhan%=.c|
00007f80  72 65 61 74 65 69 63 6f  6e 28 6d 61 69 6e 25 2c  |reateicon(main%,|
00007f90  22 62 61 63 6b 22 2c 22  22 2c 35 30 2c 2d 32 35  |"back","",50,-25|
00007fa0  38 2c 32 30 38 2c 2d 35  30 2c 31 32 35 37 31 29  |8,208,-50,12571)|
00007fb0  0d 28 82 46 70 79 72 77  61 73 74 65 68 61 6e 25  |.(.Fpyrwastehan%|
00007fc0  3d a4 63 72 65 61 74 65  69 63 6f 6e 28 6d 61 69  |=.createicon(mai|
00007fd0  6e 25 2c 22 6e 6f 63 61  72 64 22 2c 22 22 2c 32  |n%,"nocard","",2|
00007fe0  32 30 2c 2d 32 35 38 2c  33 37 38 2c 2d 35 30 2c  |20,-258,378,-50,|
00007ff0  31 32 35 37 31 29 0d 28  8c 48 70 79 72 66 6f 75  |12571).(.Hpyrfou|
00008000  6e 64 68 61 6e 25 3d a4  63 72 65 61 74 65 69 63  |ndhan%=.createic|
00008010  6f 6e 28 6d 61 69 6e 25  2c 22 6e 6f 63 61 72 64  |on(main%,"nocard|
00008020  22 2c 22 22 2c 31 32 30  30 2c 2d 32 35 38 2c 31  |","",1200,-258,1|
00008030  33 35 38 2c 2d 35 30 2c  31 32 35 37 31 29 0d 28  |358,-50,12571).(|
00008040  96 0e e3 20 49 3d 31 20  b8 20 32 38 0d 28 a0 16  |... I=1 . 28.(..|
00008050  20 20 70 79 72 64 65 6c  65 74 65 64 25 28 49 29  |  pyrdeleted%(I)|
00008060  3d a3 0d 28 aa 07 ed 20  49 0d 28 b4 3f 64 65 61  |=..(... I.(.?dea|
00008070  6c 25 3d 31 3a 73 65 6c  65 63 74 65 64 25 3d a3  |l%=1:selected%=.|
00008080  3a 66 69 72 73 74 63 61  72 64 25 3d 30 3a 66 69  |:firstcard%=0:fi|
00008090  72 73 74 69 63 6f 6e 25  3d 30 3a 63 61 72 64 73  |rsticon%=0:cards|
000080a0  6c 65 66 74 25 3d 32 34  0d 28 be 7b 73 63 6f 72  |left%=24.(.{scor|
000080b0  65 68 61 6e 25 3d a4 63  72 65 61 74 65 69 63 6f  |ehan%=.createico|
000080c0  6e 28 6d 61 69 6e 25 2c  22 22 2c 22 53 63 6f 72  |n(main%,"","Scor|
000080d0  65 20 3a 20 22 2b c3 73  63 6f 72 65 25 2b 22 20  |e : "+.score%+" |
000080e0  69 6e 20 22 2b c3 70 79  72 67 61 6d 65 73 25 2c  |in "+.pyrgames%,|
000080f0  35 30 2c 2d 33 35 30 2c  33 30 30 2c 2d 32 39 30  |50,-350,300,-290|
00008100  2c 25 30 30 30 31 30 31  31 31 30 30 30 30 30 30  |,%00010111000000|
00008110  30 30 30 30 30 30 30 30  30 31 30 30 31 31 31 31  |0000000001001111|
00008120  30 31 29 0d 28 c8 66 64  65 61 6c 68 61 6e 25 3d  |01).(.fdealhan%=|
00008130  a4 63 72 65 61 74 65 69  63 6f 6e 28 6d 61 69 6e  |.createicon(main|
00008140  25 2c 22 22 2c 22 44 65  61 6c 20 3a 20 22 2b c3  |%,"","Deal : "+.|
00008150  64 65 61 6c 25 2c 35 30  2c 2d 34 32 30 2c 33 30  |deal%,50,-420,30|
00008160  30 2c 2d 33 36 30 2c 25  30 30 30 31 30 31 31 31  |0,-360,%00010111|
00008170  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 31  |0000000000000001|
00008180  30 30 31 31 31 31 30 31  29 0d 28 d2 76 63 61 72  |00111101).(.vcar|
00008190  64 73 6c 65 66 74 68 61  6e 25 3d a4 63 72 65 61  |dslefthan%=.crea|
000081a0  74 65 69 63 6f 6e 28 6d  61 69 6e 25 2c 22 22 2c  |teicon(main%,"",|
000081b0  22 43 61 72 64 73 20 6c  65 66 74 20 3a 20 22 2b  |"Cards left : "+|
000081c0  c3 63 61 72 64 73 6c 65  66 74 25 2c 35 30 2c 2d  |.cardsleft%,50,-|
000081d0  34 39 30 2c 33 30 30 2c  2d 34 33 30 2c 25 30 30  |490,300,-430,%00|
000081e0  30 31 30 31 31 31 30 30  30 30 30 30 30 30 30 30  |0101110000000000|
000081f0  30 30 30 30 30 31 30 30  31 31 31 31 30 31 29 0d  |00000100111101).|
00008200  28 dc 39 6c 61 73 74 69  63 6f 6e 31 25 3d 2d 31  |(.9lasticon1%=-1|
00008210  3a 6c 61 73 74 69 63 6f  6e 32 25 3d 2d 31 3a 6c  |:lasticon2%=-1:l|
00008220  61 73 74 76 61 6c 31 25  3d 2d 31 3a 6c 61 73 74  |astval1%=-1:last|
00008230  76 61 6c 32 25 3d 2d 31  0d 28 e6 05 e1 0d 28 f0  |val2%=-1.(....(.|
00008240  04 0d 28 fa 1f dd f2 70  79 72 61 6d 69 64 5f 6d  |..(....pyramid_m|
00008250  6f 75 73 65 63 6c 69 63  6b 28 69 63 6f 6e 25 29  |ouseclick(icon%)|
00008260  0d 29 04 40 f4 20 54 68  69 73 20 70 72 6f 63 65  |.).@. This proce|
00008270  64 75 72 65 20 70 72 6f  63 65 73 73 65 73 20 6d  |dure processes m|
00008280  6f 75 73 65 63 6c 69 63  6b 73 20 69 6e 20 61 20  |ouseclicks in a |
00008290  67 61 6d 65 20 6f 66 20  50 79 72 61 6d 69 64 2e  |game of Pyramid.|
000082a0  0d 29 0e 1c f4 20 4e 6f  77 20 70 72 6f 63 65 73  |.)... Now proces|
000082b0  73 20 74 68 65 20 65 76  65 6e 74 2e 0d 29 18 33  |s the event..).3|
000082c0  ea 20 63 6c 69 63 6b 25  2c 49 2c 4a 2c 70 6c 61  |. click%,I,J,pla|
000082d0  79 25 2c 74 65 6d 70 63  61 72 64 25 2c 73 68 61  |y%,tempcard%,sha|
000082e0  64 65 64 25 2c 63 61 72  64 6d 6f 76 65 64 25 0d  |ded%,cardmoved%.|
000082f0  29 22 10 63 61 72 64 6d  6f 76 65 64 25 3d a3 0d  |)".cardmoved%=..|
00008300  29 2c 23 70 6c 61 79 25  3d a4 70 79 72 61 6d 69  |),#play%=.pyrami|
00008310  64 5f 75 6e 63 6f 76 65  72 65 64 28 69 63 6f 6e  |d_uncovered(icon|
00008320  25 29 0d 29 36 37 e7 20  69 63 6f 6e 25 3d 70 79  |%).)67. icon%=py|
00008330  72 77 61 73 74 65 68 61  6e 25 20 84 20 69 63 6f  |rwastehan% . ico|
00008340  6e 25 3d 70 79 72 66 6f  75 6e 64 68 61 6e 25 20  |n%=pyrfoundhan% |
00008350  8c 20 70 6c 61 79 25 3d  b9 0d 29 40 0f de 20 63  |. play%=..)@.. c|
00008360  6c 69 63 6b 25 20 34 30  0d 29 4a 11 21 63 6c 69  |lick% 40.)J.!cli|
00008370  63 6b 25 3d 6d 61 69 6e  25 0d 29 54 12 63 6c 69  |ck%=main%.)T.cli|
00008380  63 6b 25 21 34 3d 69 63  6f 6e 25 0d 29 5e 2b c8  |ck%!4=icon%.)^+.|
00008390  99 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  |."Wimp_GetIconSt|
000083a0  61 74 65 22 2c 2c 63 6c  69 63 6b 25 20 b8 20 2c  |ate",,click% . ,|
000083b0  63 6c 69 63 6b 25 0d 29  68 14 6e 61 6d 65 24 3d  |click%.)h.name$=|
000083c0  24 63 6c 69 63 6b 25 21  33 32 0d 29 72 13 6e 61  |$click%!32.)r.na|
000083d0  6d 65 24 3d c1 6e 61 6d  65 24 2c 32 29 0d 29 7c  |me$=.name$,2).)||
000083e0  10 6e 61 6d 65 25 3d bb  6e 61 6d 65 24 0d 29 86  |.name%=.name$.).|
000083f0  10 e7 20 6e 61 6d 65 25  3c 3e 30 20 8c 0d 29 90  |.. name%<>0 ..).|
00008400  20 20 20 63 61 72 64 76  61 6c 75 65 25 3d a4 63  |   cardvalue%=.c|
00008410  61 72 64 76 61 6c 28 6e  61 6d 65 25 29 0d 29 9a  |ardval(name%).).|
00008420  05 cc 0d 29 a4 13 20 20  63 61 72 64 76 61 6c 75  |...)..  cardvalu|
00008430  65 25 3d 2d 31 0d 29 ae  05 cd 0d 29 b8 3a e7 20  |e%=-1.)....).:. |
00008440  69 63 6f 6e 25 3d 70 79  72 70 61 63 6b 68 61 6e  |icon%=pyrpackhan|
00008450  25 20 8c 20 63 61 72 64  76 61 6c 75 65 25 3d a4  |% . cardvalue%=.|
00008460  63 61 72 64 76 61 6c 28  70 79 72 70 61 63 6b 25  |cardval(pyrpack%|
00008470  28 31 29 29 0d 29 c2 10  e7 20 69 63 6f 6e 25 3c  |(1)).)... icon%<|
00008480  3e 30 20 8c 0d 29 cc 15  20 20 e7 20 73 65 6c 65  |>0 ..)..  . sele|
00008490  63 74 65 64 25 3d a3 20  8c 0d 29 d6 48 20 20 20  |cted%=. ..).H   |
000084a0  20 6c 61 73 74 69 63 6f  6e 31 25 3d 69 63 6f 6e  | lasticon1%=icon|
000084b0  25 3a 6c 61 73 74 76 61  6c 31 25 3d 63 61 72 64  |%:lastval1%=card|
000084c0  76 61 6c 75 65 25 3a 6c  61 73 74 69 63 6f 6e 32  |value%:lasticon2|
000084d0  25 3d 2d 31 3a 6c 61 73  74 76 61 6c 32 25 3d 2d  |%=-1:lastval2%=-|
000084e0  31 0d 29 e0 07 20 20 cd  0d 29 ea 2f 20 20 e7 20  |1.)..  ..)./  . |
000084f0  73 65 6c 65 63 74 65 64  25 3d b9 20 80 20 63 61  |selected%=. . ca|
00008500  72 64 76 61 6c 75 65 25  2b 6c 61 73 74 76 61 6c  |rdvalue%+lastval|
00008510  31 25 3d 31 33 20 8c 0d  29 f4 2d 20 20 20 20 6c  |1%=13 ..).-    l|
00008520  61 73 74 69 63 6f 6e 32  25 3d 69 63 6f 6e 25 3a  |asticon2%=icon%:|
00008530  6c 61 73 74 76 61 6c 32  25 3d 63 61 72 64 76 61  |lastval2%=cardva|
00008540  6c 75 65 25 0d 29 fe 07  20 20 cd 0d 2a 08 05 cd  |lue%.)..  ..*...|
00008550  0d 2a 12 1c f4 20 4e 6f  77 20 70 72 6f 63 65 73  |.*... Now proces|
00008560  73 20 74 68 65 20 63 6c  69 63 6b 2e 0d 2a 1c 0e  |s the click..*..|
00008570  c8 8e 20 69 63 6f 6e 25  20 ca 0d 2a 26 0b 20 20  |.. icon% ..*&.  |
00008580  c9 20 30 20 3a 0d 2a 30  1c 20 20 20 20 73 63 6f  |. 0 :.*0.    sco|
00008590  72 65 25 3d 30 3a 70 79  72 67 61 6d 65 73 25 3d  |re%=0:pyrgames%=|
000085a0  30 0d 2a 3a 10 20 20 20  20 f2 6e 65 77 67 61 6d  |0.*:.    .newgam|
000085b0  65 0d 2a 44 15 20 20 c9  20 70 79 72 70 61 63 6b  |e.*D.  . pyrpack|
000085c0  68 61 6e 25 20 3a 0d 2a  4e 14 20 20 20 20 63 61  |han% :.*N.    ca|
000085d0  72 64 6d 6f 76 65 64 25  3d b9 0d 2a 58 19 20 20  |rdmoved%=..*X.  |
000085e0  20 20 e7 20 70 79 72 70  61 63 6b 25 28 31 29 3d  |  . pyrpack%(1)=|
000085f0  30 20 8c 0d 2a 62 14 20  20 20 20 20 20 e3 20 49  |0 ..*b.      . I|
00008600  3d 31 20 b8 20 32 34 0d  2a 6c 27 20 20 20 20 20  |=1 . 24.*l'     |
00008610  20 20 20 70 79 72 70 61  63 6b 25 28 49 29 3d 70  |   pyrpack%(I)=p|
00008620  79 72 77 61 73 74 65 25  28 32 35 2d 49 29 0d 2a  |yrwaste%(25-I).*|
00008630  76 0d 20 20 20 20 20 20  ed 20 49 0d 2a 80 14 20  |v.      . I.*.. |
00008640  20 20 20 20 20 e3 20 49  3d 31 20 b8 20 32 34 0d  |     . I=1 . 24.|
00008650  2a 8a 1a 20 20 20 20 20  20 20 20 70 79 72 77 61  |*..        pyrwa|
00008660  73 74 65 25 28 49 29 3d  30 0d 2a 94 0d 20 20 20  |ste%(I)=0.*..   |
00008670  20 20 20 ed 20 49 0d 2a  9e 1b 20 20 20 20 20 20  |   . I.*..      |
00008680  e7 20 70 79 72 70 61 63  6b 25 28 31 29 3d 30 20  |. pyrpack%(1)=0 |
00008690  8c 0d 2a a8 0d 20 20 20  20 20 20 20 20 f5 0d 2a  |..*..        ..*|
000086a0  b2 18 20 20 20 20 20 20  20 20 20 20 e3 20 49 3d  |..          . I=|
000086b0  31 20 b8 20 32 33 0d 2a  bc 29 20 20 20 20 20 20  |1 . 23.*.)      |
000086c0  20 20 20 20 20 20 70 79  72 70 61 63 6b 25 28 49  |      pyrpack%(I|
000086d0  29 3d 70 79 72 70 61 63  6b 25 28 49 2b 31 29 0d  |)=pyrpack%(I+1).|
000086e0  2a c6 11 20 20 20 20 20  20 20 20 20 20 ed 20 49  |*..          . I|
000086f0  0d 2a d0 1c 20 20 20 20  20 20 20 20 20 20 70 79  |.*..          py|
00008700  72 70 61 63 6b 25 28 32  34 29 3d 30 0d 2a da 1c  |rpack%(24)=0.*..|
00008710  20 20 20 20 20 20 20 20  fd 20 70 79 72 70 61 63  |        . pyrpac|
00008720  6b 25 28 31 29 3c 3e 30  0d 2a e4 0b 20 20 20 20  |k%(1)<>0.*..    |
00008730  20 20 cd 0d 2a ee 17 20  20 20 20 20 20 64 65 61  |  ..*..      dea|
00008740  6c 25 3d 64 65 61 6c 25  2b 31 0d 2a f8 51 20 20  |l%=deal%+1.*.Q  |
00008750  20 20 20 20 e7 20 64 65  61 6c 25 3c 34 20 8c 20  |    . deal%<4 . |
00008760  c8 99 22 57 69 6d 70 45  78 74 5f 53 65 74 49 63  |.."WimpExt_SetIc|
00008770  6f 6e 53 74 72 69 6e 67  22 2c 2c 2c 6d 61 69 6e  |onString",,,main|
00008780  25 2c 64 65 61 6c 68 61  6e 25 2c 22 44 65 61 6c  |%,dealhan%,"Deal|
00008790  20 3a 20 22 2b c3 64 65  61 6c 25 0d 2b 02 32 20  | : "+.deal%.+.2 |
000087a0  20 20 20 20 20 f2 73 65  74 69 63 6f 6e 73 70 72  |     .seticonspr|
000087b0  69 74 65 28 6d 61 69 6e  25 2c 70 79 72 70 61 63  |ite(main%,pyrpac|
000087c0  6b 68 61 6e 25 2c 22 62  61 63 6b 22 29 0d 2b 0c  |khan%,"back").+.|
000087d0  35 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 73  |5      .seticons|
000087e0  70 72 69 74 65 28 6d 61  69 6e 25 2c 70 79 72 77  |prite(main%,pyrw|
000087f0  61 73 74 65 68 61 6e 25  2c 22 6e 6f 63 61 72 64  |astehan%,"nocard|
00008800  22 29 0d 2b 16 09 20 20  20 20 cc 0d 2b 20 25 20  |").+..    ..+ % |
00008810  20 20 20 20 20 e7 20 66  69 72 73 74 69 63 6f 6e  |     . firsticon|
00008820  25 3d 70 79 72 77 61 73  74 65 68 61 6e 25 20 8c  |%=pyrwastehan% .|
00008830  0d 2b 2a 36 20 20 20 20  20 20 20 20 c8 99 22 57  |.+*6        .."W|
00008840  69 6d 70 45 78 74 5f 53  65 74 49 63 6f 6e 22 2c  |impExt_SetIcon",|
00008850  2c 2c 6d 61 69 6e 25 2c  70 79 72 77 61 73 74 65  |,,main%,pyrwaste|
00008860  68 61 6e 25 2c 30 0d 2b  34 31 20 20 20 20 20 20  |han%,0.+41      |
00008870  20 20 73 65 6c 65 63 74  65 64 25 3d a3 3a 66 69  |  selected%=.:fi|
00008880  72 73 74 69 63 6f 6e 25  3d 30 3a 66 69 72 73 74  |rsticon%=0:first|
00008890  63 61 72 64 25 3d 30 0d  2b 3e 0b 20 20 20 20 20  |card%=0.+>.     |
000088a0  20 cd 0d 2b 48 19 20 20  20 20 20 20 e3 20 49 3d  | ..+H.      . I=|
000088b0  32 34 20 b8 20 32 20 88  20 2d 31 0d 2b 52 27 20  |24 . 2 . -1.+R' |
000088c0  20 20 20 20 20 20 20 70  79 72 77 61 73 74 65 25  |       pyrwaste%|
000088d0  28 49 29 3d 70 79 72 77  61 73 74 65 25 28 49 2d  |(I)=pyrwaste%(I-|
000088e0  31 29 0d 2b 5c 0d 20 20  20 20 20 20 ed 20 49 0d  |1).+\.      . I.|
000088f0  2b 66 22 20 20 20 20 20  20 70 79 72 77 61 73 74  |+f"      pyrwast|
00008900  65 25 28 31 29 3d 70 79  72 70 61 63 6b 25 28 31  |e%(1)=pyrpack%(1|
00008910  29 0d 2b 70 14 20 20 20  20 20 20 e3 20 49 3d 31  |).+p.      . I=1|
00008920  20 b8 20 32 33 0d 2b 7a  25 20 20 20 20 20 20 20  | . 23.+z%       |
00008930  20 70 79 72 70 61 63 6b  25 28 49 29 3d 70 79 72  | pyrpack%(I)=pyr|
00008940  70 61 63 6b 25 28 49 2b  31 29 0d 2b 84 0d 20 20  |pack%(I+1).+..  |
00008950  20 20 20 20 ed 20 49 0d  2b 8e 18 20 20 20 20 20  |    . I.+..     |
00008960  20 70 79 72 70 61 63 6b  25 28 32 34 29 3d 30 0d  | pyrpack%(24)=0.|
00008970  2b 98 1b 20 20 20 20 20  20 e7 20 70 79 72 70 61  |+..      . pyrpa|
00008980  63 6b 25 28 31 29 3d 30  20 8c 0d 2b a2 36 20 20  |ck%(1)=0 ..+.6  |
00008990  20 20 20 20 20 20 f2 73  65 74 69 63 6f 6e 73 70  |      .seticonsp|
000089a0  72 69 74 65 28 6d 61 69  6e 25 2c 70 79 72 70 61  |rite(main%,pyrpa|
000089b0  63 6b 68 61 6e 25 2c 22  6e 6f 63 61 72 64 22 29  |ckhan%,"nocard")|
000089c0  0d 2b ac 0b 20 20 20 20  20 20 cd 0d 2b b6 3c 20  |.+..      ..+.< |
000089d0  20 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 73  |       .seticons|
000089e0  70 72 69 74 65 28 6d 61  69 6e 25 2c 70 79 72 77  |prite(main%,pyrw|
000089f0  61 73 74 65 68 61 6e 25  2c c3 70 79 72 77 61 73  |astehan%,.pyrwas|
00008a00  74 65 25 28 31 29 29 0d  2b c0 09 20 20 20 20 cd  |te%(1)).+..    .|
00008a10  0d 2b ca 05 cb 0d 2b d4  1a e7 20 70 6c 61 79 25  |.+....+... play%|
00008a20  3d b9 20 80 20 6e 61 6d  65 25 3c 3e 30 20 8c 0d  |=. . name%<>0 ..|
00008a30  2b de 15 20 20 e7 20 73  65 6c 65 63 74 65 64 25  |+..  . selected%|
00008a40  3d a3 20 8c 0d 2b e8 2b  20 20 20 20 c8 99 22 57  |=. ..+.+    .."W|
00008a50  69 6d 70 45 78 74 5f 53  65 74 49 63 6f 6e 22 2c  |impExt_SetIcon",|
00008a60  2c 2c 6d 61 69 6e 25 2c  69 63 6f 6e 25 2c 32 0d  |,,main%,icon%,2.|
00008a70  2b f2 2f 20 20 20 20 e7  20 63 61 72 64 76 61 6c  |+./    . cardval|
00008a80  75 65 25 3d 31 33 20 80  20 69 63 6f 6e 25 3c 3e  |ue%=13 . icon%<>|
00008a90  70 79 72 66 6f 75 6e 64  68 61 6e 25 20 8c 0d 2b  |pyrfoundhan% ..+|
00008aa0  fc 2d 20 20 20 20 20 20  c8 99 22 57 69 6d 70 45  |.-      .."WimpE|
00008ab0  78 74 5f 53 65 74 49 63  6f 6e 22 2c 2c 2c 6d 61  |xt_SetIcon",,,ma|
00008ac0  69 6e 25 2c 69 63 6f 6e  25 2c 30 0d 2c 06 28 20  |in%,icon%,0.,.( |
00008ad0  20 20 20 20 20 f2 70 79  72 61 6d 69 64 5f 6d 6f  |     .pyramid_mo|
00008ae0  76 65 63 61 72 64 28 69  63 6f 6e 25 2c 6e 61 6d  |vecard(icon%,nam|
00008af0  65 24 29 0d 2c 10 19 20  20 20 20 20 20 e3 20 49  |e$).,..      . I|
00008b00  3d 35 32 20 b8 20 32 20  88 20 2d 31 0d 2c 1a 27  |=52 . 2 . -1.,.'|
00008b10  20 20 20 20 20 20 20 20  70 79 72 66 6f 75 6e 64  |        pyrfound|
00008b20  25 28 49 29 3d 70 79 72  66 6f 75 6e 64 25 28 49  |%(I)=pyrfound%(I|
00008b30  2d 31 29 0d 2c 24 0d 20  20 20 20 20 20 ed 20 49  |-1).,$.      . I|
00008b40  0d 2c 2e 1c 20 20 20 20  20 20 70 79 72 66 6f 75  |.,..      pyrfou|
00008b50  6e 64 25 28 31 29 3d 6e  61 6d 65 25 0d 2c 38 15  |nd%(1)=name%.,8.|
00008b60  20 20 20 20 20 20 73 65  6c 65 63 74 65 64 25 3d  |      selected%=|
00008b70  a3 0d 2c 42 09 20 20 20  20 cc 0d 2c 4c 1c 20 20  |..,B.    ..,L.  |
00008b80  20 20 20 20 e7 20 63 61  72 64 76 61 6c 75 65 25  |    . cardvalue%|
00008b90  3c 3e 31 33 20 8c 0d 2c  56 4f 20 20 20 20 20 20  |<>13 ..,VO      |
00008ba0  20 20 73 65 6c 65 63 74  65 64 25 3d b9 3a 66 69  |  selected%=.:fi|
00008bb0  72 73 74 63 61 72 64 25  3d 63 61 72 64 76 61 6c  |rstcard%=cardval|
00008bc0  75 65 25 3a 66 69 72 73  74 69 63 6f 6e 25 3d 69  |ue%:firsticon%=i|
00008bd0  63 6f 6e 25 3a 66 69 72  73 74 6e 61 6d 65 25 3d  |con%:firstname%=|
00008be0  6e 61 6d 65 25 0d 2c 60  0b 20 20 20 20 20 20 cd  |name%.,`.      .|
00008bf0  0d 2c 6a 09 20 20 20 20  cd 0d 2c 74 07 20 20 cc  |.,j.    ..,t.  .|
00008c00  0d 2c 7e 1c 20 20 20 20  e7 20 69 63 6f 6e 25 3d  |.,~.    . icon%=|
00008c10  66 69 72 73 74 69 63 6f  6e 25 20 8c 0d 2c 88 2d  |firsticon% ..,.-|
00008c20  20 20 20 20 20 20 c8 99  22 57 69 6d 70 45 78 74  |      .."WimpExt|
00008c30  5f 53 65 74 49 63 6f 6e  22 2c 2c 2c 6d 61 69 6e  |_SetIcon",,,main|
00008c40  25 2c 69 63 6f 6e 25 2c  32 0d 2c 92 4a 20 20 20  |%,icon%,2.,.J   |
00008c50  20 20 20 73 65 6c 65 63  74 65 64 25 3d a3 3a 66  |   selected%=.:f|
00008c60  69 72 73 74 63 61 72 64  25 3d 30 3a 66 69 72 73  |irstcard%=0:firs|
00008c70  74 69 63 6f 6e 25 3d 30  3a 6c 61 73 74 69 63 6f  |ticon%=0:lastico|
00008c80  6e 31 25 3d 2d 31 3a 6c  61 73 74 76 61 6c 31 25  |n1%=-1:lastval1%|
00008c90  3d 2d 31 0d 2c 9c 09 20  20 20 20 cc 0d 2c a6 26  |=-1.,..    ..,.&|
00008ca0  20 20 20 20 20 20 e7 20  63 61 72 64 76 61 6c 75  |      . cardvalu|
00008cb0  65 25 2b 66 69 72 73 74  63 61 72 64 25 3d 31 33  |e%+firstcard%=13|
00008cc0  20 8c 0d 2c b0 27 20 20  20 20 20 20 20 20 e7 20  | ..,.'        . |
00008cd0  66 69 72 73 74 69 63 6f  6e 25 3d 70 79 72 66 6f  |firsticon%=pyrfo|
00008ce0  75 6e 64 68 61 6e 25 20  8c 0d 2c ba 2c 20 20 20  |undhan% ..,.,   |
00008cf0  20 20 20 20 20 20 20 f2  70 79 72 61 6d 69 64 5f  |       .pyramid_|
00008d00  6d 6f 76 65 63 61 72 64  28 69 63 6f 6e 25 2c 6e  |movecard(icon%,n|
00008d10  61 6d 65 24 29 0d 2c c4  1d 20 20 20 20 20 20 20  |ame$).,..       |
00008d20  20 20 20 e3 20 49 3d 35  32 20 b8 20 32 20 88 20  |   . I=52 . 2 . |
00008d30  2d 31 0d 2c ce 2b 20 20  20 20 20 20 20 20 20 20  |-1.,.+          |
00008d40  20 20 70 79 72 66 6f 75  6e 64 25 28 49 29 3d 70  |  pyrfound%(I)=p|
00008d50  79 72 66 6f 75 6e 64 25  28 49 2d 31 29 0d 2c d8  |yrfound%(I-1).,.|
00008d60  11 20 20 20 20 20 20 20  20 20 20 ed 20 49 0d 2c  |.          . I.,|
00008d70  e2 20 20 20 20 20 20 20  20 20 20 20 70 79 72 66  |.           pyrf|
00008d80  6f 75 6e 64 25 28 31 29  3d 6e 61 6d 65 25 0d 2c  |ound%(1)=name%.,|
00008d90  ec 38 20 20 20 20 20 20  20 20 20 20 c8 99 22 57  |.8          .."W|
00008da0  69 6d 70 45 78 74 5f 53  65 74 49 63 6f 6e 22 2c  |impExt_SetIcon",|
00008db0  2c 2c 6d 61 69 6e 25 2c  70 79 72 66 6f 75 6e 64  |,,main%,pyrfound|
00008dc0  68 61 6e 25 2c 30 0d 2c  f6 33 20 20 20 20 20 20  |han%,0.,.3      |
00008dd0  20 20 20 20 73 65 6c 65  63 74 65 64 25 3d a3 3a  |    selected%=.:|
00008de0  66 69 72 73 74 69 63 6f  6e 25 3d 30 3a 66 69 72  |firsticon%=0:fir|
00008df0  73 74 63 61 72 64 25 3d  30 0d 2d 00 0d 20 20 20  |stcard%=0.-..   |
00008e00  20 20 20 20 20 cc 0d 2d  0a 36 20 20 20 20 20 20  |     ..-.6      |
00008e10  20 20 20 20 c8 99 22 57  69 6d 70 45 78 74 5f 53  |    .."WimpExt_S|
00008e20  65 74 49 63 6f 6e 22 2c  2c 2c 6d 61 69 6e 25 2c  |etIcon",,,main%,|
00008e30  66 69 72 73 74 69 63 6f  6e 25 2c 30 0d 2d 14 38  |firsticon%,0.-.8|
00008e40  20 20 20 20 20 20 20 20  20 20 c8 99 22 57 69 6d  |          .."Wim|
00008e50  70 45 78 74 5f 53 65 74  49 63 6f 6e 22 2c 2c 2c  |pExt_SetIcon",,,|
00008e60  6d 61 69 6e 25 2c 70 79  72 66 6f 75 6e 64 68 61  |main%,pyrfoundha|
00008e70  6e 25 2c 30 0d 2d 1e 24  20 20 20 20 20 20 20 20  |n%,0.-.$        |
00008e80  20 20 e7 20 69 63 6f 6e  25 3d 70 79 72 66 6f 75  |  . icon%=pyrfou|
00008e90  6e 64 68 61 6e 25 20 8c  0d 2d 28 33 20 20 20 20  |ndhan% ..-(3    |
00008ea0  20 20 20 20 20 20 20 20  f2 70 79 72 61 6d 69 64  |        .pyramid|
00008eb0  5f 6d 6f 76 65 63 61 72  64 28 66 69 72 73 74 69  |_movecard(firsti|
00008ec0  63 6f 6e 25 2c 6e 61 6d  65 24 29 0d 2d 32 1f 20  |con%,name$).-2. |
00008ed0  20 20 20 20 20 20 20 20  20 20 20 74 65 6d 70 63  |           tempc|
00008ee0  61 72 64 25 3d 6e 61 6d  65 25 0d 2d 3c 27 20 20  |ard%=name%.-<'  |
00008ef0  20 20 20 20 20 20 20 20  20 20 70 79 72 66 6f 75  |          pyrfou|
00008f00  6e 64 25 28 31 29 3d 66  69 72 73 74 63 61 72 64  |nd%(1)=firstcard|
00008f10  25 0d 2d 46 1f 20 20 20  20 20 20 20 20 20 20 20  |%.-F.           |
00008f20  20 e3 20 49 3d 35 32 20  b8 20 32 20 88 20 2d 31  | . I=52 . 2 . -1|
00008f30  0d 2d 50 2d 20 20 20 20  20 20 20 20 20 20 20 20  |.-P-            |
00008f40  20 20 70 79 72 66 6f 75  6e 64 25 28 49 29 3d 70  |  pyrfound%(I)=p|
00008f50  79 72 66 6f 75 6e 64 25  28 49 2d 31 29 0d 2d 5a  |yrfound%(I-1).-Z|
00008f60  13 20 20 20 20 20 20 20  20 20 20 20 20 ed 20 49  |.            . I|
00008f70  0d 2d 64 26 20 20 20 20  20 20 20 20 20 20 20 20  |.-d&            |
00008f80  70 79 72 66 6f 75 6e 64  25 28 31 29 3d 74 65 6d  |pyrfound%(1)=tem|
00008f90  70 63 61 72 64 25 0d 2d  6e 3d 20 20 20 20 20 20  |pcard%.-n=      |
00008fa0  20 20 20 20 20 20 f2 73  65 74 69 63 6f 6e 73 70  |      .seticonsp|
00008fb0  72 69 74 65 28 6d 61 69  6e 25 2c 70 79 72 66 6f  |rite(main%,pyrfo|
00008fc0  75 6e 64 68 61 6e 25 2c  c3 74 65 6d 70 63 61 72  |undhan%,.tempcar|
00008fd0  64 25 29 0d 2d 78 3a 20  20 20 20 20 20 20 20 20  |d%).-x:         |
00008fe0  20 20 20 c8 99 22 57 69  6d 70 45 78 74 5f 53 65  |   .."WimpExt_Se|
00008ff0  74 49 63 6f 6e 22 2c 2c  2c 6d 61 69 6e 25 2c 70  |tIcon",,,main%,p|
00009000  79 72 66 6f 75 6e 64 68  61 6e 25 2c 30 0d 2d 82  |yrfoundhan%,0.-.|
00009010  35 20 20 20 20 20 20 20  20 20 20 20 20 73 65 6c  |5            sel|
00009020  65 63 74 65 64 25 3d a3  3a 66 69 72 73 74 69 63  |ected%=.:firstic|
00009030  6f 6e 25 3d 30 3a 66 69  72 73 74 63 61 72 64 25  |on%=0:firstcard%|
00009040  3d 30 0d 2d 8c 0f 20 20  20 20 20 20 20 20 20 20  |=0.-..          |
00009050  cc 0d 2d 96 1f 20 20 20  20 20 20 20 20 20 20 20  |..-..           |
00009060  20 e3 20 49 3d 35 32 20  b8 20 33 20 88 20 2d 31  | . I=52 . 3 . -1|
00009070  0d 2d a0 2d 20 20 20 20  20 20 20 20 20 20 20 20  |.-.-            |
00009080  20 20 70 79 72 66 6f 75  6e 64 25 28 49 29 3d 70  |  pyrfound%(I)=p|
00009090  79 72 66 6f 75 6e 64 25  28 49 2d 32 29 0d 2d aa  |yrfound%(I-2).-.|
000090a0  13 20 20 20 20 20 20 20  20 20 20 20 20 ed 20 49  |.            . I|
000090b0  0d 2d b4 27 20 20 20 20  20 20 20 20 20 20 20 20  |.-.'            |
000090c0  70 79 72 66 6f 75 6e 64  25 28 32 29 3d 66 69 72  |pyrfound%(2)=fir|
000090d0  73 74 6e 61 6d 65 25 0d  2d be 22 20 20 20 20 20  |stname%.-."     |
000090e0  20 20 20 20 20 20 20 70  79 72 66 6f 75 6e 64 25  |       pyrfound%|
000090f0  28 31 29 3d 6e 61 6d 65  25 0d 2d c8 33 20 20 20  |(1)=name%.-.3   |
00009100  20 20 20 20 20 20 20 20  20 f2 70 79 72 61 6d 69  |         .pyrami|
00009110  64 5f 6d 6f 76 65 63 61  72 64 28 66 69 72 73 74  |d_movecard(first|
00009120  69 63 6f 6e 25 2c 6e 61  6d 65 24 29 0d 2d d2 2e  |icon%,name$).-..|
00009130  20 20 20 20 20 20 20 20  20 20 20 20 f2 70 79 72  |            .pyr|
00009140  61 6d 69 64 5f 6d 6f 76  65 63 61 72 64 28 69 63  |amid_movecard(ic|
00009150  6f 6e 25 2c 6e 61 6d 65  24 29 0d 2d dc 35 20 20  |on%,name$).-.5  |
00009160  20 20 20 20 20 20 20 20  20 20 73 65 6c 65 63 74  |          select|
00009170  65 64 25 3d a3 3a 66 69  72 73 74 63 61 72 64 25  |ed%=.:firstcard%|
00009180  3d 30 3a 66 69 72 73 74  69 63 6f 6e 25 3d 30 0d  |=0:firsticon%=0.|
00009190  2d e6 0f 20 20 20 20 20  20 20 20 20 20 cd 0d 2d  |-..          ..-|
000091a0  f0 0d 20 20 20 20 20 20  20 20 cd 0d 2d fa 0b 20  |..        ..-.. |
000091b0  20 20 20 20 20 cd 0d 2e  04 09 20 20 20 20 cd 0d  |     .....    ..|
000091c0  2e 0e 07 20 20 cd 0d 2e  18 05 cd 0d 2e 22 31 e7  |...  ........"1.|
000091d0  20 64 65 61 6c 25 3d 34  20 84 20 70 79 72 64 65  | deal%=4 . pyrde|
000091e0  6c 65 74 65 64 25 28 31  29 3d b9 20 8c 20 f2 70  |leted%(1)=. . .p|
000091f0  79 72 61 6d 69 64 5f 73  63 6f 72 65 0d 2e 2c 16  |yramid_score..,.|
00009200  e7 20 6c 61 73 74 69 63  6f 6e 31 25 3c 3e 2d 31  |. lasticon1%<>-1|
00009210  20 8c 0d 2e 36 32 20 20  c8 99 22 57 69 6d 70 45  | ...62  .."WimpE|
00009220  78 74 5f 53 68 61 64 65  45 6e 74 72 79 22 2c 2c  |xt_ShadeEntry",,|
00009230  67 6d 65 6e 75 25 2c 30  2c 30 20 b8 20 73 68 61  |gmenu%,0,0 . sha|
00009240  64 65 64 25 0d 2e 40 36  20 20 e7 20 73 68 61 64  |ded%..@6  . shad|
00009250  65 64 25 3d 30 20 8c 20  c8 99 22 57 69 6d 70 45  |ed%=0 . .."WimpE|
00009260  78 74 5f 53 68 61 64 65  45 6e 74 72 79 22 2c 2c  |xt_ShadeEntry",,|
00009270  67 6d 65 6e 75 25 2c 30  2c 30 0d 2e 4a 05 cd 0d  |gmenu%,0,0..J...|
00009280  2e 54 05 e1 0d 2e 5e 04  0d 2e 68 1e dd a4 70 79  |.T....^...h...py|
00009290  72 61 6d 69 64 5f 75 6e  63 6f 76 65 72 65 64 28  |ramid_uncovered(|
000092a0  69 63 6f 6e 25 29 0d 2e  72 3f f4 20 54 68 69 73  |icon%)..r?. This|
000092b0  20 66 75 6e 63 74 69 6f  6e 20 72 65 74 75 72 6e  | function return|
000092c0  73 20 54 52 55 45 20 69  66 20 74 68 65 20 73 65  |s TRUE if the se|
000092d0  6c 65 63 74 65 64 20 69  63 6f 6e 20 69 73 20 69  |lected icon is i|
000092e0  6e 20 74 68 65 0d 2e 7c  33 f4 20 6c 61 79 6f 75  |n the..|3. layou|
000092f0  74 20 61 6e 64 20 69 73  20 75 6e 63 6f 76 65 72  |t and is uncover|
00009300  65 64 2c 20 61 6e 64 20  46 41 4c 53 45 20 6f 74  |ed, and FALSE ot|
00009310  68 65 72 77 69 73 65 2e  0d 2e 86 0d ea 20 49 2c  |herwise...... I,|
00009320  74 65 6d 70 25 0d 2e 90  0f 49 3d 30 3a 74 65 6d  |temp%....I=0:tem|
00009330  70 25 3d a3 0d 2e 9a 05  f5 0d 2e a4 0b 20 20 49  |p%=..........  I|
00009340  3d 49 2b 31 0d 2e ae 25  20 20 e7 20 69 63 6f 6e  |=I+1...%  . icon|
00009350  25 3d 70 79 72 6c 61 79  68 61 6e 25 28 49 29 20  |%=pyrlayhan%(I) |
00009360  8c 20 74 65 6d 70 25 3d  b9 0d 2e b8 14 fd 20 74  |. temp%=...... t|
00009370  65 6d 70 25 3d b9 20 84  20 49 3d 32 38 0d 2e c2  |emp%=. . I=28...|
00009380  13 e7 20 74 65 6d 70 25  3d a3 20 8c 20 49 3d 30  |.. temp%=. . I=0|
00009390  0d 2e cc 0e e7 20 49 3d  30 20 8c 20 3d a3 0d 2e  |..... I=0 . =...|
000093a0  d6 34 e7 20 49 3d 31 20  80 20 70 79 72 64 65 6c  |.4. I=1 . pyrdel|
000093b0  65 74 65 64 25 28 32 29  3d b9 20 80 20 70 79 72  |eted%(2)=. . pyr|
000093c0  64 65 6c 65 74 65 64 25  28 33 29 3d b9 20 8c 20  |deleted%(3)=. . |
000093d0  3d b9 0d 2e e0 34 e7 20  49 3d 32 20 80 20 70 79  |=....4. I=2 . py|
000093e0  72 64 65 6c 65 74 65 64  25 28 34 29 3d b9 20 80  |rdeleted%(4)=. .|
000093f0  20 70 79 72 64 65 6c 65  74 65 64 25 28 35 29 3d  | pyrdeleted%(5)=|
00009400  b9 20 8c 20 3d b9 0d 2e  ea 34 e7 20 49 3d 33 20  |. . =....4. I=3 |
00009410  80 20 70 79 72 64 65 6c  65 74 65 64 25 28 35 29  |. pyrdeleted%(5)|
00009420  3d b9 20 80 20 70 79 72  64 65 6c 65 74 65 64 25  |=. . pyrdeleted%|
00009430  28 36 29 3d b9 20 8c 20  3d b9 0d 2e f4 34 e7 20  |(6)=. . =....4. |
00009440  49 3d 34 20 80 20 70 79  72 64 65 6c 65 74 65 64  |I=4 . pyrdeleted|
00009450  25 28 37 29 3d b9 20 80  20 70 79 72 64 65 6c 65  |%(7)=. . pyrdele|
00009460  74 65 64 25 28 38 29 3d  b9 20 8c 20 3d b9 0d 2e  |ted%(8)=. . =...|
00009470  fe 34 e7 20 49 3d 35 20  80 20 70 79 72 64 65 6c  |.4. I=5 . pyrdel|
00009480  65 74 65 64 25 28 38 29  3d b9 20 80 20 70 79 72  |eted%(8)=. . pyr|
00009490  64 65 6c 65 74 65 64 25  28 39 29 3d b9 20 8c 20  |deleted%(9)=. . |
000094a0  3d b9 0d 2f 08 35 e7 20  49 3d 36 20 80 20 70 79  |=../.5. I=6 . py|
000094b0  72 64 65 6c 65 74 65 64  25 28 39 29 3d b9 20 80  |rdeleted%(9)=. .|
000094c0  20 70 79 72 64 65 6c 65  74 65 64 25 28 31 30 29  | pyrdeleted%(10)|
000094d0  3d b9 20 8c 20 3d b9 0d  2f 12 36 e7 20 49 3d 37  |=. . =../.6. I=7|
000094e0  20 80 20 70 79 72 64 65  6c 65 74 65 64 25 28 31  | . pyrdeleted%(1|
000094f0  31 29 3d b9 20 80 20 70  79 72 64 65 6c 65 74 65  |1)=. . pyrdelete|
00009500  64 25 28 31 32 29 3d b9  20 8c 20 3d b9 0d 2f 1c  |d%(12)=. . =../.|
00009510  36 e7 20 49 3d 38 20 80  20 70 79 72 64 65 6c 65  |6. I=8 . pyrdele|
00009520  74 65 64 25 28 31 32 29  3d b9 20 80 20 70 79 72  |ted%(12)=. . pyr|
00009530  64 65 6c 65 74 65 64 25  28 31 33 29 3d b9 20 8c  |deleted%(13)=. .|
00009540  20 3d b9 0d 2f 26 36 e7  20 49 3d 39 20 80 20 70  | =../&6. I=9 . p|
00009550  79 72 64 65 6c 65 74 65  64 25 28 31 33 29 3d b9  |yrdeleted%(13)=.|
00009560  20 80 20 70 79 72 64 65  6c 65 74 65 64 25 28 31  | . pyrdeleted%(1|
00009570  34 29 3d b9 20 8c 20 3d  b9 0d 2f 30 37 e7 20 49  |4)=. . =../07. I|
00009580  3d 31 30 20 80 20 70 79  72 64 65 6c 65 74 65 64  |=10 . pyrdeleted|
00009590  25 28 31 34 29 3d b9 20  80 20 70 79 72 64 65 6c  |%(14)=. . pyrdel|
000095a0  65 74 65 64 25 28 31 35  29 3d b9 20 8c 20 3d b9  |eted%(15)=. . =.|
000095b0  0d 2f 3a 37 e7 20 49 3d  31 31 20 80 20 70 79 72  |./:7. I=11 . pyr|
000095c0  64 65 6c 65 74 65 64 25  28 31 36 29 3d b9 20 80  |deleted%(16)=. .|
000095d0  20 70 79 72 64 65 6c 65  74 65 64 25 28 31 37 29  | pyrdeleted%(17)|
000095e0  3d b9 20 8c 20 3d b9 0d  2f 44 37 e7 20 49 3d 31  |=. . =../D7. I=1|
000095f0  32 20 80 20 70 79 72 64  65 6c 65 74 65 64 25 28  |2 . pyrdeleted%(|
00009600  31 37 29 3d b9 20 80 20  70 79 72 64 65 6c 65 74  |17)=. . pyrdelet|
00009610  65 64 25 28 31 38 29 3d  b9 20 8c 20 3d b9 0d 2f  |ed%(18)=. . =../|
00009620  4e 37 e7 20 49 3d 31 33  20 80 20 70 79 72 64 65  |N7. I=13 . pyrde|
00009630  6c 65 74 65 64 25 28 31  38 29 3d b9 20 80 20 70  |leted%(18)=. . p|
00009640  79 72 64 65 6c 65 74 65  64 25 28 31 39 29 3d b9  |yrdeleted%(19)=.|
00009650  20 8c 20 3d b9 0d 2f 58  37 e7 20 49 3d 31 34 20  | . =../X7. I=14 |
00009660  80 20 70 79 72 64 65 6c  65 74 65 64 25 28 31 39  |. pyrdeleted%(19|
00009670  29 3d b9 20 80 20 70 79  72 64 65 6c 65 74 65 64  |)=. . pyrdeleted|
00009680  25 28 32 30 29 3d b9 20  8c 20 3d b9 0d 2f 62 37  |%(20)=. . =../b7|
00009690  e7 20 49 3d 31 35 20 80  20 70 79 72 64 65 6c 65  |. I=15 . pyrdele|
000096a0  74 65 64 25 28 32 30 29  3d b9 20 80 20 70 79 72  |ted%(20)=. . pyr|
000096b0  64 65 6c 65 74 65 64 25  28 32 31 29 3d b9 20 8c  |deleted%(21)=. .|
000096c0  20 3d b9 0d 2f 6c 37 e7  20 49 3d 31 36 20 80 20  | =../l7. I=16 . |
000096d0  70 79 72 64 65 6c 65 74  65 64 25 28 32 32 29 3d  |pyrdeleted%(22)=|
000096e0  b9 20 80 20 70 79 72 64  65 6c 65 74 65 64 25 28  |. . pyrdeleted%(|
000096f0  32 33 29 3d b9 20 8c 20  3d b9 0d 2f 76 37 e7 20  |23)=. . =../v7. |
00009700  49 3d 31 37 20 80 20 70  79 72 64 65 6c 65 74 65  |I=17 . pyrdelete|
00009710  64 25 28 32 33 29 3d b9  20 80 20 70 79 72 64 65  |d%(23)=. . pyrde|
00009720  6c 65 74 65 64 25 28 32  34 29 3d b9 20 8c 20 3d  |leted%(24)=. . =|
00009730  b9 0d 2f 80 37 e7 20 49  3d 31 38 20 80 20 70 79  |../.7. I=18 . py|
00009740  72 64 65 6c 65 74 65 64  25 28 32 34 29 3d b9 20  |rdeleted%(24)=. |
00009750  80 20 70 79 72 64 65 6c  65 74 65 64 25 28 32 35  |. pyrdeleted%(25|
00009760  29 3d b9 20 8c 20 3d b9  0d 2f 8a 37 e7 20 49 3d  |)=. . =../.7. I=|
00009770  31 39 20 80 20 70 79 72  64 65 6c 65 74 65 64 25  |19 . pyrdeleted%|
00009780  28 32 35 29 3d b9 20 80  20 70 79 72 64 65 6c 65  |(25)=. . pyrdele|
00009790  74 65 64 25 28 32 36 29  3d b9 20 8c 20 3d b9 0d  |ted%(26)=. . =..|
000097a0  2f 94 37 e7 20 49 3d 32  30 20 80 20 70 79 72 64  |/.7. I=20 . pyrd|
000097b0  65 6c 65 74 65 64 25 28  32 36 29 3d b9 20 80 20  |eleted%(26)=. . |
000097c0  70 79 72 64 65 6c 65 74  65 64 25 28 32 37 29 3d  |pyrdeleted%(27)=|
000097d0  b9 20 8c 20 3d b9 0d 2f  9e 37 e7 20 49 3d 32 31  |. . =../.7. I=21|
000097e0  20 80 20 70 79 72 64 65  6c 65 74 65 64 25 28 32  | . pyrdeleted%(2|
000097f0  37 29 3d b9 20 80 20 70  79 72 64 65 6c 65 74 65  |7)=. . pyrdelete|
00009800  64 25 28 32 38 29 3d b9  20 8c 20 3d b9 0d 2f a8  |d%(28)=. . =../.|
00009810  0f e7 20 49 3d 32 32 20  8c 20 3d b9 0d 2f b2 0f  |.. I=22 . =../..|
00009820  e7 20 49 3d 32 33 20 8c  20 3d b9 0d 2f bc 0f e7  |. I=23 . =../...|
00009830  20 49 3d 32 34 20 8c 20  3d b9 0d 2f c6 0f e7 20  | I=24 . =../... |
00009840  49 3d 32 35 20 8c 20 3d  b9 0d 2f d0 0f e7 20 49  |I=25 . =../... I|
00009850  3d 32 36 20 8c 20 3d b9  0d 2f da 0f e7 20 49 3d  |=26 . =../... I=|
00009860  32 37 20 8c 20 3d b9 0d  2f e4 0f e7 20 49 3d 32  |27 . =../... I=2|
00009870  38 20 8c 20 3d b9 0d 2f  ee 06 3d a3 0d 2f f8 04  |8 . =../..=../..|
00009880  0d 30 02 23 dd f2 70 79  72 61 6d 69 64 5f 6d 6f  |.0.#..pyramid_mo|
00009890  76 65 63 61 72 64 28 69  63 6f 6e 25 2c 6e 61 6d  |vecard(icon%,nam|
000098a0  65 24 29 0d 30 0c 41 f4  20 54 68 69 73 20 70 72  |e$).0.A. This pr|
000098b0  6f 63 65 64 75 72 65 20  74 61 6b 65 73 20 63 61  |ocedure takes ca|
000098c0  72 65 20 6f 66 20 6d 6f  76 69 6e 67 20 74 68 65  |re of moving the|
000098d0  20 63 61 72 64 20 66 72  6f 6d 20 74 68 65 20 73  | card from the s|
000098e0  74 61 72 74 0d 30 16 41  f4 20 6c 6f 63 61 74 69  |tart.0.A. locati|
000098f0  6f 6e 20 74 6f 20 74 68  65 20 66 6f 75 6e 64 61  |on to the founda|
00009900  74 69 6f 6e 2c 20 69 6e  63 6c 75 64 69 6e 67 20  |tion, including |
00009910  6d 6f 76 69 6e 67 20 63  61 72 64 73 20 72 6f 75  |moving cards rou|
00009920  6e 64 20 69 6e 0d 30 20  2c f4 20 70 69 6c 65 73  |nd in.0 ,. piles|
00009930  20 61 6e 64 20 64 65 6c  65 74 69 6e 67 20 74 68  | and deleting th|
00009940  65 20 72 65 6c 65 76 61  6e 74 20 69 63 6f 6e 73  |e relevant icons|
00009950  2e 0d 30 2a 07 ea 20 49  0d 30 34 2c f2 73 65 74  |..0*.. I.04,.set|
00009960  69 63 6f 6e 73 70 72 69  74 65 28 6d 61 69 6e 25  |iconsprite(main%|
00009970  2c 70 79 72 66 6f 75 6e  64 68 61 6e 25 2c 6e 61  |,pyrfoundhan%,na|
00009980  6d 65 24 29 0d 30 3e 10  63 61 72 64 6d 6f 76 65  |me$).0>.cardmove|
00009990  64 25 3d b9 0d 30 48 1a  e7 20 69 63 6f 6e 25 3d  |d%=..0H.. icon%=|
000099a0  70 79 72 77 61 73 74 65  68 61 6e 25 20 8c 0d 30  |pyrwastehan% ..0|
000099b0  52 10 20 20 e3 20 49 3d  31 20 b8 20 32 33 0d 30  |R.  . I=1 . 23.0|
000099c0  5c 23 20 20 20 20 70 79  72 77 61 73 74 65 25 28  |\#    pyrwaste%(|
000099d0  49 29 3d 70 79 72 77 61  73 74 65 25 28 49 2b 31  |I)=pyrwaste%(I+1|
000099e0  29 0d 30 66 09 20 20 ed  20 49 0d 30 70 15 20 20  |).0f.  . I.0p.  |
000099f0  70 79 72 77 61 73 74 65  25 28 32 34 29 3d 30 0d  |pyrwaste%(24)=0.|
00009a00  30 7a 18 20 20 e7 20 70  79 72 77 61 73 74 65 25  |0z.  . pyrwaste%|
00009a10  28 31 29 3d 30 20 8c 0d  30 84 33 20 20 20 20 f2  |(1)=0 ..0.3    .|
00009a20  73 65 74 69 63 6f 6e 73  70 72 69 74 65 28 6d 61  |seticonsprite(ma|
00009a30  69 6e 25 2c 70 79 72 77  61 73 74 65 68 61 6e 25  |in%,pyrwastehan%|
00009a40  2c 22 6e 6f 63 61 72 64  22 29 0d 30 8e 07 20 20  |,"nocard").0..  |
00009a50  cc 0d 30 98 38 20 20 20  20 f2 73 65 74 69 63 6f  |..0.8    .setico|
00009a60  6e 73 70 72 69 74 65 28  6d 61 69 6e 25 2c 70 79  |nsprite(main%,py|
00009a70  72 77 61 73 74 65 68 61  6e 25 2c c3 70 79 72 77  |rwastehan%,.pyrw|
00009a80  61 73 74 65 25 28 31 29  29 0d 30 a2 07 20 20 cd  |aste%(1)).0..  .|
00009a90  0d 30 ac 1d 20 20 63 61  72 64 73 6c 65 66 74 25  |.0..  cardsleft%|
00009aa0  3d 63 61 72 64 73 6c 65  66 74 25 2d 31 0d 30 b6  |=cardsleft%-1.0.|
00009ab0  51 20 20 c8 99 22 57 69  6d 70 45 78 74 5f 53 65  |Q  .."WimpExt_Se|
00009ac0  74 49 63 6f 6e 53 74 72  69 6e 67 22 2c 2c 2c 6d  |tIconString",,,m|
00009ad0  61 69 6e 25 2c 63 61 72  64 73 6c 65 66 74 68 61  |ain%,cardsleftha|
00009ae0  6e 25 2c 22 43 61 72 64  73 20 6c 65 66 74 20 3a  |n%,"Cards left :|
00009af0  20 22 2b c3 63 61 72 64  73 6c 65 66 74 25 0d 30  | "+.cardsleft%.0|
00009b00  c0 05 cc 0d 30 ca 1d 20  20 f2 62 6c 61 6e 6b 69  |....0..  .blanki|
00009b10  63 6f 6e 28 6d 61 69 6e  25 2c 69 63 6f 6e 25 29  |con(main%,icon%)|
00009b20  0d 30 d4 10 20 20 e3 20  49 3d 31 20 b8 20 32 38  |.0..  . I=1 . 28|
00009b30  0d 30 de 1f 20 20 20 20  e7 20 70 79 72 6c 61 79  |.0..    . pyrlay|
00009b40  68 61 6e 25 28 49 29 3d  69 63 6f 6e 25 20 8c 0d  |han%(I)=icon% ..|
00009b50  30 e8 1a 20 20 20 20 20  20 70 79 72 64 65 6c 65  |0..      pyrdele|
00009b60  74 65 64 25 28 49 29 3d  b9 0d 30 f2 16 20 20 20  |ted%(I)=..0..   |
00009b70  20 20 20 70 79 72 6c 61  79 25 28 49 29 3d 30 0d  |   pyrlay%(I)=0.|
00009b80  30 fc 09 20 20 20 20 cd  0d 31 06 09 20 20 ed 20  |0..    ..1..  . |
00009b90  49 0d 31 10 05 cd 0d 31  1a 05 e1 0d 31 24 04 0d  |I.1....1....1$..|
00009ba0  31 2e 12 dd f2 70 79 72  61 6d 69 64 5f 75 6e 64  |1....pyramid_und|
00009bb0  6f 0d 31 38 3a f4 20 54  68 69 73 20 70 72 6f 63  |o.18:. This proc|
00009bc0  65 64 75 72 65 20 77 69  6c 6c 20 75 6e 64 6f 20  |edure will undo |
00009bd0  74 68 65 20 6c 61 73 74  20 61 63 74 69 6f 6e 20  |the last action |
00009be0  69 6e 20 50 79 72 61 6d  69 64 2e 0d 31 42 15 ea  |in Pyramid..1B..|
00009bf0  20 49 2c 74 65 6d 70 31  25 2c 74 65 6d 70 32 25  | I,temp1%,temp2%|
00009c00  0d 31 4c 26 c8 99 22 57  69 6d 70 45 78 74 5f 53  |.1L&.."WimpExt_S|
00009c10  68 61 64 65 45 6e 74 72  79 22 2c 2c 67 6d 65 6e  |hadeEntry",,gmen|
00009c20  75 25 2c 30 2c 31 0d 31  56 2e e7 20 6c 61 73 74  |u%,0,1.1V.. last|
00009c30  69 63 6f 6e 32 25 3d 2d  31 20 80 20 6c 61 73 74  |icon2%=-1 . last|
00009c40  69 63 6f 6e 31 25 3d 70  79 72 70 61 63 6b 68 61  |icon1%=pyrpackha|
00009c50  6e 25 20 8c 0d 31 60 18  20 20 e7 20 70 79 72 77  |n% ..1`.  . pyrw|
00009c60  61 73 74 65 25 28 31 29  3d 30 20 8c 0d 31 6a 12  |aste%(1)=0 ..1j.|
00009c70  20 20 20 20 e3 20 49 3d  31 20 b8 20 32 34 0d 31  |    . I=1 . 24.1|
00009c80  74 25 20 20 20 20 20 20  70 79 72 77 61 73 74 65  |t%      pyrwaste|
00009c90  25 28 32 35 2d 49 29 3d  70 79 72 70 61 63 6b 25  |%(25-I)=pyrpack%|
00009ca0  28 49 29 0d 31 7e 17 20  20 20 20 20 20 70 79 72  |(I).1~.      pyr|
00009cb0  70 61 63 6b 25 28 49 29  3d 30 0d 31 88 0b 20 20  |pack%(I)=0.1..  |
00009cc0  20 20 ed 20 49 0d 31 92  19 20 20 20 20 c8 95 20  |  . I.1..    .. |
00009cd0  70 79 72 77 61 73 74 65  25 28 31 29 3d 30 0d 31  |pyrwaste%(1)=0.1|
00009ce0  9c 14 20 20 20 20 20 20  e3 20 49 3d 31 20 b8 20  |..      . I=1 . |
00009cf0  32 34 0d 31 a6 27 20 20  20 20 20 20 20 20 70 79  |24.1.'        py|
00009d00  72 77 61 73 74 65 25 28  49 29 3d 70 79 72 77 61  |rwaste%(I)=pyrwa|
00009d10  73 74 65 25 28 49 2b 31  29 0d 31 b0 0d 20 20 20  |ste%(I+1).1..   |
00009d20  20 20 20 ed 20 49 0d 31  ba 09 20 20 20 20 ce 0d  |   . I.1..    ..|
00009d30  31 c4 15 20 20 20 20 64  65 61 6c 25 3d 64 65 61  |1..    deal%=dea|
00009d40  6c 25 2d 31 0d 31 ce 43  20 20 20 20 c8 99 22 57  |l%-1.1.C    .."W|
00009d50  69 6d 70 45 78 74 5f 53  65 74 49 63 6f 6e 53 74  |impExt_SetIconSt|
00009d60  72 69 6e 67 22 2c 2c 2c  6d 61 69 6e 25 2c 64 65  |ring",,,main%,de|
00009d70  61 6c 68 61 6e 25 2c 22  44 65 61 6c 20 3a 20 22  |alhan%,"Deal : "|
00009d80  2b c3 64 65 61 6c 25 0d  31 d8 38 20 20 20 20 f2  |+.deal%.1.8    .|
00009d90  73 65 74 69 63 6f 6e 73  70 72 69 74 65 28 6d 61  |seticonsprite(ma|
00009da0  69 6e 25 2c 70 79 72 77  61 73 74 65 68 61 6e 25  |in%,pyrwastehan%|
00009db0  2c c3 70 79 72 77 61 73  74 65 25 28 31 29 29 0d  |,.pyrwaste%(1)).|
00009dc0  31 e2 32 20 20 20 20 f2  73 65 74 69 63 6f 6e 73  |1.2    .seticons|
00009dd0  70 72 69 74 65 28 6d 61  69 6e 25 2c 70 79 72 70  |prite(main%,pyrp|
00009de0  61 63 6b 68 61 6e 25 2c  22 6e 6f 63 61 72 64 22  |ackhan%,"nocard"|
00009df0  29 0d 31 ec 07 20 20 cc  0d 31 f6 17 20 20 20 20  |).1..  ..1..    |
00009e00  e3 20 49 3d 32 34 20 b8  20 32 20 88 20 2d 31 0d  |. I=24 . 2 . -1.|
00009e10  32 00 23 20 20 20 20 20  20 70 79 72 70 61 63 6b  |2.#      pyrpack|
00009e20  25 28 49 29 3d 70 79 72  70 61 63 6b 25 28 49 2d  |%(I)=pyrpack%(I-|
00009e30  31 29 0d 32 0a 0b 20 20  20 20 ed 20 49 0d 32 14  |1).2..    . I.2.|
00009e40  20 20 20 20 20 70 79 72  70 61 63 6b 25 28 31 29  |     pyrpack%(1)|
00009e50  3d 70 79 72 77 61 73 74  65 25 28 31 29 0d 32 1e  |=pyrwaste%(1).2.|
00009e60  12 20 20 20 20 e3 20 49  3d 31 20 b8 20 32 33 0d  |.    . I=1 . 23.|
00009e70  32 28 25 20 20 20 20 20  20 70 79 72 77 61 73 74  |2(%      pyrwast|
00009e80  65 25 28 49 29 3d 70 79  72 77 61 73 74 65 25 28  |e%(I)=pyrwaste%(|
00009e90  49 2b 31 29 0d 32 32 0b  20 20 20 20 ed 20 49 0d  |I+1).22.    . I.|
00009ea0  32 3c 17 20 20 20 20 70  79 72 77 61 73 74 65 25  |2<.    pyrwaste%|
00009eb0  28 32 34 29 3d 30 0d 32  46 79 20 20 20 20 e7 20  |(24)=0.2Fy    . |
00009ec0  70 79 72 77 61 73 74 65  25 28 31 29 3d 30 20 8c  |pyrwaste%(1)=0 .|
00009ed0  20 f2 73 65 74 69 63 6f  6e 73 70 72 69 74 65 28  | .seticonsprite(|
00009ee0  6d 61 69 6e 25 2c 70 79  72 77 61 73 74 65 68 61  |main%,pyrwasteha|
00009ef0  6e 25 2c 22 6e 6f 63 61  72 64 22 29 20 8b 20 f2  |n%,"nocard") . .|
00009f00  73 65 74 69 63 6f 6e 73  70 72 69 74 65 28 6d 61  |seticonsprite(ma|
00009f10  69 6e 25 2c 70 79 72 77  61 73 74 65 68 61 6e 25  |in%,pyrwastehan%|
00009f20  2c c3 70 79 72 77 61 73  74 65 25 28 31 29 29 0d  |,.pyrwaste%(1)).|
00009f30  32 50 30 20 20 20 20 f2  73 65 74 69 63 6f 6e 73  |2P0    .seticons|
00009f40  70 72 69 74 65 28 6d 61  69 6e 25 2c 70 79 72 70  |prite(main%,pyrp|
00009f50  61 63 6b 68 61 6e 25 2c  22 62 61 63 6b 22 29 0d  |ackhan%,"back").|
00009f60  32 5a 07 20 20 cd 0d 32  64 05 cd 0d 32 6e 15 e7  |2Z.  ..2d...2n..|
00009f70  20 6c 61 73 74 69 63 6f  6e 32 25 3d 2d 31 20 8c  | lasticon2%=-1 .|
00009f80  0d 32 78 16 20 20 e7 20  6c 61 73 74 76 61 6c 31  |.2x.  . lastval1|
00009f90  25 3d 31 33 20 8c 0d 32  82 41 20 20 20 20 f4 20  |%=13 ..2.A    . |
00009fa0  74 61 6b 65 20 74 68 65  20 6b 69 6e 67 20 6f 66  |take the king of|
00009fb0  66 20 74 68 65 20 66 6f  75 6e 64 61 74 69 6f 6e  |f the foundation|
00009fc0  20 61 6e 64 20 70 75 74  20 69 74 20 62 61 63 6b  | and put it back|
00009fd0  20 6f 6e 20 74 68 65 0d  32 8c 1f 20 20 20 20 f4  | on the.2..    .|
00009fe0  20 6c 61 79 6f 75 74 20  6f 72 20 77 61 73 74 65  | layout or waste|
00009ff0  20 70 69 6c 65 2e 0d 32  96 1b 20 20 20 20 74 65  | pile..2..    te|
0000a000  6d 70 31 25 3d 70 79 72  66 6f 75 6e 64 25 28 31  |mp1%=pyrfound%(1|
0000a010  29 0d 32 a0 12 20 20 20  20 e3 20 49 3d 31 20 b8  |).2..    . I=1 .|
0000a020  20 35 31 0d 32 aa 25 20  20 20 20 20 20 70 79 72  | 51.2.%      pyr|
0000a030  66 6f 75 6e 64 25 28 49  29 3d 70 79 72 66 6f 75  |found%(I)=pyrfou|
0000a040  6e 64 25 28 49 2b 31 29  0d 32 b4 0b 20 20 20 20  |nd%(I+1).2..    |
0000a050  ed 20 49 0d 32 be 17 20  20 20 20 70 79 72 66 6f  |. I.2..    pyrfo|
0000a060  75 6e 64 25 28 35 32 29  3d 30 0d 32 c8 23 20 20  |und%(52)=0.2.#  |
0000a070  20 20 e7 20 6c 61 73 74  69 63 6f 6e 31 25 3d 70  |  . lasticon1%=p|
0000a080  79 72 77 61 73 74 65 68  61 6e 25 20 8c 0d 32 d2  |yrwastehan% ..2.|
0000a090  19 20 20 20 20 20 20 e3  20 49 3d 32 34 20 b8 20  |.      . I=24 . |
0000a0a0  32 20 88 20 2d 31 0d 32  dc 27 20 20 20 20 20 20  |2 . -1.2.'      |
0000a0b0  20 20 70 79 72 77 61 73  74 65 25 28 49 29 3d 70  |  pyrwaste%(I)=p|
0000a0c0  79 72 77 61 73 74 65 25  28 49 2d 31 29 0d 32 e6  |yrwaste%(I-1).2.|
0000a0d0  0d 20 20 20 20 20 20 ed  20 49 0d 32 f0 1d 20 20  |.      . I.2..  |
0000a0e0  20 20 20 20 70 79 72 77  61 73 74 65 25 28 31 29  |    pyrwaste%(1)|
0000a0f0  3d 74 65 6d 70 31 25 0d  32 fa 3a 20 20 20 20 20  |=temp1%.2.:     |
0000a100  20 f2 73 65 74 69 63 6f  6e 73 70 72 69 74 65 28  | .seticonsprite(|
0000a110  6d 61 69 6e 25 2c 70 79  72 77 61 73 74 65 68 61  |main%,pyrwasteha|
0000a120  6e 25 2c c3 70 79 72 77  61 73 74 65 25 28 31 29  |n%,.pyrwaste%(1)|
0000a130  29 0d 33 04 6d 20 20 20  20 20 20 63 61 72 64 73  |).3.m      cards|
0000a140  6c 65 66 74 25 3d 63 61  72 64 73 6c 65 66 74 25  |left%=cardsleft%|
0000a150  2b 31 3a c8 99 22 57 69  6d 70 45 78 74 5f 53 65  |+1:.."WimpExt_Se|
0000a160  74 49 63 6f 6e 53 74 72  69 6e 67 22 2c 2c 2c 6d  |tIconString",,,m|
0000a170  61 69 6e 25 2c 63 61 72  64 73 6c 65 66 74 68 61  |ain%,cardsleftha|
0000a180  6e 25 2c 22 43 61 72 64  73 20 6c 65 66 74 20 3a  |n%,"Cards left :|
0000a190  20 22 2b c3 63 61 72 64  73 6c 65 66 74 25 0d 33  | "+.cardsleft%.3|
0000a1a0  0e 09 20 20 20 20 cc 0d  33 18 0d 20 20 20 20 20  |..    ..3..     |
0000a1b0  20 49 3d 31 0d 33 22 0b  20 20 20 20 20 20 f5 0d  | I=1.3".      ..|
0000a1c0  33 2c 11 20 20 20 20 20  20 20 20 49 3d 49 2b 31  |3,.        I=I+1|
0000a1d0  0d 33 36 2b 20 20 20 20  20 20 fd 20 49 3d 32 38  |.36+      . I=28|
0000a1e0  20 84 20 70 79 72 6c 61  79 68 61 6e 25 28 49 29  | . pyrlayhan%(I)|
0000a1f0  3d 6c 61 73 74 69 63 6f  6e 31 25 0d 33 40 26 20  |=lasticon1%.3@& |
0000a200  20 20 20 20 20 e7 20 70  79 72 6c 61 79 68 61 6e  |     . pyrlayhan|
0000a210  25 28 49 29 3d 6c 61 73  74 69 63 6f 6e 31 25 20  |%(I)=lasticon1% |
0000a220  8c 0d 33 4a 1d 20 20 20  20 20 20 20 20 70 79 72  |..3J.        pyr|
0000a230  6c 61 79 25 28 49 29 3d  74 65 6d 70 31 25 0d 33  |lay%(I)=temp1%.3|
0000a240  54 3b 20 20 20 20 20 20  20 20 f2 73 65 74 69 63  |T;        .setic|
0000a250  6f 6e 73 70 72 69 74 65  28 6d 61 69 6e 25 2c 70  |onsprite(main%,p|
0000a260  79 72 6c 61 79 68 61 6e  25 28 49 29 2c c3 70 79  |yrlayhan%(I),.py|
0000a270  72 6c 61 79 25 28 49 29  29 0d 33 5e 1c 20 20 20  |rlay%(I)).3^.   |
0000a280  20 20 20 20 20 70 79 72  64 65 6c 65 74 65 64 25  |     pyrdeleted%|
0000a290  28 49 29 3d a3 0d 33 68  0b 20 20 20 20 20 20 cd  |(I)=..3h.      .|
0000a2a0  0d 33 72 09 20 20 20 20  cd 0d 33 7c 1a 20 20 20  |.3r.    ..3|.   |
0000a2b0  20 e7 20 70 79 72 66 6f  75 6e 64 25 28 31 29 3d  | . pyrfound%(1)=|
0000a2c0  30 20 8c 0d 33 86 35 20  20 20 20 20 20 f2 73 65  |0 ..3.5      .se|
0000a2d0  74 69 63 6f 6e 73 70 72  69 74 65 28 6d 61 69 6e  |ticonsprite(main|
0000a2e0  25 2c 70 79 72 66 6f 75  6e 64 68 61 6e 25 2c 22  |%,pyrfoundhan%,"|
0000a2f0  6e 6f 63 61 72 64 22 29  0d 33 90 09 20 20 20 20  |nocard").3..    |
0000a300  cc 0d 33 9a 3a 20 20 20  20 20 20 f2 73 65 74 69  |..3.:      .seti|
0000a310  63 6f 6e 73 70 72 69 74  65 28 6d 61 69 6e 25 2c  |consprite(main%,|
0000a320  70 79 72 66 6f 75 6e 64  68 61 6e 25 2c c3 70 79  |pyrfoundhan%,.py|
0000a330  72 66 6f 75 6e 64 25 28  31 29 29 0d 33 a4 09 20  |rfound%(1)).3.. |
0000a340  20 20 20 cd 0d 33 ae 07  20 20 cc 0d 33 b8 30 20  |   ..3..  ..3.0 |
0000a350  20 20 20 c8 99 22 57 69  6d 70 45 78 74 5f 53 65  |   .."WimpExt_Se|
0000a360  74 49 63 6f 6e 22 2c 2c  2c 6d 61 69 6e 25 2c 6c  |tIcon",,,main%,l|
0000a370  61 73 74 69 63 6f 6e 31  25 2c 30 0d 33 c2 07 20  |asticon1%,0.3.. |
0000a380  20 cd 0d 33 cc 05 cd 0d  33 d6 15 e7 20 6c 61 73  | ..3....3... las|
0000a390  74 76 61 6c 32 25 3c 3e  2d 31 20 8c 0d 33 e0 39  |tval2%<>-1 ..3.9|
0000a3a0  f4 20 54 61 6b 65 20 74  68 65 20 63 61 72 64 73  |. Take the cards|
0000a3b0  20 61 6e 64 20 70 75 74  20 74 68 65 6d 20 69 6e  | and put them in|
0000a3c0  74 6f 20 74 65 6d 70 31  25 20 61 6e 64 20 74 65  |to temp1% and te|
0000a3d0  6d 70 32 25 2e 0d 33 ea  2d 20 20 74 65 6d 70 32  |mp2%..3.-  temp2|
0000a3e0  25 3d 70 79 72 66 6f 75  6e 64 25 28 31 29 3a 74  |%=pyrfound%(1):t|
0000a3f0  65 6d 70 31 25 3d 70 79  72 66 6f 75 6e 64 25 28  |emp1%=pyrfound%(|
0000a400  32 29 0d 33 f4 2b f4 20  53 68 69 66 74 20 74 68  |2).3.+. Shift th|
0000a410  65 20 66 6f 75 6e 64 61  74 69 6f 6e 20 62 61 63  |e foundation bac|
0000a420  6b 20 75 70 20 32 20 63  61 72 64 73 2e 0d 33 fe  |k up 2 cards..3.|
0000a430  10 20 20 e3 20 49 3d 31  20 b8 20 35 30 0d 34 08  |.  . I=1 . 50.4.|
0000a440  23 20 20 20 20 70 79 72  66 6f 75 6e 64 25 28 49  |#    pyrfound%(I|
0000a450  29 3d 70 79 72 66 6f 75  6e 64 25 28 49 2b 32 29  |)=pyrfound%(I+2)|
0000a460  0d 34 12 09 20 20 ed 20  49 0d 34 1c 44 f4 20 50  |.4..  . I.4.D. P|
0000a470  75 74 20 73 70 65 63 69  61 6c 20 63 61 73 65 73  |ut special cases|
0000a480  20 69 6e 20 2d 20 69 66  20 74 65 6d 70 31 25 20  | in - if temp1% |
0000a490  6f 72 20 74 65 6d 70 32  25 20 61 72 65 20 74 68  |or temp2% are th|
0000a4a0  65 20 66 6f 75 6e 64 61  74 69 6f 6e 2c 0d 34 26  |e foundation,.4&|
0000a4b0  3e f4 20 74 68 65 6e 20  70 75 74 20 69 74 20 62  |>. then put it b|
0000a4c0  61 63 6b 20 28 73 69 6e  67 6c 65 20 70 72 6f 63  |ack (single proc|
0000a4d0  65 64 75 72 65 29 2c 20  75 73 69 6e 67 20 50 52  |edure), using PR|
0000a4e0  4f 43 6d 6f 76 65 63 61  72 64 2e 0d 34 30 21 20  |OCmovecard..40! |
0000a4f0  20 e7 20 6c 61 73 74 69  63 6f 6e 31 25 3d 70 79  | . lasticon1%=py|
0000a500  72 66 6f 75 6e 64 68 61  6e 25 20 8c 0d 34 3a 32  |rfoundhan% ..4:2|
0000a510  20 20 20 20 f2 73 65 74  69 63 6f 6e 73 70 72 69  |    .seticonspri|
0000a520  74 65 28 6d 61 69 6e 25  2c 70 79 72 66 6f 75 6e  |te(main%,pyrfoun|
0000a530  64 68 61 6e 25 2c c3 74  65 6d 70 31 25 29 0d 34  |dhan%,.temp1%).4|
0000a540  44 17 20 20 20 20 e3 20  49 3d 35 32 20 b8 20 32  |D.    . I=52 . 2|
0000a550  20 88 20 2d 31 0d 34 4e  25 20 20 20 20 20 20 70  | . -1.4N%      p|
0000a560  79 72 66 6f 75 6e 64 25  28 49 29 3d 70 79 72 66  |yrfound%(I)=pyrf|
0000a570  6f 75 6e 64 25 28 49 2d  31 29 0d 34 58 0b 20 20  |ound%(I-1).4X.  |
0000a580  20 20 ed 20 49 0d 34 62  1b 20 20 20 20 70 79 72  |  . I.4b.    pyr|
0000a590  66 6f 75 6e 64 25 28 31  29 3d 74 65 6d 70 31 25  |found%(1)=temp1%|
0000a5a0  0d 34 6c 07 20 20 cd 0d  34 76 21 20 20 e7 20 6c  |.4l.  ..4v!  . l|
0000a5b0  61 73 74 69 63 6f 6e 32  25 3d 70 79 72 66 6f 75  |asticon2%=pyrfou|
0000a5c0  6e 64 68 61 6e 25 20 8c  0d 34 80 32 20 20 20 20  |ndhan% ..4.2    |
0000a5d0  f2 73 65 74 69 63 6f 6e  73 70 72 69 74 65 28 6d  |.seticonsprite(m|
0000a5e0  61 69 6e 25 2c 70 79 72  66 6f 75 6e 64 68 61 6e  |ain%,pyrfoundhan|
0000a5f0  25 2c c3 74 65 6d 70 32  25 29 0d 34 8a 17 20 20  |%,.temp2%).4..  |
0000a600  20 20 e3 20 49 3d 35 32  20 b8 20 32 20 88 20 2d  |  . I=52 . 2 . -|
0000a610  31 0d 34 94 25 20 20 20  20 20 20 70 79 72 66 6f  |1.4.%      pyrfo|
0000a620  75 6e 64 25 28 49 29 3d  70 79 72 66 6f 75 6e 64  |und%(I)=pyrfound|
0000a630  25 28 49 2d 31 29 0d 34  9e 0b 20 20 20 20 ed 20  |%(I-1).4..    . |
0000a640  49 0d 34 a8 1b 20 20 20  20 70 79 72 66 6f 75 6e  |I.4..    pyrfoun|
0000a650  64 25 28 31 29 3d 74 65  6d 70 32 25 0d 34 b2 07  |d%(1)=temp2%.4..|
0000a660  20 20 cd 0d 34 bc 3c f4  20 4e 65 65 64 20 73 69  |  ..4.<. Need si|
0000a670  6d 69 6c 61 72 20 63 68  65 63 6b 20 66 6f 72 20  |milar check for |
0000a680  77 61 73 74 65 20 70 69  6c 65 2c 20 74 6f 20 6d  |waste pile, to m|
0000a690  6f 76 65 20 63 61 72 64  73 20 64 6f 77 6e 2e 0d  |ove cards down..|
0000a6a0  34 c6 21 20 20 e7 20 6c  61 73 74 69 63 6f 6e 31  |4.!  . lasticon1|
0000a6b0  25 3d 70 79 72 77 61 73  74 65 68 61 6e 25 20 8c  |%=pyrwastehan% .|
0000a6c0  0d 34 d0 32 20 20 20 20  f2 73 65 74 69 63 6f 6e  |.4.2    .seticon|
0000a6d0  73 70 72 69 74 65 28 6d  61 69 6e 25 2c 70 79 72  |sprite(main%,pyr|
0000a6e0  77 61 73 74 65 68 61 6e  25 2c c3 74 65 6d 70 31  |wastehan%,.temp1|
0000a6f0  25 29 0d 34 da 17 20 20  20 20 e3 20 49 3d 32 34  |%).4..    . I=24|
0000a700  20 b8 20 32 20 88 20 2d  31 0d 34 e4 25 20 20 20  | . 2 . -1.4.%   |
0000a710  20 20 20 70 79 72 77 61  73 74 65 25 28 49 29 3d  |   pyrwaste%(I)=|
0000a720  70 79 72 77 61 73 74 65  25 28 49 2d 31 29 0d 34  |pyrwaste%(I-1).4|
0000a730  ee 0b 20 20 20 20 ed 20  49 0d 34 f8 7f 20 20 20  |..    . I.4..   |
0000a740  20 70 79 72 77 61 73 74  65 25 28 31 29 3d 74 65  | pyrwaste%(1)=te|
0000a750  6d 70 31 25 3a 63 61 72  64 73 6c 65 66 74 25 3d  |mp1%:cardsleft%=|
0000a760  63 61 72 64 73 6c 65 66  74 25 2b 31 3a c8 99 22  |cardsleft%+1:.."|
0000a770  57 69 6d 70 45 78 74 5f  53 65 74 49 63 6f 6e 53  |WimpExt_SetIconS|
0000a780  74 72 69 6e 67 22 2c 2c  2c 6d 61 69 6e 25 2c 63  |tring",,,main%,c|
0000a790  61 72 64 73 6c 65 66 74  68 61 6e 25 2c 22 43 61  |ardslefthan%,"Ca|
0000a7a0  72 64 73 20 6c 65 66 74  20 3a 20 22 2b c3 63 61  |rds left : "+.ca|
0000a7b0  72 64 73 6c 65 66 74 25  0d 35 02 07 20 20 cd 0d  |rdsleft%.5..  ..|
0000a7c0  35 0c 21 20 20 e7 20 6c  61 73 74 69 63 6f 6e 32  |5.!  . lasticon2|
0000a7d0  25 3d 70 79 72 77 61 73  74 65 68 61 6e 25 20 8c  |%=pyrwastehan% .|
0000a7e0  0d 35 16 32 20 20 20 20  f2 73 65 74 69 63 6f 6e  |.5.2    .seticon|
0000a7f0  73 70 72 69 74 65 28 6d  61 69 6e 25 2c 70 79 72  |sprite(main%,pyr|
0000a800  77 61 73 74 65 68 61 6e  25 2c c3 74 65 6d 70 32  |wastehan%,.temp2|
0000a810  25 29 0d 35 20 17 20 20  20 20 e3 20 49 3d 32 34  |%).5 .    . I=24|
0000a820  20 b8 20 32 20 88 20 2d  31 0d 35 2a 25 20 20 20  | . 2 . -1.5*%   |
0000a830  20 20 20 70 79 72 77 61  73 74 65 25 28 49 29 3d  |   pyrwaste%(I)=|
0000a840  70 79 72 77 61 73 74 65  25 28 49 2d 31 29 0d 35  |pyrwaste%(I-1).5|
0000a850  34 0b 20 20 20 20 ed 20  49 0d 35 3e 7f 20 20 20  |4.    . I.5>.   |
0000a860  20 70 79 72 77 61 73 74  65 25 28 31 29 3d 74 65  | pyrwaste%(1)=te|
0000a870  6d 70 32 25 3a 63 61 72  64 73 6c 65 66 74 25 3d  |mp2%:cardsleft%=|
0000a880  63 61 72 64 73 6c 65 66  74 25 2b 31 3a c8 99 22  |cardsleft%+1:.."|
0000a890  57 69 6d 70 45 78 74 5f  53 65 74 49 63 6f 6e 53  |WimpExt_SetIconS|
0000a8a0  74 72 69 6e 67 22 2c 2c  2c 6d 61 69 6e 25 2c 63  |tring",,,main%,c|
0000a8b0  61 72 64 73 6c 65 66 74  68 61 6e 25 2c 22 43 61  |ardslefthan%,"Ca|
0000a8c0  72 64 73 20 6c 65 66 74  20 3a 20 22 2b c3 63 61  |rds left : "+.ca|
0000a8d0  72 64 73 6c 65 66 74 25  0d 35 48 07 20 20 cd 0d  |rdsleft%.5H.  ..|
0000a8e0  35 52 39 f4 20 50 75 74  20 74 65 6d 70 31 25 20  |5R9. Put temp1% |
0000a8f0  62 61 63 6b 20 6f 6e 20  6c 61 73 74 69 63 6f 6e  |back on lasticon|
0000a900  31 25 20 61 6e 64 20 72  65 73 65 74 20 74 68 65  |1% and reset the|
0000a910  20 73 70 72 69 74 65 2e  0d 35 5c 3d 20 20 e7 20  | sprite..5\=  . |
0000a920  6c 61 73 74 69 63 6f 6e  31 25 3c 3e 70 79 72 66  |lasticon1%<>pyrf|
0000a930  6f 75 6e 64 68 61 6e 25  20 80 20 6c 61 73 74 69  |oundhan% . lasti|
0000a940  63 6f 6e 31 25 3c 3e 70  79 72 77 61 73 74 65 68  |con1%<>pyrwasteh|
0000a950  61 6e 25 20 8c 0d 35 66  0b 20 20 20 20 49 3d 31  |an% ..5f.    I=1|
0000a960  0d 35 70 09 20 20 20 20  f5 0d 35 7a 0f 20 20 20  |.5p.    ..5z.   |
0000a970  20 20 20 49 3d 49 2b 31  0d 35 84 29 20 20 20 20  |   I=I+1.5.)    |
0000a980  fd 20 6c 61 73 74 69 63  6f 6e 31 25 3d 70 79 72  |. lasticon1%=pyr|
0000a990  6c 61 79 68 61 6e 25 28  49 29 20 84 20 49 3d 32  |layhan%(I) . I=2|
0000a9a0  38 0d 35 8e 33 20 20 20  20 f2 73 65 74 69 63 6f  |8.5.3    .setico|
0000a9b0  6e 73 70 72 69 74 65 28  6d 61 69 6e 25 2c 70 79  |nsprite(main%,py|
0000a9c0  72 6c 61 79 68 61 6e 25  28 49 29 2c c3 74 65 6d  |rlayhan%(I),.tem|
0000a9d0  70 31 25 29 0d 35 98 2a  20 20 20 20 70 79 72 6c  |p1%).5.*    pyrl|
0000a9e0  61 79 25 28 49 29 3d 74  65 6d 70 31 25 3a 70 79  |ay%(I)=temp1%:py|
0000a9f0  72 64 65 6c 65 74 65 64  25 28 49 29 3d a3 0d 35  |rdeleted%(I)=..5|
0000aa00  a2 07 20 20 cd 0d 35 ac  39 f4 20 50 75 74 20 74  |..  ..5.9. Put t|
0000aa10  65 6d 70 20 32 20 62 61  63 6b 20 6f 6e 20 6c 61  |emp 2 back on la|
0000aa20  73 74 69 63 6f 6e 32 25  20 61 6e 64 20 72 65 73  |sticon2% and res|
0000aa30  65 74 20 74 68 65 20 73  70 72 69 74 65 2e 0d 35  |et the sprite..5|
0000aa40  b6 3d 20 20 e7 20 6c 61  73 74 69 63 6f 6e 32 25  |.=  . lasticon2%|
0000aa50  3c 3e 70 79 72 66 6f 75  6e 64 68 61 6e 25 20 80  |<>pyrfoundhan% .|
0000aa60  20 6c 61 73 74 69 63 6f  6e 32 25 3c 3e 70 79 72  | lasticon2%<>pyr|
0000aa70  77 61 73 74 65 68 61 6e  25 20 8c 0d 35 c0 0b 20  |wastehan% ..5.. |
0000aa80  20 20 20 49 3d 31 0d 35  ca 09 20 20 20 20 f5 0d  |   I=1.5..    ..|
0000aa90  35 d4 0f 20 20 20 20 20  20 49 3d 49 2b 31 0d 35  |5..      I=I+1.5|
0000aaa0  de 29 20 20 20 20 fd 20  6c 61 73 74 69 63 6f 6e  |.)    . lasticon|
0000aab0  32 25 3d 70 79 72 6c 61  79 68 61 6e 25 28 49 29  |2%=pyrlayhan%(I)|
0000aac0  20 84 20 49 3d 32 38 0d  35 e8 33 20 20 20 20 f2  | . I=28.5.3    .|
0000aad0  73 65 74 69 63 6f 6e 73  70 72 69 74 65 28 6d 61  |seticonsprite(ma|
0000aae0  69 6e 25 2c 70 79 72 6c  61 79 68 61 6e 25 28 49  |in%,pyrlayhan%(I|
0000aaf0  29 2c c3 74 65 6d 70 32  25 29 0d 35 f2 2a 20 20  |),.temp2%).5.*  |
0000ab00  20 20 70 79 72 6c 61 79  25 28 49 29 3d 74 65 6d  |  pyrlay%(I)=tem|
0000ab10  70 32 25 3a 70 79 72 64  65 6c 65 74 65 64 25 28  |p2%:pyrdeleted%(|
0000ab20  49 29 3d a3 0d 35 fc 07  20 20 cd 0d 36 06 18 20  |I)=..5..  ..6.. |
0000ab30  20 e7 20 70 79 72 66 6f  75 6e 64 25 28 31 29 3d  | . pyrfound%(1)=|
0000ab40  30 20 8c 0d 36 10 33 20  20 20 20 f2 73 65 74 69  |0 ..6.3    .seti|
0000ab50  63 6f 6e 73 70 72 69 74  65 28 6d 61 69 6e 25 2c  |consprite(main%,|
0000ab60  70 79 72 66 6f 75 6e 64  68 61 6e 25 2c 22 6e 6f  |pyrfoundhan%,"no|
0000ab70  63 61 72 64 22 29 0d 36  1a 07 20 20 cc 0d 36 24  |card").6..  ..6$|
0000ab80  38 20 20 20 20 f2 73 65  74 69 63 6f 6e 73 70 72  |8    .seticonspr|
0000ab90  69 74 65 28 6d 61 69 6e  25 2c 70 79 72 66 6f 75  |ite(main%,pyrfou|
0000aba0  6e 64 68 61 6e 25 2c c3  70 79 72 66 6f 75 6e 64  |ndhan%,.pyrfound|
0000abb0  25 28 31 29 29 0d 36 2e  07 20 20 cd 0d 36 38 05  |%(1)).6..  ..68.|
0000abc0  cd 0d 36 42 39 6c 61 73  74 69 63 6f 6e 31 25 3d  |..6B9lasticon1%=|
0000abd0  2d 31 3a 6c 61 73 74 69  63 6f 6e 32 25 3d 2d 31  |-1:lasticon2%=-1|
0000abe0  3a 6c 61 73 74 76 61 6c  31 25 3d 2d 31 3a 6c 61  |:lastval1%=-1:la|
0000abf0  73 74 76 61 6c 32 25 3d  2d 31 0d 36 4c 05 e1 0d  |stval2%=-1.6L...|
0000ac00  36 56 04 0d 36 60 13 dd  f2 70 79 72 61 6d 69 64  |6V..6`...pyramid|
0000ac10  5f 73 63 6f 72 65 0d 36  6a 3c f4 20 54 68 69 73  |_score.6j<. This|
0000ac20  20 70 72 6f 63 65 64 75  72 65 20 77 69 6c 6c 20  | procedure will |
0000ac30  77 6f 72 6b 20 6f 75 74  20 74 68 65 20 73 63 6f  |work out the sco|
0000ac40  72 65 20 66 6f 72 20 74  68 69 73 20 6d 61 74 63  |re for this matc|
0000ac50  68 2e 0d 36 74 1a ea 20  6c 61 79 6f 75 74 6c 65  |h..6t.. layoutle|
0000ac60  66 74 25 2c 62 75 74 74  6f 6e 73 25 0d 36 7e 27  |ft%,buttons%.6~'|
0000ac70  6c 61 79 6f 75 74 6c 65  66 74 25 3d 30 3a 70 79  |layoutleft%=0:py|
0000ac80  72 67 61 6d 65 73 25 3d  70 79 72 67 61 6d 65 73  |rgames%=pyrgames|
0000ac90  25 2b 31 0d 36 88 0e e3  20 49 3d 31 20 b8 20 32  |%+1.6... I=1 . 2|
0000aca0  38 0d 36 92 31 20 20 e7  20 70 79 72 6c 61 79 25  |8.6.1  . pyrlay%|
0000acb0  28 49 29 3c 3e 30 20 8c  20 6c 61 79 6f 75 74 6c  |(I)<>0 . layoutl|
0000acc0  65 66 74 25 3d 6c 61 79  6f 75 74 6c 65 66 74 25  |eft%=layoutleft%|
0000acd0  2b 31 0d 36 9c 07 ed 20  49 0d 36 a6 0e c8 8e 20  |+1.6... I.6.... |
0000ace0  64 65 61 6c 25 20 ca 0d  36 b0 1c 20 20 c9 20 31  |deal% ..6..  . 1|
0000acf0  20 3a 20 73 63 6f 72 65  25 3d 73 63 6f 72 65 25  | : score%=score%|
0000ad00  2b 35 30 0d 36 ba 1c 20  20 c9 20 32 20 3a 20 73  |+50.6..  . 2 : s|
0000ad10  63 6f 72 65 25 3d 73 63  6f 72 65 25 2b 33 35 0d  |core%=score%+35.|
0000ad20  36 c4 1c 20 20 c9 20 33  20 3a 20 73 63 6f 72 65  |6..  . 3 : score|
0000ad30  25 3d 73 63 6f 72 65 25  2b 32 30 0d 36 ce 25 20  |%=score%+20.6.% |
0000ad40  20 c9 20 34 20 3a 20 73  63 6f 72 65 25 3d 73 63  | . 4 : score%=sc|
0000ad50  6f 72 65 25 2d 6c 61 79  6f 75 74 6c 65 66 74 25  |ore%-layoutleft%|
0000ad60  0d 36 d8 05 cb 0d 36 e2  24 73 63 6f 72 65 25 3d  |.6....6.$score%=|
0000ad70  73 63 6f 72 65 25 2d 63  61 72 64 73 6c 65 66 74  |score%-cardsleft|
0000ad80  25 3a 64 65 61 6c 25 3d  34 0d 36 ec 54 c8 99 22  |%:deal%=4.6.T.."|
0000ad90  57 69 6d 70 45 78 74 5f  53 65 74 49 63 6f 6e 53  |WimpExt_SetIconS|
0000ada0  74 72 69 6e 67 22 2c 2c  2c 6d 61 69 6e 25 2c 73  |tring",,,main%,s|
0000adb0  63 6f 72 65 68 61 6e 25  2c 22 53 63 6f 72 65 20  |corehan%,"Score |
0000adc0  3a 20 22 2b c3 73 63 6f  72 65 25 2b 22 20 69 6e  |: "+.score%+" in|
0000add0  20 22 2b c3 70 79 72 67  61 6d 65 73 25 0d 36 f6  | "+.pyrgames%.6.|
0000ade0  13 e7 20 70 79 72 67 61  6d 65 73 25 3d 36 20 8c  |.. pyrgames%=6 .|
0000adf0  0d 37 00 12 20 20 de 20  62 75 74 74 6f 6e 73 25  |.7..  . buttons%|
0000ae00  20 34 0d 37 0a 1b 20 20  24 28 62 75 74 74 6f 6e  | 4.7..  $(button|
0000ae10  73 25 2b 30 29 3d 22 42  65 67 69 6e 22 0d 37 14  |s%+0)="Begin".7.|
0000ae20  13 20 20 e7 20 73 63 6f  72 65 25 3e 3d 30 20 8c  |.  . score%>=0 .|
0000ae30  0d 37 1e 97 20 20 20 20  c8 99 22 57 69 6d 70 45  |.7..    .."WimpE|
0000ae40  78 74 5f 43 6f 6e 74 72  6f 6c 49 6d 6d 65 64 69  |xt_ControlImmedi|
0000ae50  61 74 65 22 2c 2c 32 2c  22 50 79 72 61 6d 69 64  |ate",,2,"Pyramid|
0000ae60  22 2c 22 43 6f 6e 67 72  61 74 75 6c 61 74 69 6f  |","Congratulatio|
0000ae70  6e 73 21 20 59 6f 75 72  20 73 63 6f 72 65 20 6f  |ns! Your score o|
0000ae80  66 20 22 2b c3 73 63 6f  72 65 25 2b 22 20 77 61  |f "+.score%+" wa|
0000ae90  73 20 61 62 6f 76 65 20  70 61 72 2e 20 43 6c 69  |s above par. Cli|
0000aea0  63 6b 20 27 42 65 67 69  6e 27 20 66 6f 72 20 61  |ck 'Begin' for a|
0000aeb0  20 6e 65 77 20 6d 61 74  63 68 2e 22 2c 62 75 74  | new match.",but|
0000aec0  74 6f 6e 73 25 2c 30 0d  37 28 07 20 20 cc 0d 37  |tons%,0.7(.  ..7|
0000aed0  32 96 20 20 20 20 c8 99  22 57 69 6d 70 45 78 74  |2.    .."WimpExt|
0000aee0  5f 43 6f 6e 74 72 6f 6c  49 6d 6d 65 64 69 61 74  |_ControlImmediat|
0000aef0  65 22 2c 2c 32 2c 22 50  79 72 61 6d 69 64 22 2c  |e",,2,"Pyramid",|
0000af00  22 43 6f 6d 6d 69 73 65  72 61 74 69 6f 6e 73 21  |"Commiserations!|
0000af10  20 59 6f 75 72 20 73 63  6f 72 65 20 6f 66 20 22  | Your score of "|
0000af20  2b c3 73 63 6f 72 65 25  2b 22 20 77 61 73 20 62  |+.score%+" was b|
0000af30  65 6c 6f 77 20 70 61 72  2e 20 43 6c 69 63 6b 20  |elow par. Click |
0000af40  27 42 65 67 69 6e 27 20  66 6f 72 20 61 20 6e 65  |'Begin' for a ne|
0000af50  77 20 6d 61 74 63 68 2e  22 2c 62 75 74 74 6f 6e  |w match.",button|
0000af60  73 25 2c 30 0d 37 3c 07  20 20 cd 0d 37 46 18 70  |s%,0.7<.  ..7F.p|
0000af70  79 72 67 61 6d 65 73 25  3d 30 3a 73 63 6f 72 65  |yrgames%=0:score|
0000af80  25 3d 30 0d 37 50 05 cd  0d 37 5a 0c f2 6e 65 77  |%=0.7P...7Z..new|
0000af90  67 61 6d 65 0d 37 64 05  e1 0d 37 6e 04 0d ff     |game.7d...7n...|
0000af9f