├── LICENSE.md ├── README.md ├── codemeta.json ├── tree.txt └── zork ├── act2.27 ├── dung.56 ├── lcf ├── act1.37 ├── act1.38 ├── act2z.27 ├── act3.13 ├── defs.63 ├── dungz.56 ├── makstr.7 ├── makstr.nbin ├── nact2.nbin ├── ndefs.nbin ├── nnp.nbin ├── np.92 ├── np.93 ├── nrooms.nbin ├── rooms.98 └── rooms.99 └── madman ├── madadv.help ├── madadv.save └── omadad.save /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT No Attribution 2 | 3 | To the extent that MIT holds rights to these files, 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Zork source code, 1977 2 | This repository contains the source code for a 1977 version of [Zork](https://en.wikipedia.org/wiki/Zork), an interactive fiction game created at MIT by Tim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling. The files are a part of the [Massachusetts Institute of Technology, Tapes of Tech Square (ToTS) collection](https://archivesspace.mit.edu/repositories/2/resources/1265) at the MIT Libraries Department of Distinctive Collections (DDC). 3 | ## File organization and details 4 | ### [zork](../master/zork) 5 | The files within this directory are the Zork specific files from the ```9005196.tap``` tape image file within the ```/tots/recovered/vol2``` directory of the [ToTS collection](https://archivesspace.mit.edu/repositories/2/resources/1265). Most files are written in the MDL programming language and were originally created on a PDP-10 timeshare computer running the ITS operating system. 6 | 7 | The files were extracted from the tape image using the [itstar program](https://github.com/PDP-10/itstar). The filenames have been adapted to Unix conventions, as per the itstar translation. The original filename syntax would be formatted like, ```LCF; ACT1 37```, for example. All files have been placed into this artificial zork directory for organizational purposes. 8 | 9 | The [```lcf```](../master/zork/lcf) and [```madman```](../master/zork/madman) directories contain the source code for the game. 10 | 11 | The [```act2.27```](../master/zork/act2.27) and [```dung.56```](../master/zork/dung.56) files outside of the two main directories, are the decrypted versions of [```act2z.27```](../master/zork/lcf/act2z.27) and [```dungz.56```](../master/zork/lcf/dungz.56). The decrypted versions were created recently and added to this directory by DDC digital archivist, Joe Carrano, for researcher ease of access. 12 | 13 | Files with extensions ```.nbin``` and ```.save``` are binary compiled files. 14 | 15 | There was a ```zork.log``` file within the [```madman```](../master/zork/madman) directory that detailed who played Zork at the time of creation. DDC excluded this file from public release to protect the privacy of those named. 16 | 17 | ### [codemeta.json](../master/codemeta.json) 18 | This file is metadata about the Zork files, using the [CodeMeta Project](https://codemeta.github.io/) schema. 19 | ### [LICENSE.md](../main/LICENSE.md) 20 | This file describes the details about the rights to these files. See [Rights](#rights) for additional information. 21 | ### [README.md](../master/README.md) 22 | This file is the readme detailing the content and context for this repository. 23 | ### [tree.txt](../master/tree.txt) 24 | A file tree listing the files in the [```zork```](../master/zork) directory showing the original file timestamps as extracted from the tape image. 25 | 26 | ## Preferred Citation 27 | [filename], Zork source code, 1977, Massachusetts Institute of Technology, Tapes of Tech Square (ToTS) collection, MC-0741. Massachusetts Institute of Technology, Department of Distinctive Collections, Cambridge, Massachusetts. [swh:1:dir:ab9e2babe84cfc909c64d66291b96bb6b9d8ca15](https://archive.softwareheritage.org/swh:1:dir:ab9e2babe84cfc909c64d66291b96bb6b9d8ca15) 28 | ## Rights 29 | To the extent that MIT holds rights in these files, they are released under the terms of the [MIT No Attribution License](https://opensource.org/licenses/MIT-0). See the ```LICENSE.md``` file for more information. Any questions about permissions should be directed to [permissions-lib@mit.edu](mailto:permissions-lib@mit.edu) 30 | ## Acknowledgements 31 | Thanks to [Lars Brinkhoff](https://github.com/larsbrinkhoff) for help with identifying these files and with extracting them using the itstar program mentioned above. 32 | -------------------------------------------------------------------------------- /codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "license": "https://spdx.org/licenses/MIT-0", 5 | "codeRepository": "https://github.com/MITDDC/zork", 6 | "dateCreated": "1977-12-16", 7 | "name": "Zork", 8 | "description": "1977 version of Zork, an interactive fiction game created at MIT by Tim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling.", 9 | "applicationCategory": "Game", 10 | "developmentStatus": "unsupported", 11 | "isPartOf": "https://archivesspace.mit.edu/repositories/2/resources/1265", 12 | "keywords": [ 13 | "Interactive Fiction", 14 | "Computer Science" 15 | ], 16 | "programmingLanguage": [ 17 | "MDL" 18 | ], 19 | "operatingSystem": [ 20 | "ITS" 21 | ], 22 | "author": [ 23 | { 24 | "@type": "Person", 25 | "givenName": "Tim", 26 | "familyName": "Anderson" 27 | }, 28 | { 29 | "@type": "Person", 30 | "givenName": "Marc", 31 | "familyName": "Blank" 32 | }, 33 | { 34 | "@type": "Person", 35 | "givenName": "Bruce", 36 | "familyName": "Daniels" 37 | }, 38 | { 39 | "@type": "Person", 40 | "givenName": "Dave", 41 | "familyName": "Lebling" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /tree.txt: -------------------------------------------------------------------------------- 1 | . 2 | ├── [May 1 16:09] codemeta.json 3 | ├── [May 1 15:16] README.md 4 | ├── [May 5 14:19] tree.txt 5 | └── [May 5 14:14] zork 6 | ├── [Apr 16 14:43] act2.27 7 | ├── [Apr 16 14:44] dung.56 8 | ├── [Apr 16 14:39] lcf 9 | │   ├── [Dec 10 1977] act1.37 10 | │   ├── [Dec 15 1977] act1.38 11 | │   ├── [Dec 12 1977] act2z.27 12 | │   ├── [Dec 10 1977] act3.13 13 | │   ├── [Dec 14 1977] defs.63 14 | │   ├── [Dec 12 1977] dungz.56 15 | │   ├── [Dec 14 1977] makstr.7 16 | │   ├── [Dec 14 1977] makstr.nbin 17 | │   ├── [Dec 12 1977] nact2.nbin 18 | │   ├── [Dec 14 1977] ndefs.nbin 19 | │   ├── [Dec 15 1977] nnp.nbin 20 | │   ├── [Dec 14 1977] np.92 21 | │   ├── [Dec 14 1977] np.93 22 | │   ├── [Dec 14 1977] nrooms.nbin 23 | │   ├── [Dec 12 1977] rooms.98 24 | │   └── [Dec 13 1977] rooms.99 25 | └── [May 5 14:14] madman 26 | ├── [Dec 14 1977] madadv.help 27 | ├── [Dec 12 1977] madadv.save 28 | └── [Dec 4 1977] omadad.save 29 | 30 | 3 directories, 24 files 31 | -------------------------------------------------------------------------------- /zork/act2.27: -------------------------------------------------------------------------------- 1 | 2 | 3 | ) (PRSACT <1 ,PRSVEC>) (WIN ,WINNER) O) 4 | #DECL ((DUMMY?) (PRSACT) VERB (WIN) ADV (O) OBJECT) 5 | WALK-IN!-WORDS> 6 | ON!-WORDS> 7 | >> 8 | > > 9 | <1? >> 10 | > > 11 | <1? >>> 12 | " in a room which reeks of coal gas. 18 | Fortunately, there is justice in the world.">) 19 | ( "in here.">)> 22 | 23 | > 24 | >)>)>> 25 | 26 | )) 27 | #DECL ((PRSACT) VERB) 28 | WALK-IN!-WORDS> 29 | >>> 30 | ) 31 | (<==? .PRSACT ,LOOK!-WORDS> 32 | 34 | > 35 | >)>> 38 | 39 | ) 41 | 44 | 47 | >>> 48 | >>> 49 | > 50 | 51 | T> 52 | 53 | >> > 57 | 58 | >>> 59 | 60 | 70 | > 71 | 72 | 73 | 74 | ) (TB ) 75 | (TOP ) (BOT ) 76 | (FB ) (CT ,CAGE-TOP!-FLAG) 77 | (HERE ,HERE) (DUMMY ,DUMMY)) 78 | #DECL ((PRSACT) VERB (FB TB) OBJECT (TOP BOT) ROOM (CT) 79 | (HERE) ROOM (DUMMY) ) 80 | 81 | >) 83 | ( 84 | 85 | 86 | 87 | 88 | )>) 89 | (<==? .PRSACT ,LOWER!-WORDS> 90 | 91 | >) 92 | ( 93 | 94 | 95 | 96 | 97 | > 98 | T)>) 99 | (<==? .PRSACT ,TAKE!-WORDS> 100 | > 101 | <==? .HERE .BOT>>> 102 | ) 103 | ()>)>> 104 | 105 | )) 106 | #DECL ((PRSACT) VERB) 107 | 108 | 116 | > 117 | ) 118 | ()>)>> 119 | 120 | ) (MACH )) 122 | #DECL ((PRSACT) VERB (MACH) OBJECT (DUMMY) ) 123 | > 125 | OPEN!-WORDS> 127 | 128 | >) 129 | ( 130 | )>) 131 | (<==? CLOSE!-WORDS> 132 | 133 | 134 | > 135 | T) 136 | (>)>) 137 | (<==? .PRSACT ,TAKE!-WORDS>)>)>> 138 | 139 | ) (C ) 140 | (IMP <3 ,PRSVEC>) D (MACH ) 141 | (SCREW )) 142 | #DECL ((PRSACT) VERB (IMP) OBJECT (MACH SCREW C D) OBJECT) 143 | 144 | 145 | 146 | ) 148 | ( 153 | > 154 | >> 157 | > 160 | !)> 161 | ) 162 | (>> 163 | >)>) 164 | (T)>)>) 165 | ( " won't do.">)>)>> 166 | 167 | ) (M )) 168 | #DECL ((G) OBJECT (M) ) 169 | >> 171 | > 172 | )>> 175 | 176 | >> 177 | 178 | > 180 | ) 181 | (>)> 182 | > 183 | > 184 | 185 | )>> 186 | 187 | 188 | > 190 | >) 191 | ()>> 192 | 193 | )) 194 | #DECL ((PRSACT) VERB) 195 | WAVE!-WORDS> 196 | > 197 | <==? ,HERE >> 198 | 199 | ,OVISON> 200 | 204 | ) 205 | ( 207 | >)>) 208 | (<==? ,HERE > 209 | > 210 | ) 214 | ()>)>> 216 | 217 | )) 218 | #DECL ((PRSACT) VERB) 219 | 220 | 224 | ) 227 | ()>)>> 229 | 230 | )) 231 | #DECL ((PRSO) OBJECT) 232 | >) 233 | ( 234 | " is slow and tedious.">) 236 | ( " is silly.">)>> 238 | 239 | ) (HERE ,HERE) (PRSI <3 ,PRSVEC>) 240 | (DBOAT )) 241 | #DECL ((DBOAT) OBJECT (PRSACT) VERB (HERE) ROOM (PRSI) ) 242 | INFLA!-WORDS> 243 | ) 245 | (<==? PLUG!-WORDS> 246 | > 247 | 249 | > 250 | 251 | >) 252 | (> 253 | .HERE>)>) 254 | ()>)>> 255 | 256 | ) 257 | "AUX" (PRSACT <1 ,PRSVEC>) (RBOAT ) 258 | (IBOAT ) (HERE ,HERE)) 259 | #DECL ((ARG) (PRSACT) VERB (IBOAT RBOAT) OBJECT (HERE) ROOM) 260 | ) 261 | (<==? .PRSACT ,BOARD!-WORDS> 262 | > 263 | 265 | 266 | .HERE> 267 | T)>) 268 | (<==? .PRSACT ,DISEM!-WORDS> 269 | >> 270 | >) 272 | (<==? DEFLA!-WORDS> 273 | .RBOAT> 274 | ) 276 | (>> 277 | ) 279 | ( 281 | 282 | 283 | )>)>> 284 | 285 | ) (IBOAT ) 286 | (RBOAT ) (HERE ,HERE)) 287 | #DECL ((PRSACT) VERB (IBOAT RBOAT) OBJECT (HERE) ROOM) 288 | INFLA!-WORDS> 289 | >> 290 | ) 292 | ( > 293 | 295 | > 296 | 297 | ) 298 | ()>)>> 300 | 301 | ,LOOK!-WORDS>) 303 | ()>> 306 | 307 | 308 | 309 | ) (HERE ,HERE)) 310 | #DECL ((PRSOBJ) OBJECT (HERE) ROOM) 311 | ) 312 | (> 313 | >> 314 | ".">>) 316 | ( 317 | >>> 318 | 319 | > 322 | > 323 | > 324 | 325 | )>> 327 | 328 | > 330 | ,BUOY-FLAG!-FLAG 331 | 333 | >>> 334 | 335 | ) (SHOV ) 336 | (HERE ,HERE) CNT) 337 | #DECL ((PRSACT) VERB (SHOV) OBJECT (HERE) ROOM (CNT) FIX) 338 | DIG!-WORDS> 339 | <==? .SHOV <2 ,PRSVEC>>> 340 | >>> 341 | 342 | 343 | ) 344 | (<==? .CNT 4> 345 | 346 | ,OVISON> 347 | ) 348 | () 349 | (>)>)>> 350 | 351 | ) (SHOV ) 352 | (HERE ,HERE) CNT) 353 | #DECL ((PRSACT) VERB (SHOV) OBJECT (HERE) ROOM (CNT) FIX) 354 | DIG!-WORDS> 355 | <==? <2 ,PRSVEC> .SHOV>> 356 | > 357 | >>> 358 | 359 | ) 360 | (>)>) 361 | ()>)>> 363 | 364 | 368 | 369 | 373 | > 374 | 375 | > 377 | ) 383 | ()>> 385 | 386 | 390 | > 391 | 392 | ) 394 | 395 | ) 397 | (>)>> 398 | 399 | 400 | )) 401 | #DECL ((PRSA) VERB) 402 | 403 | ) 409 | (<==? .PRSA ,FIND!-WORDS> 410 | )>> 414 | 415 | > 416 | 417 | > 418 | 419 | ) 420 | "AUX" (PRSVEC ,PRSVEC) 421 | (BALL ) (PRSA <1 .PRSVEC>) 422 | (PRSO <2 .PRSVEC>) (CONT ) M 423 | (BINF ,BINF!-FLAG) BLABE) 424 | #DECL ((ARG) (BLABE BALL CONT RECEP) OBJECT (PRSA) VERB 425 | (PRSO) (M) > 426 | (PRSVEC) (BINF) 427 | (M) ANY ROOM>>) 428 | 429 | 430 | 435 | " burning in the receptacle.">) 436 | ()> 437 | )>)> 439 | .BALLACT>)> 440 | 441 | 442 | ATOM> 444 | >> 445 | 447 | ) 448 | (ELSE 449 | ,RMUNGBIT>> 450 | >> 451 | .BALLACT>)>) 452 | ( 454 | )>) 455 | ( 456 | <==? ,BINF!-FLAG .PRSO>> 457 | 460 | "."> 461 | ) 462 | ( 463 | <==? <3 .PRSVEC> .CONT> 464 | >>> 465 | 466 | ) 467 | ( .BALLACT>)>)> 468 | 469 | > 470 | 473 | " burns inside the receptacle."> 474 | 20>>> 475 | 476 | > 477 | 478 | 481 | 482 | > 485 | !)> 486 | )> 487 | 488 | 489 | )>)>) 490 | ( 491 | > 492 | )> 494 | <>) 495 | (<==? .PRSA ,C-INT!-WORDS> 496 | ,BINF!-FLAG> 497 | >>> 498 | ) 499 | ()>)>> 500 | 501 | > 502 | 503 | 504 | ) M 506 | (IN? <==? .BALL>) (BL ,BLOC) 507 | FOO) 508 | #DECL ((BALL) OBJECT (HERE BL) ROOM (M) (S) STRING 509 | (IN?) (FOO) CEVENT) 510 | 511 | >>> 512 | "4"> 513 | 514 | 515 | 516 | > 517 | ) 522 | ()> 524 | >) 525 | (> 0 4 .S> 526 | FIX> 1> CHARACTER>> 527 | >> 529 | 530 | ) 531 | ()>)>) 532 | (>>> 533 | 534 | > 535 | >> 537 | 538 | ) 539 | ( 540 | )>) 542 | (.IN? 543 | >> 544 | 545 | ) 546 | ()>> 547 | 548 | >> 551 | > 552 | 553 | >>> 554 | 555 | 556 | 557 | ) M (BL ,BLOC) 558 | (IN? <==? .BALL>) FOO) 559 | #DECL ((BALL) OBJECT (HERE BL) ROOM (M) (S) STRING 560 | (IN?) (FOO) CEVENT) 561 | 562 | >>> 563 | "1"> 564 | >> 566 | 568 | ) 569 | (T 570 | 571 | ,BLOC> 572 | > 573 | >> 574 | )>) 576 | ()>) 577 | (> 0 4 .S> 578 | FIX> 1> CHARACTER>> 579 | >> 581 | 582 | ) 583 | ()>)>)>> 584 | 585 | ) (PRSO <2 .PV>) 586 | (PRSI <3 .PV>) (BINT ,BINT)) 587 | #DECL ((BINT) CEVENT (PV) VECTOR (PRSA) VERB (PRSO PRSI) PRSOBJ) 588 | 589 | > 590 | > 591 | <==? .PRSI >>> 592 | 593 | 594 | )>) 595 | ( 596 | <==? .PRSO >> 597 | >> 599 | > 600 | ) 601 | ()>)>> 602 | 603 | ) (OBJ <1 >)) 604 | #DECL ((R OBJ) OBJECT) 605 | >> 606 | " has burned out, and the cloth 608 | bag starts to collapse."> 609 | > 610 | T> 611 | 612 | > 613 | 614 | )) 615 | #DECL ((PRSA) VERB) 616 | 617 | 622 | " 623 | Imbedded in the far wall, there is a rusty old box. It appears that 624 | the box is somewhat damaged, since an oblong hole has been chipped 625 | out of the front of it.") 626 | (" 627 | On the far wall is a rusty box, whose door has been blown off.")>>)>> 628 | 629 | )) 630 | #DECL ((PRSA) VERB) 631 | 632 | ) 633 | (<==? .PRSA ,OPEN!-WORDS> 634 | ) 635 | ()>) 636 | (<==? .PRSA ,CLOSE!-WORDS> 637 | ) 638 | ()>) 639 | (<==? .PRSA ,BLAST!-WORDS> )>> 640 | 641 | 644 | 645 | )) 646 | #DECL ((PRSA) VERB) 647 | )>> 648 | 649 | ) (FUSE ) 650 | (BRICK ) BRICK-ROOM OC) 651 | #DECL ((PRSA) VERB (FUSE BRICK) OBJECT (BRICK-ROOM) 652 | (OC) ) 653 | 654 | 655 | ]>) 656 | (<==? .PRSA ,C-INT!-WORDS> 657 | 658 | .BRICK> 659 | 660 | > 661 | >) 662 | (>)> 663 | > 664 | 665 | 667 | ) 668 | (<==? .BRICK-ROOM > 669 | 670 | > 671 | 672 | >> 673 | ,OVISON> 674 | ,OOPEN? T> 675 | )>) 676 | ( 677 | 678 | 679 | 680 | 682 | )>> 683 | > 684 | > 685 | 686 | >> 688 | >> 689 | ,OCONTENTS ()>)>)>) 690 | (> <==? ,HERE >> 691 | )>)>> 692 | 693 | 696 | 698 | "The house shakes, and the ceiling of the room you're in collapses, 699 | turning you into a pancake.") 700 | ("The room trembles and 50,000 pounds of rock fall on you, turning you 701 | into a pancake.")>>) 702 | ( 706 | > 707 | >)> 708 | > ,HERE> 709 | "The way is blocked by debris from an explosion.">> 710 | 711 | )) 712 | #DECL ((RM) ROOM) 713 | 714 | 715 | > 717 | 718 | > 719 | .RM> 720 | > 721 | > 722 | 723 | 724 | ) 728 | ()>) 729 | (T 730 | )>) 733 | ()> 734 | > 735 | 736 | )) 737 | #DECL ((PRSA) VERB) 738 | 739 | 742 | >>) 743 | (<==? .PRSA ,LOOK!-WORDS> 744 | ,RMUNGBIT> 749 | " The way to the south is blocked by rubble.") 750 | (" There is a small door to the south.")>>)>> 751 | 752 | >) 754 | ()>> 755 | 756 | >> 758 | 763 | ,HERE>) 764 | ()>> 765 | 766 | >> 767 | 768 | ) (PRSO <2 .PV>)) 769 | #DECL ((PV) VECTOR (PRSA) VERB (PRSO) PRSOBJ) 770 | 771 | <==? .PRSA ,THROW!-WORDS>> 772 | 773 | 0> 774 | ". I don't believe 776 | I've ever seen one as beautiful. 'Follow me', he says, and a door 777 | appears on the west end of the ledge. Through the door, you can see 778 | a narrow chimney sloping steeply downward."> 779 | ) 780 | ( " in his rock-hard hands."> 783 | )>>) 784 | (<==? .PRSA ,C-INT!-WORDS> 785 | 788 | >) 789 | ( 791 | > 792 | )>> 793 | 794 | -------------------------------------------------------------------------------- /zork/lcf/act2z.27: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/act2z.27 -------------------------------------------------------------------------------- /zork/lcf/act3.13: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ) (VB <1 .PV>)) 6 | #DECL ((PV) (VB) VERB (BOTTL) OBJECT) 7 | 8 | <==? MUNG!-WORDS>> 9 | 13 | 14 | 15 | T)>> 16 | 17 | ) (NL ()) 18 | (LCASE )) 19 | #DECL ((PV) (VB) VERB (NL) 20 | (LCASE) OBJECT) 21 | 22 | 26 | > 27 | > 28 | > 29 | >> 30 | !.NL)>)> 31 | 35 | T)>> 36 | 37 | 38 | 39 | > 40 | 41 | ) 42 | "AUX" (PV ,PRSVEC) (PA <1 .PV>) (PO <2 .PV>) 43 | (W ) (BUCK )) 44 | #DECL ((ARG) (PV) VECTOR (PA) VERB 45 | (PO) (W BUCK) OBJECT) 46 | <>) 47 | ( 48 | > 49 | 50 | <>) 51 | (T)>>) 52 | (<==? .ARG READ-OUT> 53 | .BUCK> > 54 | 55 | 56 | .PV .BUCK> 57 | 58 | <>) 59 | ( .BUCK>> 60 | 61 | > 62 | .PV .BUCK>)>)>> 63 | 64 | )) 65 | #DECL ((R) ROOM (B) OBJECT (PV) VECTOR (PVS) ) 66 | > 67 | 68 | 69 | .B> 70 | 71 | )> 72 | > 73 | 74 | ,EAT!-WORDS> 77 | <==? <2 .PV> >> 78 | <==? .HERE >> 79 | 81 | 82 | > 83 | > 84 | 85 | >> 87 | > 88 | > 89 | )>> 90 | 91 | ) (PO <2 .PV>) (PI <3 .PV>) 92 | (RICE ) (OICE ) 93 | (BICE ) (HERE ,HERE) R) 94 | #DECL ((PV) VECTOR (PA) VERB (PI PO) 95 | (RICE OICE BICE) OBJECT (HERE R) ROOM) 96 | 97 | > 99 | ) 101 | (<==? .PI > 102 | "Evaporate") 105 | (<==? .PO .OICE> "Explode") 106 | ("Enlarge")> 107 | "'.">) 108 | ()>) 109 | ()>) 112 | ( >>> 113 | 114 | 115 | ) 116 | (<==? .PO .BICE> 117 | 118 | 119 | > 120 | > 121 | > 122 | 123 | 125 | 64>>> 126 | > 127 | ) 128 | ()>)>) 129 | ( 130 | <==? .PO .OICE> 131 | >>> 132 | 133 | ) 134 | ( 135 | <==? .PO .RICE> 136 | <==? .PI >> 137 | 138 | 140 | ,OVISON>)>> 141 | 142 | )) 143 | #DECL ((PV) (PA) VERB) 144 | 145 | 146 | ) 147 | ( 148 | <==? .PA ,THROW!-WORDS>> 149 | 150 | > 151 | 152 | )>> 153 | 154 | 157 | 158 | 162 | 163 | 168 | > 169 | 170 | 171 | 172 | ) (PO <2 .PV>) (HERE ,HERE) M) 173 | #DECL ((PV) VECTOR (PA) VERB (PO) (HERE) ROOM 174 | (M) > (FOO) CEXIT) 175 | 176 | ) 179 | ( ,CAROUSEL-FLIP!-FLAG> 180 | ) 181 | ( 183 | <>)>) 184 | (<==? .PA ,WALK!-WORDS> 185 | > 186 | 187 | <* 2 <+ 1 8>>>>>>> 189 | ) 190 | ( 12>>> 191 | >>> 192 | )>)>> 193 | 194 | )) 195 | #DECL ((PV) VECTOR (PA) VERB) 196 | 197 | )>> 207 | 208 | > 209 | 210 | > 211 | 212 | ) (PA <1 .PV>)) 213 | #DECL ((I) OBJECT (PV) VECTOR (PA) VERB) 214 | 215 | 216 | ) 218 | (<==? .PO > 219 | ) 221 | ( 222 | )>) 223 | (<==? .PO > 224 | > 226 | ) 227 | ()>) 228 | (<==? .PO > 229 | > 230 | > 231 | >> 232 | 234 | )>)>)>> 235 | 236 | 240 | 241 | > 242 | 243 | ) 244 | (R ) C FL RACT) 245 | #DECL ((PV) 246 | (PA) VERB (C) ROOM (R) OBJECT (FL) (RACT) ADV) 247 | <==? .PA ,TAKE!-WORDS>>> 248 | > 249 | 253 | ,HERE> 254 | >> 255 | 256 | 257 | > ,AROOM .C> 258 | 259 | > 260 | T) 261 | (ELSE 262 | ,OVISON> 263 | 264 | "You are stopped by a cloud of poisonous gas."> 265 | )>) 266 | (.FL 267 | ,OVISON> 268 | 273 | 274 | ,OVISON> 275 | ,HERE> 276 | T) 277 | (<==? .PA ,C-INT!-WORDS> 278 | 279 | "You are stopped by a cloud of poisonous gas."> 280 | )>> 281 | 282 | 283 | 284 | >)>> 286 | 287 | > 288 | ) (PO <2 .PV>) C CAGE 289 | (R ) RACT) 290 | #DECL ((C) ROOM (PA) VERB (PV) VECTOR (PO) 291 | (CAGE) OBJECT (R) OBJECT (RACT) ADV) 292 | <==? .PO >> 293 | 294 | 295 | 296 | >> 297 | > .C> 298 | 299 | 300 | 301 | ,TAKEBIT> 302 | 303 | 304 | > ,AROOM .C> 305 | ) 306 | ( <==? .PA ,DRINK!-WORDS>> 307 | ) 309 | (<==? .PA ,READ!-WORDS> 310 | ) 312 | ( <>) 313 | ()>> 315 | 316 | ) (PO <2 .PV>) 317 | (PI <3 .PV>) PP AA) 318 | #DECL ((AA) ADV (PV) VECTOR (PA) VERB (PP PO) OBJECT (PI) ) 319 | 320 | >> 321 | 322 | )> 323 | 326 | " 327 | and nods his head-like appendage in thanks.">) 328 | ( <==? .PA ,MUNG!-WORDS>> 329 | 332 | .PI) (.PO)>>)>> 333 | 334 | )) 335 | > 336 | ) 337 | ( "?">)>> 338 | 339 | > 341 | 342 | > 344 | 345 | > 347 | 348 | > 350 | -------------------------------------------------------------------------------- /zork/lcf/defs.63: -------------------------------------------------------------------------------- 1 | > 2 | 3 | ; "applicables" 4 | 5 | > 6 | 7 | ; "newtypes for parser" 8 | 9 | 10 | 11 | 12 | 13 | 14 | \ 15 | 16 | ;"generalized oflags tester" 17 | 18 | > FIX> 0>> 20 | > FIX> 0>> 22 |
>>> 24 | .BIT>>> 26 | >>> 28 | .BIT>>> 30 | .BIT>>> 32 | 33 | \ 34 | 35 | ; "room definition" 36 | 37 | ;"visited?" 43 | RLIGHT? ;"endogenous light source?" 44 | REXITS EXIT ;"list of exits" 45 | ROBJS ;"objects in room" 46 | RACTION RAPPLIC ;"room-action" 47 | RVARS ;"slot for use of room function" 48 | RVAL FIX ;"value for visiting" 49 | RBITS ;"random flags" 50 | RRAND ANY ;"random slot"> 51 | 52 | ;"flagword for : 53 | bit-name bit-tester" 54 | 55 | ;"on land" 56 | RWATERBIT <> ;"water room" 57 | RAIRBIT <> ;"mid-air room" 58 | RSACREDBIT <> ;"thief not allowed" 59 | RFILLBIT <> ;"can fill bottle here" 60 | RMUNGBIT <> ;"room has been munged" 61 | RBUCKBIT <> ;"this room is a bucket" 62 | RHOUSEBIT <> ;"This room is part of the house"> 63 | 64 | ; "exit" 65 | 66 | [REST ATOM ]>> 69 | 70 | ; "conditional exit" 71 | 72 | ;"description" 77 | CXACTION RAPPLIC ;"exit function"> 78 | 79 | ;"unusable exit description" 80 | 81 | \ 82 | 83 | ; "PARSER related types" 84 | 85 | ; "ACTION -- top level type for verbs" 86 | 87 | 92 | 93 | ; "VSPEC -- uvector of syntaxes for a verb" 94 | 95 | [REST SYNTAX]>> 98 | 99 | ; "SYNTAX -- a legal syntax for a sentence involving this verb" 100 | 101 | ;"(?)" 107 | SDRIVER ;"(?)"> 108 | 109 | ; "VARG -- types and locations of objects acceptable as args to verbs, 110 | these go in the SYN1 and SYN2 slots of a SYNTAX." 111 | 112 | ;"preposition that must precede(?) object" 116 | VWORD FIX ;"locations object may be looked for in"> 117 | 118 | ; "flagbit definitions for VWORD of a VARG" 119 | 120 | ;"look in AOBJS" 121 | VRBIT <> ;"look in ROBJS" 122 | VTBIT <> ;"no-take" 123 | VXBIT <> ;"(?) turned on by '=' in VARG spec"> 124 | 125 | ; "VTRNN -- test a bit in the VWORD slot of a VARG" 126 | 127 | > FIX> 0>> 129 | 130 | ; "VERB -- name and function to apply to handle verb" 131 | 132 | 136 | 137 | ; "ORPHANS -- mysterious vector of orphan data" 138 | 139 | 141 | 142 | 143 | 144 | >> 145 | 146 | 147 | 148 | 149 | 150 | > 151 | 152 | ; "prepositional phrases" 153 | 154 | 158 | 159 | \ 160 | 161 | ; "adventurer" 162 | 163 | ;"what he's carrying" 167 | ASCORE FIX ;"score" 168 | AVEHICLE ;"what he's riding in" 169 | AOBJ OBJECT ;"what he is" 170 | AACTION RAPPLIC ;"special action for robot, etc." 171 | ASTRENGTH FIX ;"fighting strength" 172 | ARAND ANY ;" ** reserved for future expansion ** " 173 | AFLAGS ;"flags THIS MUST BE SAME OFFSET AS OFLAGS!"> 174 | 175 | "bits in : 176 | bit-name bit-tester" 177 | 178 | 179 | 180 | ; "object" 181 | 182 | ;"synonyms" 186 | ODESC1 STRING ;"description when not carried" 187 | ODESC2 STRING ;"short description" 188 | ODESCO ;"description when untouched" 189 | OACTION RAPPLIC ;"object-action" 190 | OCONTENTS ;"list of contents" 191 | OCAN ;"what contains this" 192 | OFLAGS ;"flags THIS MUST BE SAME OFFSET AS AFLAGS!" 193 | OTOUCH? ;"has this been touched?" 194 | OLIGHT? FIX ;"light producer?" 195 | OFVAL FIX ;"value for finding" 196 | OTVAL FIX ;"value for putting in trophy case" 197 | ORAND ANY ;"random slot" 198 | OOPEN? ;"is this open?" 199 | OSIZE FIX ;"how big is it?" 200 | OCAPAC FIX ;"how much can it hold?" 201 | OADJS ;"adjectives for this" 202 | OROOM ;"what room its in" 203 | OREAD ;"reading material"> 204 | 205 | "bits in : 206 | bit-name bit-tester" 207 | 208 | ;"object not describable" 215 | DRINKBIT DRINKABLE? ;"object is drinkable" 216 | CONTBIT <> ;"object can be opened/closed" 217 | LIGHTBIT <> ;"object can provide light" 218 | VICBIT <> ;"object is victim" 219 | BURNBIT BURNABLE? ;"object is flammable" 220 | FLAMEBIT <> ;"object is on fire" 221 | TOOLBIT <> ;"object is a tool" 222 | TURNBIT <> ;"object can be turned" 223 | VEHBIT <> ;"object is a vehicle" 224 | FINDMEBIT <> ;"can be reached from a vehicle" 225 | SLEEPBIT <> ;"object is asleep" 226 | SEARCHBIT <> ;"allow multi-level access into this" 227 | SACREDBIT <> ;"thief can't take this" 228 | TIEBIT <> ;"object can be tied" 229 | ECHO-ROOM-BIT <> ;"nothing can be taken in echo room" 230 | ACTORBIT <> ;"object is an actor" 231 | WEAPONBIT <> ;"object is a weapon" 232 | FIGHTBIT FIGHTING? ;"object is in melee" 233 | VILLAIN <> ;"object is a bad guy" 234 | STAGGERED <> ;"object can't fight this turn" 235 | TRYTAKEBIT <> ;"object wants to handle not being taken" 236 | NO-CHECK-BIT <> ;"ignore checks (in put & drop): for EVERY and VALUA"> 237 | 238 | "extra stuff for flagword for objects" 239 | 240 | "complement of the visible bit" 241 | 242 | 243 | "can i be opened?" 244 | >> 245 | 246 | "complement of the bit state" 247 | >> 248 | 249 | "if object is a light or aflame, then flaming" 250 | >>> 252 | 253 | "if object visible and open or transparent, can see inside it" 254 | 256 | >>> 257 | 258 | \ 259 | 260 | ; "demons" 261 | 262 | 265 | "REST" 266 | HROOMS 267 | HROOM ROOM 268 | HOBJ OBJECT 269 | HFLAG ANY> 270 | 271 | ; "Clock interrupts" 272 | 273 | 276 | CFLAG 277 | CID ATOM> 278 | 279 | \ 280 | 281 | 282 | 283 | 284 | 285 | 287 | (STARS OBJECTS WEAPONS NASTIES) 288 | (PRSVEC) 289 | > 290 | (WINNER PLAYER) ADV (HERE) ROOM (INCHAN OUTCHAN) CHANNEL (DEMONS) LIST 291 | (MOVES DEATHS) FIX (DUMMY YUKS) 292 | (SWORD-DEMON) HACK> 293 | 294 | \ 295 | 296 | "UTILITY FUNCTIONS" 297 | 298 | "TO OPEN DOORS" 299 | 300 | >>> 302 | #DECL ((EL) < ATOM CEXIT>) 303 | >> T>>> 304 | 305 | >>> 307 | #DECL ((EL) < ATOM CEXIT>) 308 | >> <>>>> 309 | 310 | "APPLY AN OBJECT FUNCTION" 311 | 312 | )) 314 | > <>) 315 | ( ATOM> 316 | >>) 317 | (>)>>> 318 | 319 | "FLUSH AN OBJECT FROM A ROOM" 320 | 321 | (OROOM) ) 323 | > 324 | >>) 325 | (> 326 | >>) 327 | (> 328 | >>)> 329 | > 330 | >> 331 | 332 | SEGMENT>)>> 337 | 338 | > SEGMENT>)>> 343 | 344 | >>> 346 | 347 | > 350 | >>) 351 | ()>> 352 | 353 | (WINNER) ADV) 355 | 356 | )) 357 | #DECL ((Y) OBJECT) 358 | > 359 | .WINNER>>> 360 | .OBJS>> 361 | 362 | "ROB-ADV: TAKE ALL OF THE VALUABLES A HACKER IS CARRYING" 363 | 364 | ) 366 | 367 | 0> >> 369 | >> 370 | )>> 371 | > 372 | .NEWLIST> 373 | 374 | "ROB-ROOM: TAKE VALUABLES FROM A ROOM, PROBABILISTICALLY" 375 | 376 | (PROB) FIX) 378 | 379 | 0> 381 | > 382 | 383 | > 384 | 385 | 386 | ) 387 | ( ADV> 388 | .NEWLIST>>)>> 389 | > 390 | .NEWLIST> 391 | 392 | 395 | 0> )>> 397 | >> 398 | 399 | 402 | 404 | )>> 405 | >> 406 | 407 | 410 | >> 412 | )>> 413 | >> 414 | 415 | ) (DEMS ,DEMONS)) 416 | #DECL ((ID) STRING (OBJ) OBJECT (DEMS) ) 417 | 418 | .OBJ> )>> 420 | .DEMS>> 421 | 422 | >>>> 424 | 425 | >> 427 | 428 | > 430 | 431 | ) 433 | 434 | 435 | "NnfF">>) 437 | (T 438 | "TtYy">)>> 439 | 440 | )) 441 | 443 | .MUMBLE>) 445 | (>)>) 446 | (T )>> 447 | 448 | )) #DECL ((FN) ) 449 | ) 451 | ( 452 | ) 454 | ()>) 455 | ( 456 | 457 | ) 458 | ()>>> 459 | 460 | "OLD MAZER" 461 | 462 | 463 | 464 | 465 | 466 | > 467 | 468 | 469 | 470 | (VALUE) ROOM 472 | (ROOM) ROOM (ATM) ) 473 | >)> 474 | > 475 | > 476 | ,.ATM) 477 | (>> 479 | <> ,NULL-EXIT () <> 0 0 0 T> 483 | ROOM>>> 484 | 485 | .ROOM)>> 486 | 487 | (OBJ) OBJECT (ATM) (VALUE) OBJECT) 489 | >)> 490 | > 491 | > 492 | ,.ATM) 493 | (>> 495 | 498 | <> () <> 0 <> 0 0 0 <> <> 5 0 ,NULL-SYN <> <>] 499 | OBJECT>>> 500 | 501 | .OBJ)>> 502 | 503 | ) 505 | ">) 506 | ( 507 | >) 508 | ( 509 | ) 510 | ( 511 | 512 | >) 513 | ( 514 | >)>> 515 | 516 | -------------------------------------------------------------------------------- /zork/lcf/dungz.56: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/dungz.56 -------------------------------------------------------------------------------- /zork/lcf/makstr.7: -------------------------------------------------------------------------------- 1 | ) ATM) 2 | #DECL ((TICK) FIX (APP) (FLG) 3 | (NAME) (ATM) ) 4 | 5 | >) 6 | (T >)>) 7 | ()> 8 | >> 9 | 10 | (WINNER) ADV) 12 | 13 | )) 14 | #DECL ((Y) OBJECT) 15 | > 16 | .WINNER>>> 17 | .OBJS>> 18 | 19 | ) (FLAG <>) (FUNCT <>) "AUX" (FVAL <>) ATM) 20 | #DECL ((STR) (FLID RMID) 21 | (ATM FUNCT) (FVAL) 22 | (FLAG) ) 23 | >)> 24 | > 25 | >>> 26 | 27 | .STR .FUNCT> CEXIT>> 28 | 29 | >)) 31 | #DECL ((PAIRS) ]> 32 | (DIR) (FROB) VECTOR (DOBL) OBLIST) 33 | (RM) (F) VECTOR) 35 | .DOBL>> 37 | 38 | >> 39 | 40 | STRING> 41 | >>) 42 | (>)> 43 | >) 44 | (T 45 | >>)> 46 | >> 47 | )>> 48 | > 49 | 50 | ) (VAL 0) (BIT ,RLANDBIT) 51 | "AUX" (RM )) 52 | #DECL ((ID) (D1 D2) STRING (LIT?) 53 | (EX) EXIT (APP) (VAL BIT) FIX (RM) ROOM) 54 | > 55 | 56 | 57 | 58 | 59 | 60 | 61 | <>) 62 | (.APP)>> 63 | <>) 64 | (T .LIT?)>> 65 | 66 | > 68 | > 69 | .RM> 70 | 71 | <> () <> <+ !.TUP>>> 74 | 75 | .APP () <> <+ !.TUP>>> 78 | 79 | (DESC1 DESC2) STRING (APP) 82 | (CONTS) (CAN) 83 | (FLAGS) (SIZE CAPAC) FIX 84 | (LIGHT? S1 S2) FIX (DESCO) ) 85 | > 86 | >> 87 | 99 | ,ODESC1 100 | .DESC1> 101 | ,OCAPAC 102 | .CAPAC> 103 | ,OSIZE 104 | .SIZE> 105 | ,ODESCO 106 | .DESCO> 107 | ,OLIGHT? 108 | .LIGHT?> 109 | ,OFLAGS 110 | .FLAGS> 111 | ,OFVAL 112 | .S1> 113 | ,OTVAL 114 | .S2> 115 | ,OCAN 116 | .CAN> 117 | ,OCONTENTS 118 | .CONTS> 119 | ,ODESC2 120 | .DESC2> 121 | ,OACTION 122 | <>) 123 | (.APP)>>> 124 | 125 | )) 126 | #DECL ((STR) STRING (ATM) ) 127 | 128 | ,.ATM) 129 | ()>) 130 | (>)>> 131 | 132 | 134 | >)) 135 | #DECL ((NAM STR) STRING (DECL) (ATM) ATOM) 136 | .STR] ACTION>> 137 | .ATM> 138 | 139 | (DIR) OBLIST (ATM) ATOM) 141 | >> 142 | >> 143 | .NMS>> 144 | 145 | 147 | (VAL) DIRECTION (DIR) OBLIST) 148 | > 149 | >> 150 | .VAL>> 151 | .NMS>> 152 | 153 | (ATM) 155 | (VAL) ANY) 156 | > 157 | 158 | .VAL>> .N2>)> 159 | > 160 | 161 | 162 | > 163 | .VAL>> .N2>)>> 164 | 165 | "STUFF FOR ADDING TO VOCABULARY, ADDING TO LISTS (OF DEMONS, FOR EXAMPLE)." 166 | 167 | >> 170 | 171 | ) 173 | 174 | >> 177 | .W>> 178 | 179 | ) 181 | 182 | > >> 185 | .W>> 186 | 187 | (OBJS) OBLIST) 189 | >> 195 | .NAMES>> 196 | > .ADJ>> 197 | ADJECTIVE> 198 | .OBJ> 199 | 200 | (ATM) 202 | (VAL) ANY) 203 | > 204 | 205 | .VAL>> .N2>)>> 206 | 207 | >>> 210 | 211 | 213 | ) 214 | > > 215 | 216 | )>> 217 | ,DEMONS>) 218 | ()>> 219 | 220 | > 221 | 222 | ) 224 | 225 | > 227 | )>> 228 | .ACTORS>) 229 | ()> 230 | .ADV> 231 | 232 | > 235 | 236 | > 238 | 239 | > 241 | 242 | > -------------------------------------------------------------------------------- /zork/lcf/makstr.nbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/makstr.nbin -------------------------------------------------------------------------------- /zork/lcf/nact2.nbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/nact2.nbin -------------------------------------------------------------------------------- /zork/lcf/ndefs.nbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/ndefs.nbin -------------------------------------------------------------------------------- /zork/lcf/nnp.nbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/nnp.nbin -------------------------------------------------------------------------------- /zork/lcf/np.92: -------------------------------------------------------------------------------- 1 | 2 | >> 3 | 4 | >> 5 | 6 | > 7 | 8 | <> <> <> <>]> 9 | 10 | > 11 | >) 12 | ( ] PHRASE> 14 | ] PHRASE>]> 15 | ] PHRASE> 17 | ] PHRASE>]>)> 18 | 19 | 1 <>> 2 <>>) 22 | (ACTIONS ,ACTIONS) (DIRS ,DIRECTIONS) (ORPH ,ORPHANS) 23 | (ORFL ) (PRV ,PREPVEC) (HERE ,HERE) 24 | (ACTION <>) (PREP <>) NPREP (ADJ <>) ATM AVAL OBJ 25 | PPREP LOBJ VAL) 26 | #DECL ((SV) (VB ORFL) 27 | (ACTIONS WORDS OBJOB DIRS) OBLIST (PV ORPH PRV PVR) VECTOR 28 | (ATM) (HERE) ROOM (ACTION) 29 | (NPREP PREP) (ADJ) (AVAL) ANY 30 | (LOBJ) ANY (OBJ) (PPREP) PHRASE) 31 | 33 | ) 37 | ( 38 | >> 39 | ) 40 | ( 41 | >> 42 | 43 | 44 | ) 45 | (> 46 | PREP> 47 | > 49 | >) 50 | ()>) 51 | ( 52 | 53 | > 55 | >>>) 56 | (T)>>) 57 | (> 58 | > 60 | 61 | > 62 | >> 63 | > 67 | > 68 | 69 | > 70 | ) 71 | (.OBJ)>> 72 | >) 73 | (T 74 | 75 | 77 | 78 | >>)> 80 | " here.">) 81 | ()>>) 82 | (<==? .OBJ ,NEFALS2> 83 | > 87 | ".">>) 88 | ( "?">> 89 | >> 91 | <2 .PV> 92 | .PREP 93 | .ATM>)> 94 | >)> 95 | > 96 | T) 97 | (> >)>> 98 | .SV>> 99 | 101 | >>>> 102 | OBJECT> 104 | > 107 | "?">) 108 | ()>> 109 | <2 .PV>> 110 | <>) 111 | ( .ADJ> 112 | > 113 | <>) 114 | (> 116 | > 117 | > 1 .NPREP> 118 | 119 | > 120 | 121 | ) 122 | ()> 123 | <>>) 124 | (.PREP 125 | >> OBJECT> 126 | 127 | 1 128 | 1 .PREP> 2 .LOBJ>>>>) 129 | (.PV)>)>> 130 | 131 | <>>> 132 | 133 | ) (ACTION <>) (SLOT1 <>) (PREP <>) (NAME 134 | <>)) 135 | #DECL ((FLAG) (NAME) ) 136 | ,OPREP .PREP> 137 | ,OSLOT1 138 | .SLOT1> 139 | ,OVERB 140 | .ACTION> 141 | ,OFLAG 142 | .FLAG>> 143 | 144 | ) (OBJS ) (O1 <1 .OBJS>) 146 | (O2 <2 .OBJS>) (DFORCE <>) (DRIVE <>) (GWIM <>) SYNN) 147 | #DECL ((ACTION) ACTION (PV OBJS) VECTOR (DRIVE DFORCE) 148 | (O1 O2) (SYNN) VARG (GWIM) ) 149 | 151 | .O1> 155 | .O2> 156 | > 157 | >>>) 158 | ( 159 | ) ()> 160 | <>)>) 161 | ( 162 | ) ()> 163 | <>)>> 164 | >) 165 | (> 166 | > 167 | 168 | >> 169 | > 170 | >>>> 171 | > 172 | ) 173 | (> 174 | 175 | >> 176 | >> 177 | > 178 | ) 179 | (>>)>) 180 | ( <>)>> 181 | 182 | ) (PV2 <3 .PV>) OBJ VARG) 183 | #DECL ((SYN) SYNTAX (PV) VECTOR (PV1 PV2) 184 | (OBJ) (VARG) VARG) 185 | .PV1) 189 | ( <2 .PV1>)>>> 190 | > ,VRBIT> 191 | )> 192 | .PV2) 196 | ( <2 .PV2>)>>> 197 | > ,VRBIT> 198 | )> 199 | T> 200 | 201 | ) (SAV2 <2 .VEC>)) 202 | #DECL ((OBJ) OBJECT (VEC) VECTOR (SAV1) VERB (SAV2) 203 | (VRB) VARG) 204 | <>> 205 | >>> 206 | 207 | 208 | 209 | 210 | )>> 211 | 212 | ) SLOT1) 213 | #DECL ((SYN) VARG (OBJS ORPH) VECTOR (ORFL) 214 | (SLOT1) ) 215 | <>) 216 | (> 217 | >)>> 218 | 219 | ) SP) 220 | #DECL ((VARG) VARG (ACTION) ACTION (PREP) (SP) STRING 221 | (GWIM) ) 222 | 0 " "> 225 | 0 " ">> 226 | > 0 " what?">) 227 | ( 0 " what?">)> 228 | <>> 229 | 230 | > > <>>> 233 | 234 | ) 236 | 237 | > 240 | >) 241 | (>> CHARACTER>>)>> 242 | .NAM 243 | .STR> 244 | .STR> 245 | 246 | ) 249 | .VARG .ACTION>> 250 | 251 | .OBJ)>> 252 | 253 | "GET WHAT I MEAN - GWIM 254 | TAKES BIT TO CHECK AND WHERE TO CHECK AND WINS TOTALLY" 255 | 256 | ) (NTAKE ) 258 | (ROBJ ) (OBJ <>) NOBJ (PV ,PRSVEC) 259 | SAVOBJ (AV )) 260 | #DECL ((BIT) FIX (NTAKE ROBJ AOBJ) 261 | (OBJ NOBJ AV) (PV) VECTOR 262 | (SAVOBJ) (FWORD) VARG (ACTION) ACTION) 263 | .NTAKE>>> 264 | .NTAKE>> 266 | 267 | <==? .AV .NOBJ> 268 | > 269 | >> 270 | > T> 271 | 272 | 273 | 274 | > .NTAKE > 275 | 276 | .NOBJ>) 277 | ( <>)>) 278 | (>> ,NEFALS) 279 | (.OBJ)>) 280 | (.OBJ)>> 281 | 282 | ;" [ON (,BIT ,BIT ,BIT ROBJS NO-TAKE ...) [ATOM!-WORDS ] DRIVER]" 283 | 284 | ) ATM) 285 | >) (WHR 1)) 288 | #DECL ((SP) VECTOR (SYN) VECTOR (WHR) FIX) 289 | 290 | 292 | >) 293 | ( 294 | 295 | <>>) 296 | ( 297 | > 298 | > 299 | 300 | 301 | > 302 | 303 | >> 304 | 305 | >> 306 | 307 | >> 308 | 309 | >> 310 | 311 | > 312 | >) 313 | ( 314 | >>> 315 | ) 316 | (>> 319 | ] VERB>>>)>) 320 | (<==? .ITM DRIVER> ) 321 | (<==? .ITM FLIP> )>> 322 | .SP> 323 | > 324 | > 325 | > 326 | .SPECS> 327 | VSPEC>> 328 | 329 | 0] VARG>> 330 | 331 | )) 332 | #DECL ((VARG) VARG (POBJ) (VBIT) FIX) 333 | 334 | <1 .POBJ>> 335 | > 336 | .VBIT>>>) 337 | ( 338 | > 339 | > 340 | >>) 341 | ( <0? .VBIT>>)>> 342 | 343 | > 344 | 345 | (VB) ) 347 | > 348 | > >) 349 | (> <>)>) 350 | (> <>)>> 351 | 352 | 5>> 353 | 354 | >> 355 | 356 | "GET-OBJECT: TAKES ATOM (FROM OBJECTS OBLIST), VERBOSITY FLAG. GROVELS 357 | OVER: ,STARS; ,HERE; ,WINNER LOOKING FOR OBJECT (LOOKS DOWN TO ONE LEVEL 358 | OF CONTAINMENT). RETURNS <> IF NOT FOUND OR FOUND MORE THAN ONE, THE 359 | OBJECT OTHERWISE." 360 | 361 | ) (HERE ,HERE) 363 | (AV ) (CHOMP <>)) 364 | #DECL ((OOBJ OBJ AV) (OBJNAM) ATOM (HERE) ROOM 365 | (ADJ) (CHOMP) 366 | (OBJL) >) 367 | > ) 368 | (> )> 369 | 370 | .ADJ>>> 371 | 373 | >> 374 | >> 375 | ) 376 | (.OOBJ ) 377 | ()>) 378 | ( >> )> 379 | .ADJ>> 381 | > 382 | ) 383 | (> )>)> 384 | .ADJ>> 385 | ) 386 | (> ,NEFALS) 387 | (.CHOMP ,NEFALS2) 388 | (.OOBJ)>> 389 | 390 | "SEARCH-LIST: TAKES OBJECT NAME, LIST OF OBJECTS, AND VERBOSITY. 391 | IF FINDS ONE FROB UNDER THAT NAME ON LIST, RETURNS IT. SEARCH IS TO 392 | ONE LEVEL OF CONTAINMENT." 393 | 394 | 395 | 396 | 397 | 398 | ) 399 | (NEFALS ,NEFALS) NOBJ) 400 | #DECL ((OBJNAM) ATOM (SLIST) 401 | (OOBJ NOBJ) (ADJ) 402 | (FIRST?) (NEFALS) FALSE) 403 | 404 | 407 | ) ()>)> 408 | 410 | > 411 | >> 412 | .ADJ <>>> 413 | ) 414 | ()>) 415 | (<==? .NOBJ .NEFALS> )>)>> 416 | .SLIST> 417 | .OOBJ> 418 | 419 | "FWIM: TAKE LIST OF FROBS, FIND ONE THAT CAN BE MANIPULATED (VISIBLE 420 | AND TAKEABLE, OR VISIBLE AND IN SOMETHING THAT'S VISIBLE AND OPEN)" 421 | 422 | )) 423 | #DECL ((NO-TAKE) (BIT) FIX (OBJS) 424 | (NOBJ) ) 425 | 426 | > > 429 | )> 430 | )> 431 | > 433 | 434 | > 437 | ) 438 | ()>)>> 439 | >)>> 440 | .OBJS> 441 | .NOBJ> 442 | 443 | -------------------------------------------------------------------------------- /zork/lcf/np.93: -------------------------------------------------------------------------------- 1 | 2 | >> 3 | 4 | >> 5 | 6 | > 7 | 8 | <> <> <> <>]> 9 | 10 | > 11 | >) 12 | ( ] PHRASE> 14 | ] PHRASE>]> 15 | ] PHRASE> 17 | ] PHRASE>]>)> 18 | 19 | 1 <>> 2 <>>) 22 | (ACTIONS ,ACTIONS) (DIRS ,DIRECTIONS) (ORPH ,ORPHANS) 23 | (ORFL ) (PRV ,PREPVEC) (HERE ,HERE) 24 | (ACTION <>) (PREP <>) NPREP (ADJ <>) ATM AVAL OBJ 25 | PPREP LOBJ VAL) 26 | #DECL ((SV) (VB ORFL) 27 | (ACTIONS WORDS OBJOB DIRS) OBLIST (PV ORPH PRV PVR) VECTOR 28 | (ATM) (HERE) ROOM (ACTION) 29 | (NPREP PREP) (ADJ) (AVAL) ANY 30 | (LOBJ) ANY (OBJ) (PPREP) PHRASE) 31 | 33 | ) 37 | ( 38 | >> 39 | ) 40 | ( 41 | >> 42 | 43 | 44 | ) 45 | (> 46 | PREP> 47 | > 49 | >) 50 | ()>) 51 | ( 52 | 53 | > 55 | >>>) 56 | (T)>>) 57 | (> 58 | > 60 | 61 | > 62 | >> 63 | > 67 | > 68 | 69 | > 70 | ) 71 | (.OBJ)>> 72 | >) 73 | (T 74 | 75 | 77 | 78 | >>)> 80 | " here.">) 81 | ()>>) 82 | (<==? .OBJ ,NEFALS2> 83 | > 87 | ".">>) 88 | ( "?">> 89 | >> 91 | <2 .PV> 92 | .PREP 93 | .ATM>)> 94 | >)> 95 | > 96 | T) 97 | (> >)>> 98 | .SV>> 99 | 101 | >>>> 102 | OBJECT> 104 | > 107 | "?">) 108 | ()>> 109 | <2 .PV>> 110 | <>) 111 | ( .ADJ> 112 | > 113 | <>) 114 | (> 116 | > 117 | > 1 .NPREP> 118 | 119 | > 120 | 121 | ) 122 | ()> 123 | <>>) 124 | (.PREP 125 | >> OBJECT> 126 | 127 | 1 128 | 1 .PREP> 2 .LOBJ>>>>) 129 | (.PV)>)>> 130 | 131 | <>>> 132 | 133 | ) (ACTION <>) (SLOT1 <>) (PREP <>) (NAME 134 | <>)) 135 | #DECL ((FLAG) (NAME) ) 136 | ,OPREP .PREP> 137 | ,OSLOT1 138 | .SLOT1> 139 | ,OVERB 140 | .ACTION> 141 | ,OFLAG 142 | .FLAG>> 143 | 144 | ) (OBJS ) (O1 <1 .OBJS>) 146 | (O2 <2 .OBJS>) (DFORCE <>) (DRIVE <>) (GWIM <>) SYNN) 147 | #DECL ((ACTION) ACTION (PV OBJS) VECTOR (DRIVE DFORCE) 148 | (O1 O2) (SYNN) VARG (GWIM) ) 149 | 151 | .O1> 155 | .O2> 156 | > 157 | >>>) 158 | ( 159 | ) ()> 160 | <>)>) 161 | ( 162 | ) ()> 163 | <>)>> 164 | >) 165 | (> 166 | > 167 | 168 | >> 169 | > 170 | >>>> 171 | > 172 | ) 173 | (> 174 | 175 | >> 176 | >> 177 | > 178 | ) 179 | (>>)>) 180 | ( <>)>> 181 | 182 | ) (PV2 <3 .PV>) OBJ VARG) 183 | #DECL ((SYN) SYNTAX (PV) VECTOR (PV1 PV2) 184 | (OBJ) (VARG) VARG) 185 | .PV1) 189 | ( <2 .PV1>)>>> 190 | > ,VRBIT> 191 | )> 192 | .PV2) 196 | ( <2 .PV2>)>>> 197 | > ,VRBIT> 198 | )> 199 | T> 200 | 201 | ) (SAV2 <2 .VEC>)) 202 | #DECL ((OBJ) OBJECT (VEC) VECTOR (SAV1) VERB (SAV2) 203 | (VRB) VARG) 204 | <>> 205 | >>> 206 | 207 | 208 | 209 | 210 | )>> 211 | 212 | ) SLOT1) 213 | #DECL ((SYN) VARG (OBJS ORPH) VECTOR (ORFL) 214 | (SLOT1) ) 215 | <>) 216 | (> 217 | >)>> 218 | 219 | ) SP) 220 | #DECL ((VARG) VARG (ACTION) ACTION (PREP) (SP) STRING 221 | (GWIM) ) 222 | 0 " "> 225 | 0 " ">> 226 | > 0 " what?">) 227 | ( 0 " what?">)> 228 | <>> 229 | 230 | > > <>>> 233 | 234 | ) 236 | 237 | > 240 | >) 241 | (>> CHARACTER>>)>> 242 | .NAM 243 | .STR> 244 | .STR> 245 | 246 | ) 249 | .VARG .ACTION>> 250 | 251 | .OBJ)>> 252 | 253 | "GET WHAT I MEAN - GWIM 254 | TAKES BIT TO CHECK AND WHERE TO CHECK AND WINS TOTALLY" 255 | 256 | ) (NTAKE ) 258 | (ROBJ ) (OBJ <>) NOBJ (PV ,PRSVEC) 259 | SAVOBJ (AV ) SF) 260 | #DECL ((BIT) FIX (NTAKE ROBJ AOBJ) 261 | (OBJ NOBJ AV) (PV) VECTOR 262 | (SAVOBJ) (FWORD) VARG (ACTION) ACTION) 263 | .NTAKE>>> 264 | .NTAKE>> 266 | 267 | <==? .AV .NOBJ> 268 | > 269 | >> 270 | > T> 271 | 272 | > T> 273 | 274 | 275 | > .NTAKE > 276 | 277 | 278 | .NOBJ>) 279 | ( <>)>) 280 | (>> ,NEFALS) 281 | (.OBJ)>) 282 | (.OBJ)>> 283 | 284 | ;" [ON (,BIT ,BIT ,BIT ROBJS NO-TAKE ...) [ATOM!-WORDS ] DRIVER]" 285 | 286 | ) ATM) 287 | >) (WHR 1)) 290 | #DECL ((SP) VECTOR (SYN) VECTOR (WHR) FIX) 291 | 292 | 294 | >) 295 | ( 296 | 297 | <>>) 298 | ( 299 | > 300 | > 301 | 302 | 303 | > 304 | 305 | >> 306 | 307 | >> 308 | 309 | >> 310 | 311 | >> 312 | 313 | > 314 | >) 315 | ( 316 | >>> 317 | ) 318 | (>> 321 | ] VERB>>>)>) 322 | (<==? .ITM DRIVER> ) 323 | (<==? .ITM FLIP> )>> 324 | .SP> 325 | > 326 | > 327 | > 328 | .SPECS> 329 | VSPEC>> 330 | 331 | 0] VARG>> 332 | 333 | )) 334 | #DECL ((VARG) VARG (POBJ) (VBIT) FIX) 335 | 336 | <1 .POBJ>> 337 | > 338 | .VBIT>>>) 339 | ( 340 | > 341 | > 342 | >>) 343 | ( <0? .VBIT>>)>> 344 | 345 | > 346 | 347 | (VB) ) 349 | > 350 | > >) 351 | (> <>)>) 352 | (> <>)>> 353 | 354 | 5>> 355 | 356 | >> 357 | 358 | "GET-OBJECT: TAKES ATOM (FROM OBJECTS OBLIST), VERBOSITY FLAG. GROVELS 359 | OVER: ,STARS; ,HERE; ,WINNER LOOKING FOR OBJECT (LOOKS DOWN TO ONE LEVEL 360 | OF CONTAINMENT). RETURNS <> IF NOT FOUND OR FOUND MORE THAN ONE, THE 361 | OBJECT OTHERWISE." 362 | 363 | ) (HERE ,HERE) 365 | (AV ) (CHOMP <>)) 366 | #DECL ((OOBJ OBJ AV) (OBJNAM) ATOM (HERE) ROOM 367 | (ADJ) (CHOMP) 368 | (OBJL) >) 369 | > ) 370 | (> )> 371 | 372 | .ADJ>>> 373 | 375 | >> 376 | >> 377 | ) 378 | (.OOBJ ) 379 | ()>) 380 | ( >> )> 381 | .ADJ>> 383 | > 384 | ) 385 | (> )>)> 386 | .ADJ>> 387 | ) 388 | (> ,NEFALS) 389 | (.CHOMP ,NEFALS2) 390 | (.OOBJ)>> 391 | 392 | "SEARCH-LIST: TAKES OBJECT NAME, LIST OF OBJECTS, AND VERBOSITY. 393 | IF FINDS ONE FROB UNDER THAT NAME ON LIST, RETURNS IT. SEARCH IS TO 394 | ONE LEVEL OF CONTAINMENT." 395 | 396 | 397 | 398 | 399 | 400 | ) 401 | (NEFALS ,NEFALS) NOBJ) 402 | #DECL ((OBJNAM) ATOM (SLIST) 403 | (OOBJ NOBJ) (ADJ) 404 | (FIRST?) (NEFALS) FALSE) 405 | 406 | 409 | ) ()>)> 410 | 412 | > 413 | >> 414 | .ADJ <>>> 415 | ) 416 | ()>) 417 | (<==? .NOBJ .NEFALS> )>)>> 418 | .SLIST> 419 | .OOBJ> 420 | 421 | "FWIM: TAKE LIST OF FROBS, FIND ONE THAT CAN BE MANIPULATED (VISIBLE 422 | AND TAKEABLE, OR VISIBLE AND IN SOMETHING THAT'S VISIBLE AND OPEN)" 423 | 424 | )) 425 | #DECL ((NO-TAKE) (BIT) FIX (OBJS) 426 | (NOBJ) ) 427 | 428 | > > 431 | )> 432 | )> 433 | > 435 | 436 | > 439 | ) 440 | ()>)>> 441 | >)>> 442 | .OBJS> 443 | .NOBJ> 444 | 445 | -------------------------------------------------------------------------------- /zork/lcf/nrooms.nbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/lcf/nrooms.nbin -------------------------------------------------------------------------------- /zork/lcf/rooms.98: -------------------------------------------------------------------------------- 1 | 2 | "GUTS OF FROB: BASIC VERBS, COMMAND READER, PARSER, VOCABULARY HACKERS." 3 | 4 | 5 | 6 | (VERS DEV SNM SCRATCH-STR) STRING> 7 | 8 | "MADMAN;MADADV SAVE") 9 | (T "MADADV.SAVE")>) 10 | "AUX" (MUDDLE ,MUDDLE) STV (ST )) 11 | #DECL ((FN) STRING (MUDDLE) FIX (STV) ) 12 | ,ODESC1 > 13 | 14 | > 15 | 16 | > 17 | 18 | 19 | > 20 | 21 | ) 22 | ( 23 | 24 | )> 25 | 26 | "SAVED"> T) 27 | (T 28 | ; "STARTER on 10x sets up tty correctly, setg's DEV to \"MDL\" 29 | if that device exists; if not, (sort of) returns directory muddle 30 | came from. On its it returns # zorkers currently in existence." 31 | > FIX> 32 | > 33 | > ,WINNERS> 34 | <=? ,XUNM "SEC"> 35 | <=? ,XUNM "ELBOW"> 36 | 37 | 50 | >>) 51 | ( 52 | 55 | >>>>)> 56 | >) 57 | ( 58 | "ZORK">)> 59 | > 60 | )>> 61 | 62 | 63 | 64 | "Stuff for diverting gc's" 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | > 80 | > 81 | 82 | > ;"Too much diversion ?" 83 | > 84 | 85 | ) 86 | (ELSE ;"Divert this request for storage" 87 | ;"First diversion ?" 88 | )> 89 | > 90 | ;"Get storage desired plus extra increment")>> 91 | 92 | > 93 | ,DIVERT-FCN>> 94 | 95 | 96 | 97 | 99 | >> 100 | 101 | > 102 | ,GC-FCN>> 103 | 104 | 105 | 106 | 107 | 108 | > 114 | <==? 32>> 115 | ) 116 | (T .X)>> 117 | >> 118 | 119 | ) CMA JR LFST LLST 120 | TLEN TSTR STR) 121 | #DECL ((STR TSTR UNAME) STRING (NM CMA JR) 122 | (TLEN LLST LFST) FIX) 123 | > 125 | >> 126 | > 127 | > 128 | > 129 | >>)> 130 | ) 132 | ( % >> 133 | > 134 | >) 135 | (ELSE )>> 136 | >> 137 | > 138 | 139 | 140 | >> 141 | 142 | >> 143 | ) 144 | (ELSE )>)>> 145 | 146 | )) 147 | #DECL ((O) OBJECT (NSTR STR) STRING (LEN-I) FIX) 148 | >> 149 | > !\1> 150 | > 151 | ) 152 | (>)> 153 | >> 3>> 154 | >> 156 | " here.">> 157 | 158 | )) 159 | #DECL ((N) ) 160 | > FIX>> 163 | !\ 164 | > FIX>> 165 | !\.>> 166 | 167 | > 169 | 170 | 171 | 172 | 173 | 174 | ) (THEN ,INTIME)) 175 | #DECL ((NOW THEN) ) 176 | <+ > FIX> 177 | > FIX>> 178 | > FIX> 179 | <* 24 7200>> 180 | > FIX>> 181 | 2>) 182 | (> FIX> 183 | > FIX>> 184 | 2>)> 185 | ,PLAYED-TIME>> 186 | 187 | (LOSER?) ) 190 | > 191 | 192 | ) 193 | (T 194 | )> 195 | > 0> 196 | 197 | 198 | > 199 | > 200 | 60>> 0> 201 | 202 | 203 | > )> 204 | )> 205 | >> 206 | 207 | > 208 | ) 210 | ()> 211 | .TIME> 212 | 213 | 214 | 215 | 218 | > 6 #LOSE 27> 219 | > 220 | > 221 | > 222 | > 223 | > 224 | 225 | 226 | ) 227 | (T 228 | > 229 | <==? <1 .ZORK> CONTROL-G?!-ERRORS>> 230 | 231 | 232 | > 6 233 | ) 235 | (T #LOSE *000000000015*)>> 236 | ) 237 | ( 3> 238 | <==? <1 .ZORK> FILE-SYSTEM-ERROR!-ERRORS> 239 | >> 240 | <==? 3> 241 | <=? <1 .ZF> 242 | "ILLEGAL CHR AFTER CNTRL P ON TTY DISPLAY">> 243 | ; "HACK FOR ILLEGAL CHR AFTER CTRL-P" 244 | > 6 #LOSE *000000000015*> 245 | 246 | ) 247 | ( 250 | 251 | > .ZORK> 252 | )>)>> 253 | 254 | 255 | 256 | > 257 | 258 | > 259 | > 260 | > 262 | ,HANDLE>>> 263 | 264 | > 265 | 266 | )) 267 | #DECL ((ST RM) STRING (MUDDLE) FIX (XUNM) STRING (FN) ) 268 | 269 | ] PHRASE>> 270 | > 271 | 272 | 2> <=? "___"> > 273 | >) 274 | (>)> 275 | ) 277 | ()> 278 | 279 | 280 | 281 | >> 282 | 284 | FIX>> 285 | 286 | > 287 | 288 | > 290 | > 6 291 | ) 293 | (T #LOSE *000000000015*)>> 294 | 295 | 296 | 297 | 298 | > 299 | ,NULL> 300 | 301 | > 302 | 303 | > 304 | 305 | ) 307 | ) 309 | (">>> 310 | 1 (.CH)> 311 | 1 (.CH)> 312 | 313 | )>> 314 | 315 | 331 | >> 332 | >>> 333 | 334 | (UNM) STRING (MUDDLE) FIX) 336 | >)> 338 | ) 340 | ( 342 | > 343 | > 344 | 345 | > 346 | >> 347 | >> 348 | 1 (.CH)> 349 | 1 (.CH)> 350 | 351 | 352 | ) 353 | (T 354 | ZORK.SCRIPT">)>) 355 | (T 356 | )>> 357 | 358 | ) 360 | 1 ()> 362 | 1 ()> 363 | 364 | > 365 | >) 366 | (>)>> 367 | 368 | 369 | 370 | (MUDDLE) FIX (UNM) STRING) 372 | 373 | > 374 | > 375 | >> 376 | 377 | > 378 | >> 379 | > 380 | 381 | 382 | 383 | FIX>> 384 | > 385 | 387 | ) 388 | (T 389 | ZORK.SAVE">)>>> 390 | 391 | >) 392 | ( 393 | 1 " " <2 .CH>>)>) 394 | ()>) 395 | (T )>> 396 | 397 | (STR) STRING (NOWD NOW THEND MUDDLE) FIX) 399 | 400 | >) 401 | (T 402 | ZORK.SAVE">>)> 403 | )) 404 | #DECL ((FOO) (SNM) ) 405 | > 406 | 407 | ) 408 | (<==? FIX>> 411 | > 412 | FIX>> 413 | > FIX>>> 415 | 2400>) 416 | ( 417 | 418 | 419 | 420 | )> 421 | )>) 422 | (<1? <- .NOWD .THEND>> 423 | > FIX> 424 | <* 24 7200>> 425 | > FIX>> 426 | 2400>) 427 | ( 428 | )>)> 429 | 430 | ) 431 | ()> 432 | ) 433 | (> 434 | "ZORK.SAVE">> 435 | > 436 | ) 437 | ( 1 " " <1 .CH>>)>>> 438 | 439 | 100> .NUM>> 440 | 441 | "GET-ATOM TAKES A VALUE AND SEARCHES INITIAL FOR FIRST ATOM 442 | SETG'ED TO THAT." 443 | 444 | )) 445 | #DECL ((O) OBLIST) 446 | 447 | ) 448 | 449 | 451 | <==? ,.X .VAL>> 452 | )>> 453 | .X>> 454 | .O>> 455 | 456 | ; 457 | "ROOM-INFO -- 458 | PRINT SOMETHING ABOUT THIS PLACE 459 | 1. CHECK FOR LIGHT --> ELSE WARN LOSER 460 | 2. GIVE A DESCRIPTION OF THE ROOM 461 | 3. TELL WHAT'S ON THE FLOOR IN THE WAY OF OBJECTS 462 | 4. SIGNAL ENTRY INTO THE ROOM 463 | " 464 | > 465 | > 466 | 467 | > 468 | 469 | 471 | > 472 | 473 | 475 | > 476 | 477 | > 479 | > 480 | > 481 | 482 | > 484 | > 485 | 486 | > 487 | 488 | ) 489 | "AUX" (AV ) (RM ,HERE) (PRSO <2 ,PRSVEC>) 490 | (WINOBJ ) (OUTCHAN ,OUTCHAN) RA) 491 | #DECL ((RM) ROOM (WINOBJ) OBJECT (AV) (OUTCHAN) CHANNEL 492 | (PRSO) (FULL) ) 493 | 494 | >> 495 | > 497 | 498 | 499 | ) 500 | (> 502 | ) 503 | ( 504 | >) 505 | ( 508 | ".">)> 509 | ) 510 | (> 511 | 513 | >) 514 | ( ,SUPER-BRIEF!-FLAG> 515 | 516 | > 517 | >> 518 | >) 519 | (> >> 520 | 521 | 522 | ; "Something innocuous") 523 | (>)> 524 | 525 | ".">> 526 | 527 | > 531 | ) 532 | (T 533 | 534 | > 535 | )>)> 536 | 537 | >) 538 | ( 539 | ) 542 | (,BRIEF!-FLAG <>) 543 | (T)>>)>)>> 544 | > 545 | > 546 | > 547 | 548 | 549 | )> 550 | T>> 551 | 552 | 8>> 553 | 554 | )) 556 | #DECL ((AV) (OBJ WINOBJ) OBJECT (INDENT) STRING 557 | (CONT) (CASE?) ) 558 | > 559 | > 560 | )> 561 | ) 562 | ( 1> 563 | <==? <1 .CONT> >>> 564 | 565 | " contains:">) 566 | ()> 567 | 568 | >) 571 | ( >>> 572 | >)> 573 | 574 | >)>> 575 | >)>> 576 | 577 | "GIVE LONG DESCRIPTION OF OBJECT" 578 | 579 | >> 582 | >) 583 | (>)> 584 | <>) 585 | ()>> 586 | 587 | "TRUE IF PARSER WON: OTHERWISE INHIBITS OBJECT ACTIONS, CLOCKS (BUT NOT THIEF)." 588 | 589 | > 590 | 591 | >> 592 | 593 | ) 594 | "AUX" (STR ,READER-STRING) VC RVEC RM (INPLEN 1) (INBUF ,INBUF) 595 | (WINNER ,WINNER) AV (OUTCHAN ,OUTCHAN) RANDOM-ACTION) 596 | #DECL ((RVEC) (RM) ROOM (INPLEN) FIX (INBUF) STRING 597 | (WINNER) ADV (AV) (OUTCHAN) CHANNEL 598 | (IVEC) (VC) VECTOR) 599 | 601 | >> 602 | ) 604 | 605 | 606 | 607 | "> 608 | > 609 | > 610 | 611 | > 612 | T>>)> 613 | 614 | > 615 | <>> 617 | >> VERB>>> 618 | >>) 619 | ( 620 | )> 621 | > 622 | > 623 | >>> 624 | > 625 | > 626 | >> 627 | >)>)>) 628 | (.IVEC 629 | ) 631 | ()> 632 | )> 633 | >) 634 | (T > )> 635 | 636 | > 639 | )>> 640 | ,DEMONS> 641 | > 643 | > 644 | > 645 | >>> 646 | 647 | > 0> 649 | 650 | )>> 651 | 652 | > 0> 654 | 655 | )>> 656 | 657 | .NUM>> 659 | >> 660 | 661 | (SCOR) FIX (OUTCHAN) CHANNEL (PCT) FLOAT) 663 | 664 | 665 | ) 667 | ()> 668 | >> 670 | 671 | 672 | 673 | 674 | ) 675 | ()> 676 | 677 | 678 | >> 679 | "Cheater") 680 | ( "Wizard") 681 | ( "Master") 682 | ( "Winner") 683 | ( "Hacker") 684 | ( "Adventurer") 685 | ( "Junior Adventurer") 686 | ( "Novice Adventurer") 687 | ( "Amateur Adventurer") 688 | ("Beginner")>> 689 | 690 | 691 | .SCOR> 692 | 693 | (SCOR) FIX) 695 | > 698 | 701 | >> 702 | > 703 | 704 | )>> 705 | >> 706 | 707 | "PRINT OUT DESCRIPTION OF LOSSAGE: WHEN PLAYED, SCORE, # MOVES, ETC." 708 | 709 | > 710 | 711 | 712 | 713 | >> 714 | 715 | ) (STR ,RECORD-STRING) FL (CT 0) (MUDDLE ,MUDDLE) 717 | (DEV ) (SNM )) 718 | #DECL ((MUDDLE SCORE MOVES DEATHS) FIX (QUIT?) (LOC) ROOM 719 | (CH) FALSE> (STR) STRING (CT FL) FIX 720 | (DEV SNM) STRING) 721 | > 725 | > 1> 726 | > 727 | >)> 728 | 729 | >) 730 | ( <==? <3 .CH> *600123*>> 731 | ; "Can't win--no write access" 732 | ) 733 | (T )> 734 | >> 735 | ) 736 | ( *4000000*>> 737 | <==? <3 .CH> *600130*>>> 738 | ;"on 10x, must get FILE BUSY to try again" 739 | 740 | ) 741 | (>) 742 | ( <==? <3 .CH> *600117*>> 743 | ; "No write access" 744 | ) 745 | ()>> 746 | 747 | 748 | 749 | 750 | 751 | 752 | )> 753 | 754 | .CH> 755 | 756 | > 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | ) 767 | (T )> 768 | 769 | .CH> 770 | ) 771 | ( ) 772 | ( .CH>)> 773 | 774 | 775 | )>> 778 | ,FLAG-NAMES 779 | ,SHORT-NAMES> 780 | 781 | )>> 784 | ,VAL-NAMES 785 | ,SHORT-VAL-NAMES> 786 | 787 | > 788 | >> >>> 789 | 790 | FLAG-NAMES 791 | 792 | 794 | (SHORT-NAMES SHORT-VAL-NAMES) 795 | > 796 | 797 | > )> 798 | 799 | > 815 | 816 | 817 | 818 | > 821 | 822 | > 823 | 824 | > 825 | 826 | > FIX>) (A/P " AM") 828 | HR) 829 | #DECL ((WD) (TIM HR) FIX (A/P) STRING (CH) CHANNEL) 830 | 831 | > ) 832 | (T 833 | > FIX>> .CH> 834 | 835 | > FIX> .CH> 836 | 837 | > 838 | > )> 839 | )> 840 | 841 | 842 | 120>> 843 | )> 844 | 845 | )>> 846 | 847 | 860 | 861 | > 862 | 863 | ) 865 | (RANDOM-LIST ,RANDOM-LIST) (LAMP ) 866 | LAMP-LOCATION (VAL-LIST ()) LC) 867 | #DECL ((DESC) STRING (DEATHS) FIX (AOBJS) 868 | (VAL-LIST) (LAMP-LOCATION) 869 | (WINNER) ADV (RANDOM-LIST) (LAMP) OBJECT) 870 | ) 873 | ( 876 | 877 | > " has died."> 878 | > 879 | > 880 | )> 881 | 882 | 883 | > 884 | 885 | 886 | 891 | >) 892 | (> 893 | 894 | 895 | > 896 | 899 | >) 900 | (T 901 | 905 | > 906 | 907 | > 908 | ) 909 | (> 910 | >> 913 | > 914 | >)>) 915 | ( 916 | )>)> 917 | ,OTOUCH? <>> 918 | > 919 | 920 | > 921 | 922 | > 925 | > 926 | .RANDOM-LIST> 927 | > 928 | ) 929 | ( 930 | >>) 931 | (T 932 | 1>> 933 | >> 934 | )> 935 | 936 | > 939 | .AOBJS 940 | ,ROOMS> 941 | 942 | T)>)>> 943 | > ,MOVES ,DEATHS <> ,HERE> 945 | >>)>> 946 | 947 | > 948 | 949 | > 950 | 951 | >> 952 | 953 | ) (SNM ) 954 | "AUX" (CH ) 955 | LEN 956 | (BUF ,INBUF) (BUFLEN ) 957 | ITER) 958 | #DECL ((BUF FILE1 FILE2 DEV SNM) STRING (CH) 959 | (ITER LEN BUFLEN) FIX) 960 | > 964 | > 965 | > >> 966 | 967 | 968 | 971 | >) 972 | (>)> 973 | 974 | >> 975 | 976 | >)>>> 977 | >) 978 | ()>> 979 | 980 | ) (OUTCHAN ,OUTCHAN)) 981 | #DECL ((ANY) (OUTCHAN) CHANNEL (WIN) ADV) 982 | 983 | 986 | 988 | ) 989 | (> 992 | " is carrying:">)> 993 | >> 994 | > 995 | > >>) 996 | ( 997 | >)> 998 | )>> 999 | > 1000 | >> 1001 | 1002 | (OUTCHAN) CHANNEL) 1004 | 1005 | ) 1007 | 1008 | >> 1009 | 2> 1010 | ) 1011 | (<==? 2> 1012 | )>> 1013 | .OLST>> 1014 | 1015 | 1016 | ;"LIT? -- 1017 | IS THERE ANY LIGHT SOURCE IN THIS ROOM" 1018 | 1019 | 1022 | > 1023 | > 1024 | 1025 | <==? ,HERE > 1026 | >>>> 1027 | 1028 | (Y) ADV) 1030 | 1031 | 0> > 1034 | 1035 | 1036 | >> 1037 | 1038 | 0> 1040 | )>> 1041 | >)> 1042 | 1043 | >>>> 1044 | )>> 1045 | .L>> 1046 | 1047 | ;"WALK -- 1048 | GIVEN A DIRECTION, WILL ATTEMPT TO WALK THERE" 1049 | 1050 | ATOM>) (ME ,WINNER) 1051 | (RM <1 .ME>) NL RANDOM-ACTION CXS) 1052 | #DECL ((WHERE) ATOM (ME) ADV (RM) ROOM (LEAVINGS) 1053 | (NRM) [REST ATOM ]>> 1055 | (NL) ) 1056 | > > 1057 | >> 1058 | > 1059 | > 1060 | >>) 1061 | ( 1062 | > 1065 | >) 1066 | (, 1067 | )>> 1068 | > 1069 | 1070 | >>>) 1071 | ()>) 1073 | ()>) 1075 | (>> 1076 | > 1077 | >>) 1078 | ( 1079 | > 1080 | >> 1081 | 1082 | >>> 1083 | >>>) 1084 | (> 1085 | 1086 | >) 1087 | ()>) 1088 | (T )>) 1089 | ()>> 1090 | 1091 | ) NOBJ 1093 | (OBJ <2 .VEC>) (GETTER? <>) (ROBJS ) 1094 | (AOBJS ) (LOAD-MAX ,LOAD-MAX)) 1095 | #DECL ((WIN) ADV (VEC) VECTOR (OBJ NOBJ) OBJECT (RM) ROOM 1096 | (GETTER? TAKE?) (LOAD-MAX) FIX 1097 | (ROBJS AOBJS) ) 1098 | 1100 | >)> 1101 | 1102 | > 1103 | 1104 | ) 1105 | ( >)>) 1106 | ( >)>)> 1107 | > 1109 | 1110 | >) 1111 | (> 1112 | >> 1113 | >) 1114 | (> 1115 | >>>> 1116 | >) 1117 | ( > > 1118 | .LOAD-MAX> 1119 | 1121 | >)> 1122 | > 1123 | >> 1127 | > 1128 | >) 1129 | ()> 1130 | 1131 | 1132 | 1133 | ) (T)>) 1134 | (T)>) 1135 | ( ) 1136 | ( <>)>>> 1137 | 1138 | ) (OBJI <3 .PV>) (WIN ,WINNER) 1140 | (AOBJS ) CROCK CAN (ROBJS ) 1141 | (OCAN <>)) 1142 | #DECL ((PV) (OBJO OBJI) OBJECT (WIN) ADV 1143 | (AOBJS ROBJS) (CROCK CAN) OBJECT 1144 | (OCAN) (OBJACT) ) 1145 | 1147 | >)> 1148 | 1149 | > 1150 | 1151 | >)> 1152 | 1153 | 1154 | > 1155 | 1156 | ) 1157 | ( >)> 1158 | > 1159 | 1160 | >) 1161 | (<==? .CAN .CROCK> 1162 | 1163 | >) 1164 | (> > 1165 | > 1166 | 1167 | >)> 1168 | 1169 | > 1170 | > 1171 | > 1173 | >> 1174 | 1175 | 1176 | > 1177 | >> >) 1178 | (>)>) 1179 | (> 1180 | 1181 | > 1182 | >> 1185 | >) 1186 | (> 1187 | >)>)> 1188 | 1189 | 1190 | 1191 | > ) 1192 | (> 1193 | )> 1194 | 1195 | 1196 | )>>> 1197 | 1198 | ) 1199 | (AOBJS ) (GETTER? <>) (VEC ,PRSVEC) 1200 | (RM ) (OBJ <2 .VEC>) (PI <3 .VEC>) NOBJ) 1201 | #DECL ((VEC) > 1202 | (OBJ NOBJ) OBJECT (PI AV) 1203 | (RM) ROOM (GETTER?) ) 1204 | > '[DROP!-WORDS POUR!-WORDS]> 1206 | .PI> 1207 | 1208 | >) 1209 | ( 1211 | .AOBJS>>>> 1212 | 1213 | 1214 | >)> 1215 | 1216 | >)> 1217 | > > 1218 | ) 1219 | ( 1220 | 1221 | ) 1222 | ()>)> 1223 | > 1224 | >> 1229 | >) 1230 | (>)> 1231 | >) 1232 | ()> 1233 | ) 1234 | (<==? > DROP!-WORDS> 1235 | ) 1236 | (<==? > THROW!-WORDS> 1237 | )>) 1238 | ()>>> 1239 | 1240 | 1241 | "STUFF FOR 'EVERYTHING' AND 'VALUABLES'" 1242 | 20> OBJECT>> 1243 | > 1244 | 1245 | ) (RA ) PI 1246 | (WINNER ,WINNER) (HERE ,HERE)) 1247 | #DECL ((UV) (PRSVEC) 1248 | (PA) VERB (RA) RAPPLIC (PI) (WINNER) ADV (HERE) ROOM) 1249 | 1250 | 1251 | 1253 | > 1254 | 1255 | 0 ": "> 1256 | 1257 | > 1258 | )>)>> 1259 | .UV>) 1260 | ( 1261 | <==? .PA ,PUT!-WORDS>> 1262 | 1263 | 1265 | 0 ": "> 1266 | 1267 | > 1268 | )>> 1269 | .UV>)> 1270 | T> 1271 | 1272 | 1273 | 1274 | ) PI (SUV ,OBJ-UV) (TUV ) 1276 | (LU ) (HERE ,HERE) (WINNER ,WINNER)) 1277 | #DECL ((PA) VERB (SUV TUV) (LU) FIX (HERE) ROOM 1278 | (WINNER) ADV (PI) OBJECT) 1279 | 1280 | 1281 | >> 1283 | 1284 | 1285 | )> 1286 | > 1287 | )>> 1288 | >) 1289 | (<==? .PA ,DROP!-WORDS> 1290 | 1291 | > 1293 | > 1294 | >) 1295 | (<==? .PA ,PUT!-WORDS> 1296 | > 1297 | 1299 | >> 1301 | 1302 | 1303 | )> 1304 | > 1305 | )>> 1306 | > 1307 | 1308 | 1310 | > 1311 | 1312 | )> 1313 | > 1314 | > 1315 | >>)> 1316 | > 1317 | 1318 | ) (SUV ,OBJ-UV) (TUV ) PI 1320 | (LU ) (HERE ,HERE) (WINNER ,WINNER)) 1321 | #DECL ((PA) VERB (SUV TUV) (LU) FIX (HERE) ROOM 1322 | (WINNER) ADV (PI) OBJECT) 1323 | 1324 | 1325 | 1327 | > 1328 | >>> 1329 | 1330 | 1331 | )> 1332 | > 1333 | )>> 1334 | >) 1335 | (<==? .PA ,DROP!-WORDS> 1336 | 1337 | >> 1339 | > 1340 | )>> 1341 | >) 1342 | (<==? .PA ,PUT!-WORDS> 1343 | > 1344 | 1346 | 1348 | > 1349 | 1350 | )> 1351 | 1352 | >>> 1353 | > 1354 | )>> 1355 | > 1356 | 1357 | 1359 | > 1360 | 1361 | )> 1362 | >> 1363 | > 1364 | )>> 1365 | >>)> 1366 | > 1367 | 1368 | 1369 | 1370 | ) (OUTCHAN ,OUTCHAN)) 1371 | #DECL ((PRSO) OBJECT (PV) (OUTCHAN) CHANNEL) 1372 | ) 1373 | (> 1374 | ".">) 1375 | ( 0> 1376 | ) 1377 | (T 1378 | 1379 | > 1380 | > 1381 | ) 1382 | ( 1383 | " reveals "> 1384 | > 1385 | 1386 | )>)>) 1387 | ( " cannot be opened.">)>> 1388 | 1389 | )) 1390 | #DECL ((PV) (PRSO) OBJECT) 1391 | ) 1392 | (> 1393 | ".">) 1394 | ( 0> 1395 | > ) 1396 | (T )>) 1397 | ()>> 1398 | 1399 | )) 1400 | #DECL ((PRSO) ) 1401 | ) 1402 | (.PRSO 1403 | 1405 | ", which is in the room." 1406 | "There is a " 1407 | " here."> 1408 | 1410 | ", which you are carrying." 1411 | "You are carrying a " 1412 | "."> 1413 | 1414 | )>) 1415 | ()>> 1416 | 1417 | (STR1 STR2 STR3) STRING) 1419 | 1420 | 1422 | .STR3>) 1423 | ( 1424 | >> 1425 | 1426 | 1428 | .STR3> 1429 | 1432 | .STR1>)>> 1433 | >)>> 1434 | .OBJL>> 1435 | 1436 | ;"OBJECT-ACTION -- 1437 | CALL OBJECT FUNCTIONS FOR DIRECT AND INDIRECT OBJECTS" 1438 | 1439 | ) (PRSI <3 .VEC>)) 1440 | #DECL ((PRSO PRSI) (VEC) VECTOR) 1441 | >)> 1443 | )>>> 1444 | 1445 | "SIMPLE OBJ-HERE: IS IT IN THE ROOM OR IN THE GUY'S HAND. TO DO FULL 1446 | SEARCH, USE GET-OBJECT" 1447 | 1448 | ) 1450 | > >) 1452 | (> 1453 | ) (>)>)> 1454 | > >>>> 1455 | 1456 | .OBJ> ) 1459 | (T 1460 | ) (OL .AL)) 1461 | #DECL ((NL OL) LIST) 1462 | .OBJ> 1463 | > 1464 | ) 1465 | ( >)>>)>> 1466 | 1467 | "WEIGHT: Get sum of OSIZEs of supplied list, recursing to the nth level." 1468 | 1469 | (BIGFIX) FIX (VALUE) FIX) 1471 | ,BIGFIX> 0) 1475 | ()> 1476 | >>> 1477 | .OBJL>> 1478 | 1479 | 1480 | 1481 | ) (OBJ <2 .VEC>)) 1482 | #DECL ((VEC) VECTOR (RM) ROOM (OBJ) ) 1483 | > ) 1484 | (.OBJ 1485 | )>> 1486 | 1487 | 1490 | )>> 1493 | >> 1494 | 1495 | ) (LIT? 1496 | )) 1497 | #DECL ((ME) ADV (OBJ) OBJECT (LAMPO) ACTIVATION) 1498 | 1499 | <3 .PRSVEC> 1500 | > 1501 | ) 1502 | () 1503 | ( 0> 1504 | >>) 1505 | (T )> 1506 | 0> ) 1507 | ( 1508 | " is now on."> 1509 | 1510 | > 1511 | >)>)>)>> 1512 | 1513 | )) 1514 | #DECL ((ME) ADV (OBJ) OBJECT (LAMPO) ACTIVATION) 1515 | ) 1516 | ( 0> 1517 | >>) 1518 | ( )> 1519 | 0> ) 1520 | ( 1521 | " is now off."> 1522 | >)>)>> 1523 | 1524 | "PARSER & AUXILIARIES" 1525 | 1526 | > 1527 | 1528 | ;"SET UP INPUT ERROR HANDLER TO CAUSE EPARSE TO FALSE OUT" 1529 | 1530 | 1531 | 1532 | > 1533 | 1534 | > 1535 | 1536 | ) 1538 | 1539 | > >>> 1540 | ) (>)>)>> 1541 | 1542 | 5>>> 1543 | 1544 | (BRKS) STRING> 1545 | 1546 | >) (SILENT? <>) 1548 | "AUX" (BRKS ,BRKS) (V ,LEXV) (S1 .S) (QUOT <>)) 1549 | #DECL ((S S1 SX BRKS) STRING 1550 | (SILENT? QUOT) (VALUE) 1551 | (V) ) 1552 | 1553 | )) 1554 | #DECL ((X) (STR) STRING) 1555 | >>> 1556 | .V> 1557 | !\?> 4>>>) 1559 | ( > .BRKS>> 1563 | > 1564 | !\'> <==? <1 .S1> !\">> 1565 | 1566 | 1567 | >> 1568 | 1570 | >) 1572 | ( > 1578 | 5>> 1579 | .SLEN>>>> 1580 | >)>)> 1581 | > )> 1582 | >)> 1583 | >>)> 1584 | ,LEXV> 1585 | 1586 | 1588 | 1589 | 1592 | >) 1594 | ( ,BRKS>> )>> 1595 | .S>> 1596 | 1597 | 1600 | >)) 1601 | > 1602 | >>)>> 1603 | .STR> 1604 | .STR> 1605 | 1606 | 1609 | > 0> 1612 | > 1613 | )>>> 1614 | 1615 | "RUNS ONLY IF PARSE WON, TO PREVENT SCREWS FROM TYPOS." 1616 | 1617 | )) 1618 | #DECL ((HACK) HACK (FLG) ) 1619 | > 1621 | > 1622 | 1623 | )) 1624 | #DECL ((EV) CEVENT (TICK) FIX) 1625 | >) 1626 | (<0? .TICK>) 1627 | ( 1628 | 1629 | > OFFSET> 1630 | ) 1631 | ()>) 1632 | (>> 1633 | 1634 | 1635 | 1636 | > OFFSET> 1637 | ) 1638 | ()>>)>> 1639 | >)> 1640 | .FLG> 1641 | 1642 | 1643 | 1644 | ) (CLOCKER ,CLOCKER)) 1645 | #DECL ((CEV) CEVENT (NUM) (CLOCKER) HACK) 1646 | >> 1647 | )>)> 1648 | )>> 1649 | 1650 | 1651 | 1652 | > 1653 | 1654 | >>> 1655 | 1656 | ) (WIN ,WINNER) (AV )) 1657 | #DECL ((OBJ) OBJECT (WIN) ADV (AV) ) 1658 | >> 1659 | " must be on the ground to be boarded.">) 1660 | ( 1661 | 1665 | ", cretin!">) 1666 | (T 1667 | ) 1668 | ( "."> 1669 | 1670 | !)>)>)>) 1673 | ( 1676 | "s.">)>> 1677 | 1678 | ) (WIN ,WINNER) (AV )) 1679 | #DECL ((OBJ) OBJECT (WIN) ADV (AV) ) 1680 | 1681 | ) 1682 | ( 1683 | 1685 | > 1686 | >>) 1689 | ()>) 1692 | ()>> 1694 | 1695 | ) (HERE ,HERE) 1697 | (LB )) 1698 | #DECL ((HERE RM) ROOM (WIN) ADV (AV) 1699 | (LB) ) 1700 | >>>> 1701 | 1702 | .LB 1703 | .AV 1704 | ,RLANDBIT> 1705 | >>>> 1706 | ".">) 1707 | ()> 1708 | <>) 1709 | ( >) 1710 | (T 1711 | 1712 | > 1713 | .RM>)> 1714 | )> 1715 | > 1716 | 1717 | T)>> 1718 | 1719 | > 1723 | 1724 | T>> 1726 | 1727 | 1730 | > 1731 | 1732 | ) (V >) (HS ,HERE) 1733 | (WIN ,WINNER) (PLAY ,PLAYER)) 1734 | #DECL ((PO) OBJECT (PV V) VECTOR (HS) ROOM (WIN PLAY) ADV) 1735 | 1736 | ) 1737 | ( 1738 | > 1739 | 1740 | 1741 | ) 1742 | ()>> 1743 | 1744 | -------------------------------------------------------------------------------- /zork/madman/madadv.help: -------------------------------------------------------------------------------- 1 | Useful commands 2 | 3 | The 'brief' command suppresses printing of long room descriptions 4 | for rooms which have been visited. The 'unbrief' command turns this 5 | off. The 'superbrief' command suppresses printing of long room 6 | descriptions for all rooms; 'unsup' turns this off. 7 | The 'info' command prints a file which might give some idea of 8 | what the game is about. 9 | The 'quit' command (or ctrl-G) prints your score, and asks whether 10 | you wish to continue playing. 11 | The 'script', 'unscript', 'save', and 'restore' commands are 12 | useful if you are a local user. 13 | Dungeon Command Parser 14 | 15 | A command is one line of text terminated by a carriage return. 16 | For reasons of simplicity all words are distinguished by their first 17 | five letters. All others are ignored. For example, your typing 18 | 'DISASSEMBLE THE ENCYLOPEDIA' while meaningless is also creating 19 | excess effort for your fingers. Note also that ambiguities can be 20 | introduced by this: 'unscr' is 'UNSCRipt', not 'UNSCRew'. 21 | 22 | You are talking to a fairly stupid parser, which understands the 23 | following types of things. 24 | 25 | Actions: 26 | Among the more obvious of these, TAKE, DROP, etc. Fairly general 27 | forms of these may be used: PICK UP, PUT DOWN, etc. 28 | 29 | Directions: 30 | NORTH, SOUTH, UP, DOWN, etc. and their various abbreviations. 31 | Other more obscure directions (LAND, CLIMB) are appropriate in 32 | only certain situations. 33 | 34 | Objects: 35 | Most objects have names, and can be referenced by them. 36 | 37 | Adjectives: 38 | Some adjectives are understood and are required when there are 39 | two objects which can be referenced with the same 'name' (e.g. 40 | DOORs, BUTTONs) 41 | 42 | Prepositions: 43 | It may be necessary in some cases to include prepositions, but 44 | the parser attempts to handle cases which aren't ambiguous 45 | without. Thus 'Give car to demon' will work, as will 'Give demon 46 | car.' 'Give car demon' probably won't do anything interesting. 47 | When a preposition is used, it should be appropriate: 'Give car 48 | with demon' does not parse. 49 | 50 | Sentences: 51 | 52 | The parser understands a reasonable number of things. Rather 53 | than listing them, we advise you to do reasonable things. 54 | 55 | Ambiguity: 56 | 57 | The parser tries to be clever about what to do in the case of 58 | actions which require objects in the case that the object is not 59 | specified. If there is only one possible object, the parser will 60 | assume that it should be used. Otherwise, the parser will ask. 61 | Most questions asked by the parser can be answered (e.g. With 62 | what?). 63 | 64 | Inventory: Lists the objects in your possession. 65 | 66 | Look: Prints a description of your surroundings. 67 | 68 | Containment: 69 | 70 | Some objects can contain other objects. Many such containers can 71 | be opened and closed; the rest are always open. They may or may 72 | not be transparent. For you to access (take, for example) an 73 | object which is in a container, the container must be open; for you 74 | to see such an object, the container must either be open or 75 | transparent. Containers have a capacity, and objects have sizes; 76 | the number of objects which will fit therefore depends on their 77 | sizes. You may "put" any object you have access to (it need not be 78 | in your hands) into any other object; at some point, the program 79 | will attempt to pick it up if you don't already have it, which 80 | process may fail if you're carrying too much. Although containers 81 | can contain other containers, the program doesn't access more than 82 | one level down. 83 | 84 | Fighting: 85 | 86 | Occupants of the dungeon will, as a rule, fight back when 87 | attacked; they may in some cases attack you unprovoked. Useful 88 | verbs here are 'attack with ', 'kill', etc. 89 | Knife-throwing may or may not be useful. The adventurer has a 90 | fighting strength, which varies with time: in particular, being 91 | in a fight, getting killed, and getting injured, all lower it. 92 | One's carrying capacity may also be reduced after a fight. 93 | Strength is regained with time. (Thus, it is not a good idea to 94 | fight someone immediately after being killed.) Other details 95 | may become apparent in the course of a few melees. The 96 | 'diagnose' command describes your state of health. -------------------------------------------------------------------------------- /zork/madman/madadv.save: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/madman/madadv.save -------------------------------------------------------------------------------- /zork/madman/omadad.save: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MITDDC/zork/d94501340842e006791fce0757dc0043b8ec8916/zork/madman/omadad.save --------------------------------------------------------------------------------