0::" at line ";: 9 22,4,26,20,28,0,7,11,0,17,0,17,255,12,23,1,0;0;0;0; *FX 4,1 (*ESC OFF 2fW%=12:fH%=8:mineCount%=10 /< field%(fW%-1,fH%-1): swept%(fW%-1,fH%-1) ,FfloodQSz%=fW%*fH%-1: floodQ%(floodQSz%) P: Z sp% 7 d inv%=0 1 -ninvA%=inv%*&7F7F7F00:invB%=inv%*&7F7F7F7F x  n%=1 17 + s%:sp%!0=s%invA%: s%:sp%!4=s%invB%  23,127+n%+inv%*64  i%=0 7: sp%?i%: i%  n% inv% : gameState%=1  ( gameState% _mainMenu,_gameLoop  gameState%=0 : 0 *ESC ON *FX 4,0 "Thank-you for playing."  : " _min(a,b) ab =a =b 6: @ Populate the minefield. J _populate !T X%=0 fW%-1: Y%=0 fH%-1 #^field%(X%,Y%)=0:swept%(X%,Y%)= hfloodQ%(X%+Y%*fW%)=X%+Y%*256 r Y%: X% | I%=0 fW%*fH%-1 #X%=(fW%*fH%-1):Y%=(fW%*fH%-1) 9S%=floodQ%(X%):floodQ%(X%)=floodQ%(Y%):floodQ%(Y%)=S%  I%  I%=1 mineCount% )X%=floodQ%(I%)255:Y%=floodQ%(I%)256 field%(X%,Y%)=-1 S xc%=_max(X%-1,0) _min(X%+1,fW%-1): yc%=_max(Y%-1,0) _min(Y%+1,fH%-1) : field%(xc%,yc%)>=0 field%(xc%,yc%)=field%(xc%,yc%)+1  yc%: xc%  I%  :  _getCell(X%,Y%) C%=128 D swept%(X%,Y%)=1 C%=field%(X%,Y%)+129 field%(X%,Y%)=-1 C%=138  swept%(X%,Y%)=2 C%=139 & swept%(X%,Y%)=3 C%=140 0=C% : Draw a cell. 5D _drawCell(X%,Y%)X%,Y%)(_getCell(X%,Y%));: N: X Draw the entire field. b _drawField !l X%=0 fW%-1: Y%=0 fH%-1 v_drawCell(X%,Y%)  Y%: X%  : % Get a key, flashing the cursor.  _getKey   I%=1 0 -1 *pX%,pY%)(_getCell(pX%,pY%)+I%*64); K%=20  K%<>-1 I%=0  I%  K%<>-1 =K% :   Get a game action key.  _getGameKey  K%=_getKey *_drawCell(pX%,pY%) 4 K%=139 =1 > K%=138 =2 H K%=136 =3 R K%=137 =4 \ K%=13 =5 f K%=27 =6 p K%=127 K%=135 =7 z=0 : q _sweep(X%,Y%) swept%(X%,Y%) swept%(X%,Y%)=1:_drawCell(X%,Y%): field%(X%,Y%)<>-1 toDo%=toDo%-1: " Uncover a point on the grid.  _uncover(X%,Y%)  swept%(X%,Y%) 2 field%(X%,Y%)=-1 _sweep(X%,Y%):_gameOver: $ field%(X%,Y%) _sweep(X%,Y%): _qclr:_enq(X%+Y%*256) :_fill: _qlen=0   _fill xy%=_deq X%=xy%255 Y%=xy%256 ( swept%(X%,Y%) field%(X%,Y%)<>0 5W%=X%+1::W%=W%-1: W%=0 field%(_max(W%,0),Y%) =$E%=X%-1::E%=E%+1: E%=fW%-1 field%(_min(E%,fW%-1),Y%) . X%=W% E% 8_sweep(X%,Y%) B Y%>0 _fillU L Y%0 swept%(X%,Y%)=2:_drawCell(X%,Y%):flags%=flags%-1: 9 swept%(X%,Y%)=0 swept%(X%,Y%)=3:_drawCell(X%,Y%): I swept%(X%,Y%)=2 swept%(X%,Y%)=3:_drawCell(X%,Y%):flags%=flags%+1: 7 swept%(X%,Y%)=3 swept%(X%,Y%)=0:_drawCell(X%,Y%)  :  _gameOver ! x%=0 fW%-1: y%=0 fH%-1 %  field%(x%,y%)=-1 _sweep(x%,y%)  y%: x% gameOver%=:gameState%=1: ( 2 _gameWon !< x%=0 fW%-1: y%=0 fH%-1 8F field%(x%,y%)=-1 swept%(x%,y%)=2:_drawCell(x%,y%) P y%: x% ZgameOver%=:gameState%=1: d n: x Start a new game.  _newGame :2,3)"Busy...";144; gameState%=2 pX%=0:pY%=0:gameOver%= _populate :_drawField .toDo%=fW%*fH%-mineCount%:flags%=mineCount%  :  Main game logic loop. , _gameLoop :_gameLogic: gameOver%:  _gameLogic :k%=_getGameKey: k%  k%=1 pY%=(pY%-1+fH%) fH%  k%=2 pY%=(pY%+1) fH%  k%=3 pX%=(pX%-1+fW%) fW% " k%=4 pX%=(pX%+1) fW% 3, k%=5 _uncover(pX%,pY%): toDo%<1 _gameWon: 6 k%=6 _gameOver: @ k%=7 _flag(pX%,pY%) J T: ^ _mainMenu h 12,17,127,17,128 r"MINE";143;"SWEEPER"; |0,7)"by Ben Ryves";  17,0,17,255 2,2)"Mines:"; _drawMineCount  k%  :k%=(0): k%<>-1  k%=13 _newGame = k%=136 mineCount%=_max(1,mineCount%-1):_drawMineCount > k%=137 mineCount%=_min(24,mineCount%+1):_drawMineCount  k%=27 gameState%=0  gameState%<>1   _drawMineCount @%=&00020002  i% 8,2)mineCount%0,4)""; %& i%=0 mineCount%-1:141;: i% 0 mineCount%>23 $: i%=mineCount% 23:142;: i% D N: X Sprite data. b&80AA807F,&80AA80AA,&8080807F,&80808080,&9888807F,&809C8888,&8498807F,&809C9088,&8498807F,&80988488,&9490807F,&8084849C,&909C807F,&80988498,&908C807F,&809C949C,&849C807F,&80909088,&949C807F,&809C949C l&E3D5FF7F,&FFD5E3C9,&C7C7FF7F,&FFC1F7F7,&FBE7FF7F,&FFF7FFF7,&DE4C7C92,&00927C7C,&44281000,&00001028,&08787878,&007F1C08,&9A924438,&00384482