Annotation of gforth/sokoban.fs, revision 1.1
1.1 ! pazsan 1: \ sokoban - a maze game in FORTH
! 2:
! 3: \ Contest from Rick VanNorman in comp.lang.forth
! 4:
! 5: \ SOKOBAN
! 6:
! 7: \ Sokoban is a visual game of pushing. You (Soko) are represented by the
! 8: \ at-sign "@" You may move freely through the maze on unoccupied spaces.
! 9: \ The dollar-signs "$" are the rocks you have to push. You can only push
! 10: \ one rock at a time, and cannot push a rock through a wall "#" or over
! 11: \ another rock. The object is to push the rocks to their goals which are
! 12: \ indicated by the periods ".". There are 50 levels, the first of which
! 13: \ is shown below.
! 14:
! 15: \ program is ANS FORTH with environmental dependency of case-insensitiv
! 16: \ source. Tested with gforth and bigFORTH
! 17:
! 18: \ really uses "dump" terminal: No PAGE, no AT-XY to speed things up
! 19: \ Even bell (7) is replaced with "Wuff!" ;-)
! 20: \ (this is a german joke)
! 21: \ I don't like the keyboard interpreting CASE-statement either, but
! 22: \ was to lazy to use a table.
! 23: \ I could have used blocks as level tables, but as I don't have a good
! 24: \ block editor for gforth now, I let it be.
! 25:
! 26: 40 Constant /maze \ maximal maze line
! 27:
! 28: Create maze 1 cells allot /maze 25 * allot \ current maze
! 29: Variable mazes 0 mazes ! \ root pointer
! 30: Variable soko 0 soko ! \ player position
! 31: Variable >maze 0 >maze ! \ current compiled maze
! 32: >maze off
! 33:
! 34: \ score information
! 35:
! 36: Variable rocks 0 rocks ! \ number of rocks left
! 37: Variable level# 0 level# ! \ Current level
! 38: Variable moves 0 moves ! \ number of moves
! 39: Variable score 0 score ! \ total number of scores
! 40:
! 41: : new-maze ( n -- addr ) \ add a new level
! 42: here mazes rot 1 ?DO @ LOOP !
! 43: 0 , 0 , here >maze ! 0 , ;
! 44: : count-$ ( addr u -- n ) 0 rot rot
! 45: bounds ?DO I c@ [char] $ = - LOOP ;
! 46: : m: ( "string" -- ) \ add a level line (top first!)
! 47: -1 parse tuck 2dup count-$ >maze @ 1 cells - +!
! 48: here swap move dup allot
! 49: /maze swap - here over bl fill allot
! 50: >maze @ here over cell+ - swap ! ;
! 51:
! 52: : maze-field ( -- addr n )
! 53: maze dup cell+ swap @ chars ;
! 54:
! 55: : .score ( -- )
! 56: ." Level: " level# @ 2 .r ." Score: " score @ 4 .r
! 57: ." Moves: " moves @ 6 .r ." Rocks: " rocks @ 2 .r ;
! 58:
! 59: : .maze ( -- ) \ display maze
! 60: 0 0 at-xy .score
! 61: cr maze-field bounds
! 62: DO I /maze type cr /maze chars +LOOP ;
! 63:
! 64: : find-soko ( -- n )
! 65: maze-field 0
! 66: DO dup I chars + c@ [char] @ =
! 67: IF drop I UNLOOP EXIT THEN
! 68: LOOP true abort" No player in field!" ;
! 69:
! 70: : level ( n -- flag ) \ finds level n
! 71: dup level# !
! 72: mazes swap 0
! 73: ?DO @ dup 0= IF drop false UNLOOP EXIT THEN LOOP
! 74: cell+ dup @ rocks !
! 75: cell+ dup @ cell+ maze swap chars move
! 76: find-soko soko ! true ;
! 77:
! 78: \ now the playing rules as replacement strings
! 79:
! 80: : 'soko ( -- addr ) \ gives player's address
! 81: maze cell+ soko @ chars + ;
! 82:
! 83: : apply-rule? ( addr u offset -- flag )
! 84: 'soko 2swap
! 85: \ offset soko-addr addr u
! 86: 0 DO
! 87: over c@ over c@ <>
! 88: IF drop 2drop false UNLOOP EXIT THEN
! 89: >r over chars + r> char+
! 90: LOOP 2drop drop true ;
! 91:
! 92: : apply-rule! ( addr u offset -- )
! 93: 'soko
! 94: 2swap
! 95: \ offset soko-addr addr u
! 96: 0 DO
! 97: count rot tuck c! rot tuck chars + rot
! 98: LOOP 2drop drop ;
! 99:
! 100: : play-rule ( addr1 u1 addr2 u2 offset -- flag )
! 101: >r 2swap r@ apply-rule?
! 102: IF r> apply-rule! true ELSE rdrop 2drop false THEN ;
! 103:
! 104: \ player may move up, down, left and right
! 105:
! 106: : move: ( offset -- )
! 107: Create ,
! 108: DOES> @ >r 1 moves +!
! 109: S" @ " S" @" r@ play-rule IF r> soko +! EXIT THEN
! 110: S" @." S" &" r@ play-rule IF r> soko +! EXIT THEN
! 111: S" @$ " S" @$" r@ play-rule IF r> soko +! EXIT THEN
! 112: S" @*." S" &*" r@ play-rule IF r> soko +! EXIT THEN
! 113: S" @* " S" &$" r@ play-rule
! 114: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
! 115: S" @$." S" @*" r@ play-rule
! 116: IF r> soko +! -1 rocks +! 1 score +! EXIT THEN
! 117: S" &*." S" .&*" r@ play-rule IF r> soko +! EXIT THEN
! 118: S" &$ " S" .@$" r@ play-rule IF r> soko +! EXIT THEN
! 119: S" & " S" .@" r@ play-rule IF r> soko +! EXIT THEN
! 120: S" &." S" .&" r@ play-rule IF r> soko +! EXIT THEN
! 121: S" &* " S" .&$" r@ play-rule
! 122: IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
! 123: -1 moves +! rdrop ;
! 124:
! 125: 1 move: soko-right
! 126: -1 move: soko-left
! 127: /maze move: soko-down
! 128: /maze negate move: soko-up
! 129:
! 130: : print-help
! 131: ." Move soko '@' with h, j, k or l key (like vi)" cr
! 132: ." or with vt100 cursor keys." cr ;
! 133:
! 134: : play-loop ( -- )
! 135: BEGIN
! 136: rocks @ 0=
! 137: IF
! 138: level# @ 1+ level 0= IF EXIT THEN
! 139: THEN
! 140: .maze
! 141: key
! 142: CASE
! 143: [char] ? OF print-help false ENDOF
! 144:
! 145: [char] h OF soko-left false ENDOF
! 146: [char] j OF soko-down false ENDOF
! 147: [char] k OF soko-up false ENDOF
! 148: [char] l OF soko-right false ENDOF
! 149:
! 150: \ vt100 cursor keys should work too
! 151: 27 OF key [char] [ <> ENDOF
! 152: [char] D OF soko-left false ENDOF
! 153: [char] B OF soko-down false ENDOF
! 154: [char] A OF soko-up false ENDOF
! 155: [char] C OF soko-right false ENDOF
! 156:
! 157: [char] q OF true ENDOF
! 158: ENDCASE
! 159: UNTIL ;
! 160:
! 161: \ start game with "sokoban"
! 162:
! 163: : sokoban ( -- )
! 164: 1 level IF play-loop ." Game finished!" THEN ;
! 165:
! 166: 001 new-maze
! 167: m: #####
! 168: m: # #
! 169: m: #$ #
! 170: m: ### $##
! 171: m: # $ $ #
! 172: m: ### # ## # ######
! 173: m: # # ## ##### ..#
! 174: m: # $ $ ..#
! 175: m: ##### ### #@## ..#
! 176: m: # #########
! 177: m: #######
! 178: 002 new-maze
! 179: m: ############
! 180: m: #.. # ###
! 181: m: #.. # $ $ #
! 182: m: #.. #$#### #
! 183: m: #.. @ ## #
! 184: m: #.. # # $ ##
! 185: m: ###### ##$ $ #
! 186: m: # $ $ $ $ #
! 187: m: # # #
! 188: m: ############
! 189: 003 new-maze
! 190: m: ########
! 191: m: # @#
! 192: m: # $#$ ##
! 193: m: # $ $#
! 194: m: ##$ $ #
! 195: m: ######### $ # ###
! 196: m: #.... ## $ $ #
! 197: m: ##... $ $ #
! 198: m: #.... ##########
! 199: m: ########
! 200: 004 new-maze
! 201: m: ########
! 202: m: # ....#
! 203: m: ############ ....#
! 204: m: # # $ $ ....#
! 205: m: # $$$#$ $ # ....#
! 206: m: # $ $ # ....#
! 207: m: # $$ #$ $ $########
! 208: m: # $ # #
! 209: m: ## #########
! 210: m: # # ##
! 211: m: # $ ##
! 212: m: # $$#$$ @#
! 213: m: # # ##
! 214: m: ###########
! 215: 005 new-maze
! 216: m: #####
! 217: m: # #####
! 218: m: # #$## #
! 219: m: # $ #
! 220: m: ######### ### #
! 221: m: #.... ## $ $###
! 222: m: #.... $ $$ ##
! 223: m: #.... ##$ $ @#
! 224: m: ######### $ ##
! 225: m: # $ $ #
! 226: m: ### ## #
! 227: m: # #
! 228: m: ######
! 229: 006 new-maze
! 230: m: ###### ###
! 231: m: #.. # ##@##
! 232: m: #.. ### #
! 233: m: #.. $$ #
! 234: m: #.. # # $ #
! 235: m: #..### # $ #
! 236: m: #### $ #$ #
! 237: m: # $# $ #
! 238: m: # $ $ #
! 239: m: # ## #
! 240: m: #########
! 241: 007 new-maze
! 242: m: #####
! 243: m: ####### ##
! 244: m: ## # @## $$ #
! 245: m: # $ #
! 246: m: # $ ### #
! 247: m: ### #####$###
! 248: m: # $ ### ..#
! 249: m: # $ $ $ ...#
! 250: m: # ###...#
! 251: m: # $$ # #...#
! 252: m: # ### #####
! 253: m: ####
! 254: 008 new-maze
! 255: m: ####
! 256: m: # ###########
! 257: m: # $ $ $ #
! 258: m: # $# $ # $ #
! 259: m: # $ $ # #
! 260: m: ### $# # #### #
! 261: m: #@#$ $ $ ## #
! 262: m: # $ #$# # #
! 263: m: # $ $ $ $ #
! 264: m: ##### #########
! 265: m: # #
! 266: m: # #
! 267: m: #......#
! 268: m: #......#
! 269: m: #......#
! 270: m: ########
! 271: 009 new-maze
! 272: m: #######
! 273: m: # ...#
! 274: m: ##### ...#
! 275: m: # . .#
! 276: m: # ## ...#
! 277: m: ## ## ...#
! 278: m: ### ########
! 279: m: # $$$ ##
! 280: m: ##### $ $ #####
! 281: m: ## #$ $ # #
! 282: m: #@ $ $ $ $ #
! 283: m: ###### $$ $ #####
! 284: m: # #
! 285: m: ########
! 286: 010 new-maze
! 287: m: ### #############
! 288: m: ##@#### # #
! 289: m: # $$ $$ $ $ ...#
! 290: m: # $$$# $ #...#
! 291: m: # $ # $$ $$ #...#
! 292: m: ### # $ #...#
! 293: m: # # $ $ $ #...#
! 294: m: # ###### ###...#
! 295: m: ## # # $ $ #...#
! 296: m: # ## # $$ $ $##..#
! 297: m: # ..# # $ #.#
! 298: m: # ..# # $$$ $$$ #.#
! 299: m: ##### # # #.#
! 300: m: # ######### #.#
! 301: m: # #.#
! 302: m: ###############
! 303: 011 new-maze
! 304: m: ####
! 305: m: #### # #
! 306: m: ### @###$ #
! 307: m: ## $ #
! 308: m: ## $ $$## ##
! 309: m: # #$## #
! 310: m: # # $ $$ # ###
! 311: m: # $ # # $ #####
! 312: m: #### # $$ # #
! 313: m: #### ## $ #
! 314: m: #. ### ########
! 315: m: #.. ..# ####
! 316: m: #...#.#
! 317: m: #.....#
! 318: m: #######
! 319: 012 new-maze
! 320: m: ################
! 321: m: # #
! 322: m: # # ###### #
! 323: m: # # $ $ $ $# #
! 324: m: # # $@$ ## ##
! 325: m: # # $ $ $###...#
! 326: m: # # $ $ ##...#
! 327: m: # ###$$$ $ ##...#
! 328: m: # # ## ##...#
! 329: m: ##### ## ##...#
! 330: m: ##### ###
! 331: m: # #
! 332: m: #######
! 333: 013 new-maze
! 334: m: ##### ####
! 335: m: #...# # ####
! 336: m: #...### $ #
! 337: m: #....## $ $###
! 338: m: ##....## $ #
! 339: m: ###... ## $ $ #
! 340: m: # ## # $ #
! 341: m: # ## # ### ####
! 342: m: # $ # #$ $ #
! 343: m: # $ @ $ $ #
! 344: m: # # $ $$ $ ###
! 345: m: # ###### ###
! 346: m: # ## ####
! 347: m: ###
! 348: 014 new-maze
! 349: m: #########
! 350: m: ## ## ######
! 351: m: ### # # ###
! 352: m: # $ #$ # # ... #
! 353: m: # # $#@$## # #.#. #
! 354: m: # # #$ # . . #
! 355: m: # $ $ # # #.#. #
! 356: m: # ## ##$ $ . . #
! 357: m: # $ # # #$#.#. #
! 358: m: ## $ $ $ $... #
! 359: m: #$ ###### ## #
! 360: m: # # ##########
! 361: m: ####
! 362: 015 new-maze
! 363: m: #######
! 364: m: ####### #
! 365: m: # # $@$ #
! 366: m: #$$ # #########
! 367: m: # ###......## #
! 368: m: # $......## # #
! 369: m: # ###...... #
! 370: m: ## #### ### #$##
! 371: m: # #$ # $ # #
! 372: m: # $ $$$ # $## #
! 373: m: # $ $ ###$$ # #
! 374: m: ##### $ # #
! 375: m: ### ### # #
! 376: m: # # #
! 377: m: ######## #
! 378: m: ####
! 379: 016 new-maze
! 380: m: ########
! 381: m: # # #
! 382: m: # $ #
! 383: m: ### #$ ####
! 384: m: # $ ##$ #
! 385: m: # # @ $ # $#
! 386: m: # # $ ####
! 387: m: ## ####$## #
! 388: m: # $#.....# # #
! 389: m: # $..**. $# ###
! 390: m: ## #.....# #
! 391: m: # ### #######
! 392: m: # $$ # #
! 393: m: # # #
! 394: m: ###### #
! 395: m: #####
! 396: 017 new-maze
! 397: m: #####
! 398: m: # ##
! 399: m: # # ####
! 400: m: # $ #### #
! 401: m: # $$ $ $#
! 402: m: ###@ #$ ##
! 403: m: # ## $ $ ##
! 404: m: # $ ## ## .#
! 405: m: # #$##$ #.#
! 406: m: ### $..##.#
! 407: m: # #.*...#
! 408: m: # $$ #.....#
! 409: m: # #########
! 410: m: # #
! 411: m: ####
! 412: 018 new-maze
! 413: m: ##########
! 414: m: #.. # #
! 415: m: #.. #
! 416: m: #.. # ####
! 417: m: ####### # ##
! 418: m: # #
! 419: m: # # ## # #
! 420: m: #### ## #### ##
! 421: m: # $ ##### # #
! 422: m: # # $ $ # $ #
! 423: m: # @$ $ # ##
! 424: m: #### ## #######
! 425: m: # #
! 426: m: ######
! 427: 019 new-maze
! 428: m: ###########
! 429: m: # . # #
! 430: m: # #. @ #
! 431: m: ##### ##..# ####
! 432: m: ## # ..### ###
! 433: m: # $ #... $ # $ #
! 434: m: # .. ## ## ## #
! 435: m: ####$##$# $ # # #
! 436: m: ## # #$ $$ # #
! 437: m: # $ # # # $## #
! 438: m: # #
! 439: m: # ########### #
! 440: m: #### ####
! 441: 020 new-maze
! 442: m: ######
! 443: m: # @####
! 444: m: ##### $ #
! 445: m: # ## ####
! 446: m: # $ # ## #
! 447: m: # $ # ##### #
! 448: m: ## $ $ # #
! 449: m: ## $ $ ### # #
! 450: m: ## # $ # # #
! 451: m: ## # #$# # #
! 452: m: ## ### # # ######
! 453: m: # $ #### # #....#
! 454: m: # $ $ ..#.#
! 455: m: ####$ $# $ ....#
! 456: m: # # ## ....#
! 457: m: ###################
! 458: 021 new-maze
! 459: m: ##########
! 460: m: ##### ####
! 461: m: # # $ #@ #
! 462: m: # #######$#### ###
! 463: m: # # ## # #$ ..#
! 464: m: # # $ # # #.#
! 465: m: # # $ # #$ ..#
! 466: m: # # ### ## #.#
! 467: m: # ### # # #$ ..#
! 468: m: # # # #### #.#
! 469: m: # #$ $ $ #$ ..#
! 470: m: # $ # $ $ # #.#
! 471: m: #### $### #$ ..#
! 472: m: # $$ ###....#
! 473: m: # ## ######
! 474: m: ########
! 475: 022 new-maze
! 476: m: #########
! 477: m: # #
! 478: m: # ####
! 479: m: ## #### # #
! 480: m: ## #@## #
! 481: m: # $$$ $ $$#
! 482: m: # # ## $ #
! 483: m: # # ## $ ####
! 484: m: #### $$$ $# #
! 485: m: # ## ....#
! 486: m: # # # #.. .#
! 487: m: # # # ##...#
! 488: m: ##### $ #...#
! 489: m: ## #####
! 490: m: #####
! 491: 023 new-maze
! 492: m: ###### ####
! 493: m: # ####### #####
! 494: m: # $# # $ # #
! 495: m: # $ $ $ # $ $ #
! 496: m: ##$ $ # @# $ #
! 497: m: # $ ########### ##
! 498: m: # # #.......# $#
! 499: m: # ## # ......# #
! 500: m: # # $........$ #
! 501: m: # # $ #.... ..# #
! 502: m: # $ $####$#### $#
! 503: m: # $ ### $ $ ##
! 504: m: # $ $ $ $ #
! 505: m: ## ###### $ ##### #
! 506: m: # # #
! 507: m: ###################
! 508: 024 new-maze
! 509: m: #######
! 510: m: # # ####
! 511: m: ##### $#$ # ##
! 512: m: #.. # # # #
! 513: m: #.. # $#$ # $####
! 514: m: #. # #$ # #
! 515: m: #.. $# # $ #
! 516: m: #..@# #$ #$ # #
! 517: m: #.. # $# $# #
! 518: m: #.. # #$$#$ # ##
! 519: m: #.. # $# # $#$ #
! 520: m: #.. # # # # #
! 521: m: ##. #### ##### #
! 522: m: #### #### #####
! 523: 025 new-maze
! 524: m: ###############
! 525: m: #.......... .####
! 526: m: #..........$$.# #
! 527: m: ###########$ # ##
! 528: m: # $ $ $ #
! 529: m: ## #### # $ # #
! 530: m: # # ## # ##
! 531: m: # $# # ## ### ##
! 532: m: # $ #$### ### ##
! 533: m: ### $ # # ### ##
! 534: m: ### $ ## # # ##
! 535: m: # $ # $ $ $ #
! 536: m: # $ $#$$$ # #
! 537: m: # # $ #####
! 538: m: # @## # # #
! 539: m: ##############
! 540: 026 new-maze
! 541: m: ####
! 542: m: # ##############
! 543: m: # # ..#......#
! 544: m: # # # ##### ...#
! 545: m: ##$# ........#
! 546: m: # ##$###### ####
! 547: m: # $ # ######@ #
! 548: m: ##$ # $ ###### #
! 549: m: # $ #$$$## #
! 550: m: # # #$#$###
! 551: m: # #### #$$$$$ #
! 552: m: # # $ # #
! 553: m: # # ## ###
! 554: m: # ######$###### $ #
! 555: m: # # # #
! 556: m: ########## #####
! 557: 027 new-maze
! 558: m: #######
! 559: m: # # #####
! 560: m: ## # #...###
! 561: m: # $# #... #
! 562: m: # $ #$$ ... #
! 563: m: # $# #... .#
! 564: m: # # $########
! 565: m: ##$ $ $ #
! 566: m: ## # $$ # #
! 567: m: ###### ##$$@#
! 568: m: # ##
! 569: m: ########
! 570: 028 new-maze
! 571: m: #################
! 572: m: #... # # ##
! 573: m: ##..... $## # #$ #
! 574: m: #......# $ # #
! 575: m: #......# # # # #
! 576: m: ######### $ $ $ #
! 577: m: # #$##$ ##$##
! 578: m: ## $ # $ #
! 579: m: # ## ### # ##$ #
! 580: m: # $ $$ $ $ #
! 581: m: # $ $##$ ######
! 582: m: ####### @ ##
! 583: m: ######
! 584: 029 new-maze
! 585: m: #####
! 586: m: ##### #
! 587: m: ## $ $ ####
! 588: m: ##### $ $ $ ##.#
! 589: m: # $$ ##..#
! 590: m: # ###### ###.. #
! 591: m: ## # # #... #
! 592: m: # $ # #... #
! 593: m: #@ #$ ## ####...#
! 594: m: #### $ $$ ##..#
! 595: m: ## $ $ $...#
! 596: m: # $$ $ # .#
! 597: m: # $ $ ####
! 598: m: ###### #
! 599: m: #####
! 600: 030 new-maze
! 601: m: #####
! 602: m: # ##
! 603: m: # $ #########
! 604: m: ## # # ######
! 605: m: ## # $#$#@ # #
! 606: m: # # $ # $ #
! 607: m: # ### ######### ##
! 608: m: # ## ..*..... # ##
! 609: m: ## ## *.*..*.* # ##
! 610: m: # $########## ##$ #
! 611: m: # $ $ $ $ #
! 612: m: # # # # # #
! 613: m: ###################
! 614: 031 new-maze
! 615: m: ###########
! 616: m: # # #
! 617: m: ##### # $ $ #
! 618: m: # ##### $## # ##
! 619: m: # $ ## # ## $ #
! 620: m: # $ @$$ # ##$$$ #
! 621: m: ## ### # ## #
! 622: m: ## # ### #####$#
! 623: m: ## # $ #....#
! 624: m: # ### ## $ #....##
! 625: m: # $ $ # #..$. #
! 626: m: # ## $ # ##.... #
! 627: m: ##### ######...##
! 628: m: ##### #####
! 629: 032 new-maze
! 630: m: ####
! 631: m: # #########
! 632: m: ## ## # #
! 633: m: # $# $@$ ####
! 634: m: #$ $ # $ $# ##
! 635: m: ## $## #$ $ #
! 636: m: # # # # $$$ #
! 637: m: # $ $ $## ####
! 638: m: # $ $ #$# # #
! 639: m: ## ### ###$ #
! 640: m: # #.... #
! 641: m: ####......####
! 642: m: #....####
! 643: m: #...##
! 644: m: #...#
! 645: m: #####
! 646: 033 new-maze
! 647: m: ####
! 648: m: ##### #
! 649: m: ## $#
! 650: m: ## $ ## ###
! 651: m: #@$ $ # $ #
! 652: m: #### ## $#
! 653: m: #....#$ $ #
! 654: m: #....# $#
! 655: m: #.... $$ ##
! 656: m: #... # $ #
! 657: m: ######$ $ #
! 658: m: # ###
! 659: m: #$ ###
! 660: m: # #
! 661: m: ####
! 662: 034 new-maze
! 663: m: ############
! 664: m: ## ## #
! 665: m: ## $ $ #
! 666: m: #### ## $$ #
! 667: m: # $ # #
! 668: m: # $$$ # ####
! 669: m: # # # $ ##
! 670: m: # # # $ #
! 671: m: # $# $# #
! 672: m: # ..# ####
! 673: m: ####.. $ #@#
! 674: m: #.....# $# #
! 675: m: ##....# $ #
! 676: m: ###..## #
! 677: m: ############
! 678: 035 new-maze
! 679: m: #########
! 680: m: #.... ##
! 681: m: #.#.# $ ##
! 682: m: ##....# # @##
! 683: m: # ....# # ##
! 684: m: # #$ ##$ #
! 685: m: ## ### $ #
! 686: m: #$ $ $ $# #
! 687: m: # # $ $ ## #
! 688: m: # ### ## #
! 689: m: # ## ## ##
! 690: m: # $ # $ #
! 691: m: ###$ $ ###
! 692: m: # #####
! 693: m: ####
! 694: 036 new-maze
! 695: m: ############ ######
! 696: m: # # # ###....#
! 697: m: # $$# @ .....#
! 698: m: # # ### # ....#
! 699: m: ## ## ### # ....#
! 700: m: # $ $ # # ####
! 701: m: # $ $## # #
! 702: m: #### # #### # ## #
! 703: m: # # #$ ## # #
! 704: m: # $ $ # ## # ##
! 705: m: # # $ $ # # #
! 706: m: # $ ## ## # #####
! 707: m: # $$ $$ #
! 708: m: ## ## ### $ #
! 709: m: # # # #
! 710: m: ###### ######
! 711: 037 new-maze
! 712: m: #####
! 713: m: ##### ###### #
! 714: m: # #### $ $ $ #
! 715: m: # $ ## ## ## ##
! 716: m: # $ $ $ $ #
! 717: m: ### $ ## ## ##
! 718: m: # ##### #####$$ #
! 719: m: ##$##### @## #
! 720: m: # $ ###$### $ ##
! 721: m: # $ # ### ###
! 722: m: # $$ $ # $$ #
! 723: m: # # ## #
! 724: m: #######.. .###
! 725: m: #.........#
! 726: m: #.........#
! 727: m: ###########
! 728: 038 new-maze
! 729: m: ###########
! 730: m: #...... #########
! 731: m: #...... # ## #
! 732: m: #..### $ $ #
! 733: m: #... $ $ # ## #
! 734: m: #...#$##### # #
! 735: m: ### # #$ #$ #
! 736: m: # $$ $ $ $## #
! 737: m: # $ #$#$ ##$ #
! 738: m: ### ## # ## #
! 739: m: # $ $ ## ######
! 740: m: # $ $ #
! 741: m: ## # # #
! 742: m: #####@#####
! 743: m: ###
! 744: 039 new-maze
! 745: m: ####
! 746: m: ####### @#
! 747: m: # $ #
! 748: m: # $## $#
! 749: m: ##$#...# #
! 750: m: # $... #
! 751: m: # #. .# ##
! 752: m: # # #$ #
! 753: m: #$ $ #
! 754: m: # #######
! 755: m: ####
! 756: 040 new-maze
! 757: m: ######
! 758: m: #############....#
! 759: m: ## ## ##....#
! 760: m: # $$## $ @##....#
! 761: m: # $$ $# ....#
! 762: m: # $ ## $$ # # ...#
! 763: m: # $ ## $ # ....#
! 764: m: ## ##### ### ##.###
! 765: m: ## $ $ ## . #
! 766: m: # $### # ##### ###
! 767: m: # $ # #
! 768: m: # $ #$ $ $### #
! 769: m: # $$$# $ # ####
! 770: m: # # $$ #
! 771: m: ###### ###
! 772: m: #####
! 773: 041 new-maze
! 774: m: ############
! 775: m: # ##
! 776: m: # # #$$ $ #
! 777: m: #$ #$# ## @#
! 778: m: ## ## # $ # ##
! 779: m: # $ #$ # #
! 780: m: # # $ # #
! 781: m: ## $ $ ## #
! 782: m: # # ## $ #
! 783: m: # ## $$# #
! 784: m: ######$$ # #
! 785: m: #....# ########
! 786: m: #.#... ##
! 787: m: #.... #
! 788: m: #.... #
! 789: m: #########
! 790: 042 new-maze
! 791: m: #####
! 792: m: ## ##
! 793: m: ## #
! 794: m: ## $$ #
! 795: m: ## $$ $ #
! 796: m: # $ $ #
! 797: m: #### # $$ #####
! 798: m: # ######## ## #
! 799: m: #. $$$@#
! 800: m: #.# ####### ## ##
! 801: m: #.# #######. #$ $##
! 802: m: #........... # #
! 803: m: ############## $ #
! 804: m: ## ##
! 805: m: ####
! 806: 043 new-maze
! 807: m: ########
! 808: m: #### ######
! 809: m: # ## $ $ @#
! 810: m: # ## ##$#$ $ $##
! 811: m: ### ......# $$ ##
! 812: m: # ......# # #
! 813: m: # # ......#$ $ #
! 814: m: # #$...... $$# $ #
! 815: m: # ### ###$ $ ##
! 816: m: ### $ $ $ $ #
! 817: m: # $ $ $ $ #
! 818: m: ###### ######
! 819: m: #####
! 820: 044 new-maze
! 821: m: #######
! 822: m: ##### # ####
! 823: m: # # $ #
! 824: m: #### #$$ ## ## #
! 825: m: ## # # ## ###
! 826: m: # ### $#$ $ $ #
! 827: m: #... # ## # #
! 828: m: #...# @ # ### ##
! 829: m: #...# ### $ $ #
! 830: m: ######## ## # #
! 831: m: #########
! 832: 045 new-maze
! 833: m: #####
! 834: m: # #
! 835: m: # # #######
! 836: m: # $@######
! 837: m: # $ ##$ ### #
! 838: m: # #### $ $ #
! 839: m: # ##### # #$ ####
! 840: m: ## #### ##$ #
! 841: m: # $# $ # ## ## #
! 842: m: # # #...# #
! 843: m: ###### ### ... #
! 844: m: #### # #...# #
! 845: m: # ### # #
! 846: m: # #
! 847: m: #########
! 848: 046 new-maze
! 849: m: ##########
! 850: m: # ####
! 851: m: # ###### # ##
! 852: m: # # $ $ $ $ #
! 853: m: # #$ #
! 854: m: ###$ $$# ###
! 855: m: # ## # $##
! 856: m: ##$# $ @#
! 857: m: # $ $ ###
! 858: m: # # $ #
! 859: m: # ## # #
! 860: m: ## ##### #
! 861: m: # #
! 862: m: #.......###
! 863: m: #.......#
! 864: m: #########
! 865: 047 new-maze
! 866: m: ####
! 867: m: ######### ##
! 868: m: ## $ $ #####
! 869: m: # ## ## ##...#
! 870: m: # #$$ $ $$#$##...#
! 871: m: # # @ # ...#
! 872: m: # $# ###$$ ...#
! 873: m: # $ $$ $ ##....#
! 874: m: ###$ #######
! 875: m: # #######
! 876: m: ####
! 877: 048 new-maze
! 878: m: #########
! 879: m: #*.*#*.*#
! 880: m: #.*.*.*.#
! 881: m: #*.*.*.*#
! 882: m: #.*.*.*.#
! 883: m: #*.*.*.*#
! 884: m: ### ###
! 885: m: # #
! 886: m: ###### ######
! 887: m: # #
! 888: m: # $ $ $ $ $ #
! 889: m: ## $ $ $ $ ##
! 890: m: #$ $ $ $ $#
! 891: m: # $@$ #
! 892: m: # ##### #
! 893: m: #### ####
! 894: 049 new-maze
! 895: m: ####
! 896: m: # ##
! 897: m: # ##
! 898: m: # $$ ##
! 899: m: ###$ $ ##
! 900: m: #### $ #
! 901: m: ### # ##### #
! 902: m: # # #....$ #
! 903: m: # # $ ....# #
! 904: m: # $ # #.*..# #
! 905: m: ### #### ### #
! 906: m: #### @$ ##$##
! 907: m: ### $ #
! 908: m: # ## #
! 909: m: #########
! 910: 050 new-maze
! 911: m: ############
! 912: m: ##.. # #
! 913: m: ##..* $ $ #
! 914: m: ##..*.# # # $##
! 915: m: #..*.# # # $ #
! 916: m: ####...# # # #
! 917: m: # ## # #
! 918: m: # @$ $ ### # ##
! 919: m: # $ $ # # #
! 920: m: ###$$ # # # # #
! 921: m: # $ # # #####
! 922: m: # $# ##### #
! 923: m: #$ # # # #
! 924: m: # ### ## #
! 925: m: # # # ##
! 926: m: #### ######
! 927: 051 new-maze
! 928: m: #########
! 929: m: # #
! 930: m: # $ $#
! 931: m: #### #
! 932: m: # $ ##
! 933: m: #### $ #
! 934: m: #.. $ ## ####
! 935: m: #.. $## #
! 936: m: #.. $ #
! 937: m: #.###$### #@#
! 938: m: #.# # ###
! 939: m: ### #######
! 940: 052 new-maze
! 941: m: ####################
! 942: m: # ########## @#
! 943: m: # $# # ######
! 944: m: # #### # ###
! 945: m: ##### # ###
! 946: m: # $ # ###
! 947: m: # $#### # # #
! 948: m: # # # #..#$### # #
! 949: m: # # #$ #..# $ $$ #
! 950: m: # #..# # # #
! 951: m: # # #..# # # #
! 952: m: ####################
! 953: 053 new-maze
! 954: m: ####################
! 955: m: # ###
! 956: m: # $# $ ## $ ##
! 957: m: # $### # $$ ##
! 958: m: #.### $ $ ## ##
! 959: m: #...# # # #$ #
! 960: m: #..##$$#### $ # #
! 961: m: #...# $ ## ###
! 962: m: #...$ ### # # #
! 963: m: ##.. $# ## ##@ #
! 964: m: ###.# #
! 965: m: ####################
! 966: 054 new-maze
! 967: m: ####################
! 968: m: # # # # #@#
! 969: m: # $ $ $ # #
! 970: m: ## ###..## ### #
! 971: m: # #....#$# $### #
! 972: m: # $ #....# $ $ $ #
! 973: m: # #....# # # $ $ #
! 974: m: # ##..## #$# #
! 975: m: ##$## ## # #$##
! 976: m: # $ $ # # #
! 977: m: # # # # #
! 978: m: ####################
! 979: 055 new-maze
! 980: m: ####################
! 981: m: # @## # ##
! 982: m: # ## $ $ ##
! 983: m: # ###....# # # ###
! 984: m: # #....# # # $ #
! 985: m: ### #...# # #
! 986: m: ## ##.# $ $ #
! 987: m: ## $ $ ### # # ###
! 988: m: ## $ # # $ #
! 989: m: #### $ $# # # # $ #
! 990: m: #### # # ##
! 991: m: ####################
! 992: 056 new-maze
! 993: m: ####################
! 994: m: # # ## # @###
! 995: m: ## $ # $### #
! 996: m: ##$# $ ##$# $ $ #
! 997: m: # $# $ ###
! 998: m: # ## $ ### #....#
! 999: m: # # $# # # # #....##
! 1000: m: # $ $ # #....###
! 1001: m: ##$ ### $ #....####
! 1002: m: # # $ ######
! 1003: m: # # # ######
! 1004: m: ####################
! 1005: 057 new-maze
! 1006: m: ####################
! 1007: m: #@ ### # # #
! 1008: m: # # # # $ $ #
! 1009: m: ##### # $ $#$# #
! 1010: m: #.#..# ##$ $ #
! 1011: m: #..... $ # ##
! 1012: m: #..... ###$##$###
! 1013: m: #.#..# $ # #
! 1014: m: ##### # #$ $ #
! 1015: m: ##### # $ $ $ #
! 1016: m: ##### # # # # #
! 1017: m: ####################
! 1018: 058 new-maze
! 1019: m: ####################
! 1020: m: ##... ## # # #
! 1021: m: #.... $ ## #
! 1022: m: #....# # #$###$ #
! 1023: m: #...# # # #
! 1024: m: ##.# #$ # $## #
! 1025: m: # # # $ $ ### $ #
! 1026: m: # $ $ # # ## #
! 1027: m: ## # ## #$$# $# # #
! 1028: m: # # $ $ # ##
! 1029: m: # # # # @#
! 1030: m: ####################
! 1031: 059 new-maze
! 1032: m: ####################
! 1033: m: # # #@# ## #####
! 1034: m: # # # $ $ #####
! 1035: m: # # ###### $ ###
! 1036: m: # # #....# $$ #
! 1037: m: ##$##$##....# #
! 1038: m: # #....##$##$##
! 1039: m: # $$ #....# #
! 1040: m: # $ $ # # ### #
! 1041: m: ##### $ $ $ #
! 1042: m: ##### # # # ##
! 1043: m: ####################
! 1044: 060 new-maze
! 1045: m: ####################
! 1046: m: # ###..### #
! 1047: m: # $$ ###..### $@ #
! 1048: m: # # ##......# $ #
! 1049: m: # #......# $ #
! 1050: m: #### ###..######$ #
! 1051: m: # $$$ #..# # #
! 1052: m: # $# $ $ $$ #$ #
! 1053: m: # # ## $ ## # #
! 1054: m: # $ $ ## $ $ #
! 1055: m: # # ## ## # #
! 1056: m: ####################
! 1057: 061 new-maze
! 1058: m: ####################
! 1059: m: # # # # # # #
! 1060: m: # @# # ## $ $ ##
! 1061: m: #### # # # $ #
! 1062: m: # # ## #$ ## ## #
! 1063: m: # $ $ $ #
! 1064: m: #..###$$## $##$ ## #
! 1065: m: #..#.# # $ $ # #
! 1066: m: #....# $$ ##$ ####
! 1067: m: #....# ##### #
! 1068: m: #...### ## #
! 1069: m: ####################
! 1070: 062 new-maze
! 1071: m: ####################
! 1072: m: #....# # # #
! 1073: m: #....# # $ $ #
! 1074: m: #.... ## $# # $#$ #
! 1075: m: #...# $ $# $ #
! 1076: m: #..#### # $ $$ #
! 1077: m: # #### #### ###
! 1078: m: # # # #
! 1079: m: # ## # $ # $ $ #
! 1080: m: # ## $ ## $ $ #
! 1081: m: # @# # # #
! 1082: m: ####################
! 1083: 063 new-maze
! 1084: m: ####################
! 1085: m: #....### #
! 1086: m: #....##### # #$# ##
! 1087: m: #....### #$ $ #
! 1088: m: #....### $ #$$##
! 1089: m: ## #### $# #$ $ #
! 1090: m: ## #### $ $ # #
! 1091: m: #@ ####$###$## $ #
! 1092: m: ## # # $ #
! 1093: m: ## ### # $ ####
! 1094: m: ######## # # #
! 1095: m: ####################
! 1096: 064 new-maze
! 1097: m: ####################
! 1098: m: # # @#...###
! 1099: m: # # ##...##
! 1100: m: # # # ##$## ## ....#
! 1101: m: # $ # $$$ ....#
! 1102: m: ###$### $$ ### ##.#
! 1103: m: # $ # # ####
! 1104: m: # $ # ### # # #
! 1105: m: ## #$## $ $$ #
! 1106: m: # $ ## # # # #
! 1107: m: # # # # #
! 1108: m: ####################
! 1109: 065 new-maze
! 1110: m: ####################
! 1111: m: # # #...#@ #
! 1112: m: # # ....# #
! 1113: m: # $ # #....# #
! 1114: m: # ##$#### ##....# #
! 1115: m: # $ $ # #...# #
! 1116: m: # $$ # # # $$ #
! 1117: m: ### $$$# $$ $ #
! 1118: m: # $ # # # $# #
! 1119: m: # $# # $ #
! 1120: m: # # # # # #
! 1121: m: ####################
! 1122: 066 new-maze
! 1123: m: ####################
! 1124: m: #####@###.##...## #
! 1125: m: #####$ ..#...# #
! 1126: m: #### ......# $ #
! 1127: m: ### $ #.....## # ##
! 1128: m: ## $$# ##### $ $ #
! 1129: m: ## $# $ ## $$ #
! 1130: m: ## # # # $ $ #
! 1131: m: ## $$ ### #$## #
! 1132: m: ## $# $ $ $ ##
! 1133: m: ### # # ###
! 1134: m: ####################
! 1135: 067 new-maze
! 1136: m: ####################
! 1137: m: #@ # # #
! 1138: m: ## ### ## #### # ##
! 1139: m: # # # $$ #
! 1140: m: # # # # $ # $ ## ##
! 1141: m: # $ # #$$ # #
! 1142: m: # ### # ## ##
! 1143: m: #..#.# $ # $ # #
! 1144: m: #..#.# $ # ## $$ #
! 1145: m: #....## $$ $ # #
! 1146: m: #.....## # #
! 1147: m: ####################
! 1148: 068 new-maze
! 1149: m: ####################
! 1150: m: # # # # ##
! 1151: m: # $# $ $ ##...$ $ #
! 1152: m: # $ # ##....# $ #
! 1153: m: # ## $ ##....# $ #
! 1154: m: # $ #....## $ #
! 1155: m: # $## #...# #
! 1156: m: # $$$##$## ### ##
! 1157: m: # # # # # # #
! 1158: m: # $ # $ ## #
! 1159: m: # # #@ #
! 1160: m: ####################
! 1161: 069 new-maze
! 1162: m: ####################
! 1163: m: # # # # # # #
! 1164: m: # $ $ $ #
! 1165: m: ## # #$###$## ## #
! 1166: m: # $ $ # $ #
! 1167: m: # ###$##$# # $ #
! 1168: m: # # $ $ ###### $#
! 1169: m: # $ $$ $ #@#.#...#
! 1170: m: # # # # #.#...#
! 1171: m: # ########## #.....#
! 1172: m: # #.....#
! 1173: m: ####################
! 1174: 070 new-maze
! 1175: m: ####################
! 1176: m: # # # ## ##
! 1177: m: # $# $ # ## #
! 1178: m: # $ $ #..# $ #
! 1179: m: # $ $ #....# # ##
! 1180: m: # $# #......### $ #
! 1181: m: # # #....# #$ #
! 1182: m: # $ ####..# # #
! 1183: m: ## $ ## # # $ $##
! 1184: m: ### $ $#@$ $# #
! 1185: m: #### # # #
! 1186: m: ####################
! 1187: 071 new-maze
! 1188: m: ####################
! 1189: m: # ....# ####
! 1190: m: # .... #
! 1191: m: # # ########## #
! 1192: m: # #$ # ###..#
! 1193: m: # $ #$$### #..#
! 1194: m: # $ ### $ $ #..#
! 1195: m: # $ # $ $ # ##..#
! 1196: m: # # $$ # $ ## ##
! 1197: m: #@## $# $ $ ##
! 1198: m: ## ## # ###
! 1199: m: ####################
! 1200: 072 new-maze
! 1201: m: ####################
! 1202: m: # # #@ # #
! 1203: m: # $$ #$$# # # ## #
! 1204: m: # # $ $ #$$ # #
! 1205: m: ## # # # # # # #
! 1206: m: # ## # #
! 1207: m: # # $ # # # #
! 1208: m: # $ #$ # # $ #..#
! 1209: m: ##$ # #### #...#
! 1210: m: # $ #....#
! 1211: m: # # # #.....#
! 1212: m: ####################
! 1213: 073 new-maze
! 1214: m: ####################
! 1215: m: # # ##### #
! 1216: m: ## $ # #### $ #
! 1217: m: #### $$ #..# # #
! 1218: m: # $ $ ##..#### ##
! 1219: m: # $ ###.... $$ #
! 1220: m: # #$# ....# # $ #
! 1221: m: # # # $ ..###$# #
! 1222: m: # # $ #..# ## #
! 1223: m: # $# #### # $##
! 1224: m: # # # @# ##
! 1225: m: ####################
! 1226: 074 new-maze
! 1227: m: ####################
! 1228: m: # # # # #@#
! 1229: m: # $ $ # $ # #
! 1230: m: ##$# $### # $$# #
! 1231: m: # # #.### #$ $ #
! 1232: m: # #$#....# # ### #
! 1233: m: # $ #.....## # #
! 1234: m: ##$ #.#....#$$ $ #
! 1235: m: # ######..## # # #
! 1236: m: # $ $ ### #
! 1237: m: # # # # #
! 1238: m: ####################
! 1239: 075 new-maze
! 1240: m: ####################
! 1241: m: # # # # #@## # #
! 1242: m: # $ #
! 1243: m: # ##$# ##### $ # ##
! 1244: m: ## ##.....# # #
! 1245: m: ##$##$#.....###$#$ #
! 1246: m: # # ##.....# # ##
! 1247: m: # $ ##..## # #
! 1248: m: # $ # $ $ $$$ #
! 1249: m: ## $ $# # # $ #
! 1250: m: # ## # # #
! 1251: m: ####################
! 1252: 076 new-maze
! 1253: m: ###### #####
! 1254: m: # # # #
! 1255: m: # $ #### $ #
! 1256: m: # $ $ #
! 1257: m: # ###@###$ #
! 1258: m: ########## ###
! 1259: m: #.. ## #
! 1260: m: #.. ##$ #
! 1261: m: #.. ## $ #
! 1262: m: #.. ## $ #
! 1263: m: #.. $ $ #
! 1264: m: ### #########
! 1265: m: ####
! 1266: 077 new-maze
! 1267: m: ###########
! 1268: m: # #
! 1269: m: # $ $ #
! 1270: m: ###### # $ ##### #
! 1271: m: # ##### $ ##$#
! 1272: m: # $ $ #
! 1273: m: # ## ## #
! 1274: m: # ##@##### ## #
! 1275: m: # #### # ## ##
! 1276: m: #....# # $ #
! 1277: m: #....# # #
! 1278: m: ###### #######
! 1279: 078 new-maze
! 1280: m: #############
! 1281: m: # #
! 1282: m: # ### $$ #
! 1283: m: # # $ $ #
! 1284: m: # $####$######
! 1285: m: # $ ## #####
! 1286: m: # $$ $ ...#
! 1287: m: ### ## $$# ...#
! 1288: m: # ## # ...#
! 1289: m: # # ...#
! 1290: m: ###@#############
! 1291: m: ###
! 1292: 079 new-maze
! 1293: m: #################
! 1294: m: ###@## ...#
! 1295: m: # # ...#
! 1296: m: # $ # ...#
! 1297: m: # $$ # ...#
! 1298: m: ## $ ###$##########
! 1299: m: # ### $ #
! 1300: m: ## $ $ #
! 1301: m: # $ # $ #
! 1302: m: # $ # #
! 1303: m: # $ # #
! 1304: m: # # #
! 1305: m: ###########
! 1306: 080 new-maze
! 1307: m: #####
! 1308: m: ########## #
! 1309: m: # # #
! 1310: m: # $ $ $$ #
! 1311: m: # ##### ## $ #
! 1312: m: #$$ #$## $ #
! 1313: m: # ### # ##$ #
! 1314: m: ###### ### $ $ #
! 1315: m: #.... ## #
! 1316: m: #.... ######
! 1317: m: #.... #
! 1318: m: ###########@##
! 1319: m: ###
! 1320: 081 new-maze
! 1321: m: ######
! 1322: m: #### #
! 1323: m: # ## #
! 1324: m: # $ #
! 1325: m: ### #### ########
! 1326: m: # $ $ ## ...#
! 1327: m: # $$ $$ ...#
! 1328: m: # $ $## ...#
! 1329: m: ##@## ## ## ...#
! 1330: m: ### $ ########
! 1331: m: # $$ #
! 1332: m: # # #
! 1333: m: #########
! 1334: 082 new-maze
! 1335: m: ####### #########
! 1336: m: # # # ## #
! 1337: m: # ### # # $ #
! 1338: m: # # $ ### $ #
! 1339: m: # $$ ##$ #
! 1340: m: # #### ## #
! 1341: m: #@############ ##
! 1342: m: ###.. #####$ #
! 1343: m: #.. #### #
! 1344: m: #.. $$ #
! 1345: m: #.. #### $ #
! 1346: m: #.. # # #
! 1347: m: ######## #####
! 1348: 083 new-maze
! 1349: m: #######
! 1350: m: # ##########
! 1351: m: # # # ##
! 1352: m: # $ # $ $ #
! 1353: m: # $ # $ ## #
! 1354: m: # $$ ##$ $ #
! 1355: m: ## # ## #######
! 1356: m: ## # ## ...#
! 1357: m: # #$ ...#
! 1358: m: # $$ ...#
! 1359: m: # ##@# ...#
! 1360: m: ################
! 1361: 084 new-maze
! 1362: m: ############
! 1363: m: # # ##
! 1364: m: # $ $ # ######
! 1365: m: #### ##### #
! 1366: m: #.. # #### #
! 1367: m: #.#### #### #
! 1368: m: #.... # $ ####
! 1369: m: # ...# # $$$# ##
! 1370: m: ###.#### ## $@$ #
! 1371: m: # ##### $ # #
! 1372: m: # #.# $ $###$ #
! 1373: m: # #.######## # $ #
! 1374: m: # #.. ## $ #
! 1375: m: # # ####### $ # # #
! 1376: m: # # # ##
! 1377: m: ##### ##########
! 1378: 085 new-maze
! 1379: m: ####################
! 1380: m: # # # #
! 1381: m: # $ ## ### ##
! 1382: m: ##### ## $ $ #
! 1383: m: ##..## # # $ # # #
! 1384: m: #.... $ ##$# ##
! 1385: m: #.... $##### #$##
! 1386: m: ##..# # # # $ #
! 1387: m: ###.# # $ $ # @#
! 1388: m: ## $ $ # # ####
! 1389: m: ## ###########
! 1390: m: ####################
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>