Project Thesius (Saga of a Spy - The Rick Hanson Trilogy, Part 2) disassembly ============================================================================= Project Thesius is a text adventure published by Robico Software for the BBC Micro in 1986. It was written by Mike O'Leary and Robert O'Leary, and is the second part of the Saga of a Spy trilogy, after Rick Hanson, followed by Myorem. The following disassembly was created by reverse engineering binary images, without access to any source code. It is nevertheless reasonably complete, allowing the technical approaches used to be understood. The author of this disassembly imposes no additional copyright restrictions beyond those already present on the game itself. It is provided for educational purposes only, and it is hoped that the original authors will accept it in the good faith it was intended - as a tribute to their skills. Technical notes =============== The game has 201 rooms, 36 objects and approximately 20k of compressed text. The parser understands 172 words, including 80 verbs. The game uses a similar memory layout and engine to its sequel, Myorem. Unlike the other two games in the trilogy, it runs in MODE 6. The parser extends the one in Rick Hanson to permit the use of "it", "them" and "except". Interesting pokes ================= &1b93 = &07, &1b08 = &83, &1b2c = &83 (set breakpoint at &1b8d) use MODE 7, yellow text Game disassembly ================ ; RICKMC ; 001900 001901 000069 ; tape_filing_system_number &1900 01 ; loader_entry_point &1901 a9 ff LDA #&ff &1903 85 74 STA &74 ; tape_version &1905 a9 c8 LDA #&c8 ; Read/Write BREAK/ESCAPE effect &1907 a2 03 LDX #&03 ; Clear memory on next reset &1909 a0 00 LDY #&00 &190b 20 f4 ff JSR &fff4 ; OSBYTE &190e a9 d2 LDA #&d2 ; Read/Write sound supression flag &1910 a2 01 LDX #&01 ; disable sound &1912 a0 00 LDY #&00 &1914 20 f4 ff JSR &fff4 ; OSBYTE &1917 a9 e1 LDA #&e1 ; Read/Write Interpretation of characters &80-&8F &1919 a2 00 LDX #&00 ; ignore &191b a0 00 LDY #&00 &191d 20 f4 ff JSR &fff4 ; OSBYTE &1920 a0 00 LDY #&00 &1922 a9 00 LDA #&00 ; Read filing system number &1924 20 da ff JSR &ffda ; OSARGS &1927 cd 00 19 CMP &1900 ; tape_filing_system_number &192a d0 02 BNE &192e ; not_tape_filing_system &192c e6 74 INC &74 ; tape_version ; not_tape_filing_system &192e a2 43 LDX #&43 &1930 a0 19 LDY #&19 ; &1943 = load_adcode1 &1932 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ADCODE1 &1935 a2 50 LDX #&50 &1937 a0 19 LDY #&19 ; &1950 = load_adcode2 &1939 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ADCODE2 &193c a2 5d LDX #&5d &193e a0 19 LDY #&19 ; &195d = run_adcode3 &1940 4c f7 ff JMP &fff7 ; OSCLI # *RUN ADCODE3 ; load_adcode1_string &1943 4c 4f 41 44 20 41 44 43 4f 44 45 31 0d ; "LOAD ADCODE1" ; load_adcode2_string &1950 4c 4f 41 44 20 41 44 43 4f 44 45 32 0d ; "LOAD ADCODE2" ; run_adcode3_string &195d 52 55 4e 20 41 44 43 4f 44 45 33 0d ; "RUN ADCODE3" ; ADCODE1 ; 0008c0 0008c0 0003f5 ; room_exits_count_and_nsew ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &08c0 d5 53 93 f6 f8 b5 63 f6 a4 21 42 82 01 42 12 22 ; &00 # ....8421 number of exits &08d0 42 92 e3 c2 c2 c2 c2 c2 82 01 c2 42 12 22 42 82 ; &10 # ...1.... set if room has exit north &08e0 73 01 32 73 c2 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ; &20 # ..2..... set if room has exit south &08f0 f8 22 02 c3 52 32 62 e3 a2 32 92 11 12 42 82 03 ; &30 # .4...... set if room has exit east &0900 12 22 82 c2 54 93 a3 63 52 42 d4 d5 d5 93 f8 f8 ; &40 # 8....... set if room has exit west &0910 f8 f8 f8 f8 f8 f8 82 41 81 62 92 22 02 02 01 c3 ; &50 &0920 c2 63 32 12 01 12 22 12 21 c2 81 02 42 82 01 92 ; &60 &0930 e4 42 41 82 02 12 21 01 12 32 32 22 01 d6 74 63 ; &70 &0940 e6 b4 d4 02 02 11 81 02 21 12 21 12 f4 d3 82 02 ; &80 &0950 e3 73 21 11 22 02 01 01 01 02 42 11 21 e3 c2 12 ; &90 &0960 82 c2 11 62 c2 82 41 a3 32 73 a2 11 32 32 12 c3 ; &a0 &0970 62 32 12 02 02 82 43 02 02 01 02 02 82 f8 f8 f8 ; &b0 &0980 f8 f8 f8 f8 f8 c2 c2 81 81 ; &c0 ; room_exits_other_directions ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0989 03 01 02 05 0f 0a 04 0c 09 00 08 40 80 02 04 01 ; &00 # .......1 set if room has exit northeast &0999 08 00 00 00 00 00 00 00 40 80 00 02 04 01 08 04 ; &10 # ......2. set if room has exit northwest &09a9 00 80 00 00 00 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f ; &20 # .....4.. set if room has exit southeast &09b9 0f 10 30 20 00 00 00 00 00 00 00 00 04 02 01 19 ; &30 # ....8... set if room has exit southwest &09c9 08 02 04 00 11 02 08 04 00 08 01 03 03 02 0f 0f ; &40 # ...1.... set if room has exit up &09d9 0f 0f 0f 0f 0f 0f 04 00 00 00 00 20 30 50 20 10 ; &50 # ..2..... set if room has exit down &09e9 00 02 00 40 80 04 20 10 00 00 00 30 20 10 20 00 ; &60 # .4...... set if room has exit in &09f9 02 40 00 20 06 04 00 20 10 00 00 10 80 23 01 04 ; &70 # 8....... set if room has exit out &0a09 1c 08 02 30 60 00 00 30 00 20 00 80 00 00 20 30 ; &80 &0a19 00 00 00 00 10 60 80 40 40 60 10 00 00 00 00 08 ; &90 &0a29 01 00 00 00 00 04 00 02 00 00 00 00 00 00 08 01 ; &a0 &0a39 00 00 20 30 30 10 03 18 30 20 24 30 10 0f 0f 0f ; &b0 &0a49 0f 0f 0f 0f 0f 00 00 00 00 ; &c0 ; room_exit_data ; N S E W NE NW SE SW U D I O &0a52 04 02 01 05 03 ; room &00 : 04 02 01 05 03 &0a57 03 00 04 ; room &01 : 03 00 04 &0a5a 05 00 04 ; room &02 : 05 00 04 &0a5d 06 01 04 0d 07 00 ; room &03 : 06 01 04 0d 07 00 &0a63 07 00 05 03 08 06 02 01 ; room &04 : 07 00 05 03 08 06 02 01 &0a6b 08 02 04 07 00 ; room &05 : 08 02 04 07 00 &0a70 03 07 04 ; room &06 : 03 07 04 &0a73 09 04 08 06 05 03 ; room &07 : 09 04 08 06 05 03 &0a79 05 07 0a 04 ; room &08 : 05 07 0a 04 &0a7d 07 ; room &09 : 07 &0a7e 0b 08 ; room &0a : 0b 08 &0a80 0a 0c ; room &0b : 0a 0c &0a82 0b ; room &0c : 0b &0a83 03 0e ; room &0d : 03 0e &0a85 0f 0d ; room &0e : 0f 0d &0a87 0e 10 ; room &0f : 0e 10 &0a89 11 0f ; room &10 : 11 0f &0a8b 12 10 ; room &11 : 12 10 &0a8d 11 16 13 ; room &12 : 11 16 13 &0a90 12 14 ; room &13 : 12 14 &0a92 13 15 ; room &14 : 13 15 &0a94 14 1a ; room &15 : 14 1a &0a96 17 12 ; room &16 : 17 12 &0a98 18 16 ; room &17 : 18 16 &0a9a 17 19 ; room &18 : 17 19 &0a9c 18 ; room &19 : 18 &0a9d 15 1b ; room &1a : 15 1b &0a9f 1a 1c ; room &1b : 1a 1c &0aa1 1d 1b ; room &1c : 1d 1b &0aa3 1c 1e ; room &1d : 1c 1e &0aa5 2d 1d ; room &1e : 2d 1d &0aa7 20 25 ; room &1f : 20 25 &0aa9 22 23 1f ; room &20 : 22 23 1f &0aac 5d ; room &21 : 5d &0aad 59 20 ; room &22 : 59 20 &0aaf 20 48 24 ; room &23 : 20 48 24 &0ab2 25 23 ; room &24 : 25 23 &0ab4 2a 29 26 24 29 1f 2a 29 ; room &25 : 2a 29 26 24 29 1f 2a 29 # Village maze &0abc 30 2a 27 25 2a 2a 2b 29 ; room &26 : 30 2a 27 25 2a 2a 2b 29 # &0ac4 31 2b 28 26 2a 2b 2c 2a ; room &27 : 31 2b 28 26 2a 2b 2c 2a # &0acc 30 2c 42 27 49 27 2b 2b ; room &28 : 30 2c 42 27 49 27 2b 2b # &0ad4 29 2d 2a 29 26 29 2e 29 ; room &29 : 29 2d 2a 29 26 29 2e 29 # &0adc 26 2e 2b 29 27 25 2f 2d ; room &2a : 26 2e 2b 29 27 25 2f 2d # &0ae4 2b 2f 2c 2a 28 26 2f 30 ; room &2b : 2b 2f 2c 2a 28 26 2f 30 # &0aec 28 2f 30 2b 2b 30 2e 26 ; room &2c : 28 2f 30 2b 2b 30 2e 26 # &0af4 29 26 2a 1e 2a 29 2e 30 ; room &2d : 29 26 2a 1e 2a 29 2e 30 # &0afc 2a 3c 2f 2d 2b 29 2f 30 ; room &2e : 2a 3c 2f 2d 2b 29 2f 30 # &0b04 2b 27 30 2e 2c 2a 2f 2f ; room &2f : 2b 27 30 2e 2c 2a 2f 2f # &0b0c 2c 2d 2e 2f 2c 2b 26 2a ; room &30 : 2c 2d 2e 2f 2c 2b 26 2a # &0b14 27 32 ; room &31 : 27 32 &0b16 33 31 ; room &32 : 33 31 &0b18 3a 34 32 ; room &33 : 3a 34 32 &0b1b 35 33 ; room &34 : 35 33 &0b1d 36 34 ; room &35 : 36 34 &0b1f 35 37 ; room &36 : 35 37 &0b21 3b 38 36 ; room &37 : 3b 38 36 &0b24 39 37 ; room &38 : 39 37 &0b26 38 3a ; room &39 : 38 3a &0b28 39 33 ; room &3a : 39 33 &0b2a 37 ; room &3b : 37 &0b2b 2e 3d ; room &3c : 2e 3d &0b2d 3e 3c ; room &3d : 3e 3c &0b2f 3d 3f ; room &3e : 3d 3f &0b31 40 3e 43 ; room &3f : 40 3e 43 &0b34 41 3f ; room &40 : 41 3f &0b36 40 42 ; room &41 : 40 42 &0b38 28 41 ; room &42 : 28 41 &0b3a 44 3f ; room &43 : 44 3f &0b3c 47 45 46 43 ; room &44 : 47 45 46 43 &0b40 46 44 47 ; room &45 : 46 44 47 &0b43 45 47 44 ; room &46 : 45 47 44 &0b46 44 46 45 ; room &47 : 44 46 45 &0b49 23 58 ; room &48 : 23 58 &0b4b 4a 28 ; room &49 : 4a 28 &0b4d 4e 4b 49 4f ; room &4a : 4e 4b 49 4f &0b51 4f 4c 4a 50 4e ; room &4b : 4f 4c 4a 50 4e &0b56 50 4d 4b 51 4f ; room &4c : 50 4d 4b 51 4f &0b5b 51 4c 50 ; room &4d : 51 4c 50 &0b5e 55 4a 4f 4e 54 55 4b 55 ; room &4e : 55 4a 4f 4e 54 55 4b 55 # Forest maze &0b66 54 4b 50 54 55 55 4c 4a ; room &4f : 54 4b 50 54 55 55 4c 4a # &0b6e 53 4c 4f 54 53 54 4d 4b ; room &50 : 53 4c 4f 54 53 54 4d 4b # &0b76 51 4d 52 50 53 53 55 4c ; room &51 : 51 4d 52 50 53 53 55 4c # &0b7e 53 51 55 53 54 56 50 53 ; room &52 : 53 51 55 53 54 56 50 53 # &0b86 53 4f 54 55 55 53 4f 51 ; room &53 : 53 4f 54 55 55 53 4f 51 # &0b8e 54 54 53 55 53 55 4f 4e ; room &54 : 54 54 53 55 53 55 4f 4e # &0b96 55 4e 54 55 53 55 4e 4f ; room &55 : 55 4e 54 55 53 55 4e 4f # &0b9e 57 52 ; room &56 : 57 52 &0ba0 56 ; room &57 : 56 &0ba1 48 ; room &58 : 48 &0ba2 22 5a ; room &59 : 22 5a &0ba4 5b 59 ; room &5a : 5b 59 &0ba6 5a 5c ; room &5b : 5a 5c &0ba8 5b 5d ; room &5c : 5b 5d &0baa 5c 21 ; room &5d : 5c 21 &0bac 5f ; room &5e : 5f &0bad 69 60 5e ; room &5f : 69 60 5e &0bb0 5f 61 ; room &60 : 5f 61 &0bb2 62 60 65 ; room &61 : 62 60 65 &0bb5 61 63 ; room &62 : 61 63 &0bb7 62 64 ; room &63 : 62 64 &0bb9 63 ; room &64 : 63 &0bba 66 61 ; room &65 : 66 61 &0bbc 65 67 ; room &66 : 65 67 &0bbe 68 66 ; room &67 : 68 66 &0bc0 67 ; room &68 : 67 &0bc1 6a 5f ; room &69 : 6a 5f &0bc3 69 ; room &6a : 69 &0bc4 6c 6a ; room &6b : 6c 6a &0bc6 6d 6b ; room &6c : 6d 6b &0bc8 6c 6e ; room &6d : 6c 6e &0bca 6d ; room &6e : 6d &0bcb 70 71 ; room &6f : 70 71 &0bcd 6f 73 72 74 ; room &70 : 6f 73 72 74 &0bd1 6f 7c ; room &71 : 6f 7c &0bd3 70 ; room &72 : 70 &0bd4 70 78 ; room &73 : 70 78 &0bd6 75 70 ; room &74 : 75 70 &0bd8 76 74 ; room &75 : 76 74 &0bda 75 ; room &76 : 75 # (deadly) &0bdb 6f ; room &77 : 6f # (deadly) &0bdc 79 73 ; room &78 : 79 73 &0bde 7a 78 ; room &79 : 7a 78 &0be0 7b 79 ; room &7a : 7b 79 &0be2 7a 7d ; room &7b : 7a 7d &0be4 71 ; room &7c : 71 &0be5 80 82 7e 81 7f 7b ; room &7d : 80 82 7e 81 7f 7b &0beb 7f 85 7d 80 ; room &7e : 7f 85 7d 80 &0bef 7e 80 7d ; room &7f : 7e 80 7d &0bf2 7d 81 7f 82 7e 87 ; room &80 : 7d 81 7f 82 7e 87 &0bf8 88 82 80 7d ; room &81 : 88 82 80 7d &0bfc 81 86 7d 80 ; room &82 : 81 86 7d 80 &0c00 84 7f ; room &83 : 84 7f &0c02 83 8b ; room &84 : 83 8b &0c04 7e ; room &85 : 7e &0c05 82 ; room &86 : 82 &0c06 89 80 ; room &87 : 89 80 &0c08 81 ; room &88 : 81 &0c09 8a 87 ; room &89 : 8a 87 &0c0b 89 ; room &8a : 89 # (deadly) &0c0c 8c 84 ; room &8b : 8c 84 &0c0e 94 8b 8d 90 ; room &8c : 94 8b 8d 90 &0c12 9c 8e 8c ; room &8d : 9c 8e 8c &0c15 8d 8f ; room &8e : 8d 8f &0c17 8e 8a ; room &8f : 8e 8a &0c19 9b 8c 91 ; room &90 : 9b 8c 91 &0c1c 92 93 90 ; room &91 : 92 93 90 &0c1f 91 ; room &92 : 91 &0c20 91 ; room &93 : 91 &0c21 8c 95 ; room &94 : 8c 95 &0c23 94 96 ; room &95 : 94 96 &0c25 95 ; room &96 : 95 &0c26 96 ; room &97 : 96 # (deadly) &0c27 96 ; room &98 : 96 # (deadly) &0c28 9a 96 ; room &99 : 9a 96 &0c2a 9d 99 ; room &9a : 9d 99 &0c2c 90 ; room &9b : 90 &0c2d 8d ; room &9c : 8d &0c2e 9f 9e 9a ; room &9d : 9f 9e 9a &0c31 a4 9d ; room &9e : a4 9d &0c33 9d a0 ; room &9f : 9d a0 &0c35 a1 9f ; room &a0 : a1 9f &0c37 a0 a3 ; room &a1 : a0 a3 &0c39 a3 ; room &a2 : a3 &0c3a a2 a1 ; room &a3 : a2 a1 &0c3c a5 9e ; room &a4 : a5 9e &0c3e a4 a7 ; room &a5 : a4 a7 &0c40 a7 ; room &a6 : a7 &0c41 a8 a6 a5 ; room &a7 : a8 a6 a5 &0c44 a7 a9 ; room &a8 : a7 a9 &0c46 a8 ab aa ; room &a9 : a8 ab aa &0c49 ac a9 ; room &aa : ac a9 &0c4b a9 ; room &ab : a9 &0c4c aa ad ; room &ac : aa ad &0c4e ac ae ; room &ad : ac ae &0c50 ad af ; room &ae : ad af &0c52 c8 b0 ae ; room &af : c8 b0 ae &0c55 b1 af ; room &b0 : b1 af &0c57 b0 b2 ; room &b1 : b0 b2 &0c59 b1 b3 ; room &b2 : b1 b3 &0c5b b2 b4 ; room &b3 : b2 b4 &0c5d b3 b5 ; room &b4 : b3 b5 &0c5f b6 b4 ; room &b5 : b6 b4 &0c61 b5 b7 ba ; room &b6 : b5 b7 ba &0c64 b6 b8 ; room &b7 : b6 b8 &0c66 b9 b7 ; room &b8 : b9 b7 &0c68 b8 ; room &b9 : b8 &0c69 b6 bb ; room &ba : b6 bb &0c6b ba bc ; room &bb : ba bc &0c6d bd bb ; room &bc : bd bb &0c6f bf c4 bc bf bf bf bf bf ; room &bd : bf c4 bc bf bf bf bf bf # Minefield &0c77 bf bf c5 bf bf bf bf c0 ; room &be : bf bf c5 bf bf bf bf c0 # &0c7f bf bf bf bf bf bf bf bf ; room &bf : bf bf bf bf bf bf bf bf # (deadly) &0c87 bf c1 bf bf be bf bf bf ; room &c0 : bf c1 bf bf be bf bf bf # &0c8f c0 c2 bf bf bf bf bf bf ; room &c1 : c0 c2 bf bf bf bf bf bf # &0c97 c1 bf bf bf c3 bf bf bf ; room &c2 : c1 bf bf bf c3 bf bf bf # &0c9f bf bf bf c4 bf bf bf c2 ; room &c3 : bf bf bf c4 bf bf bf c2 # &0ca7 bd bf c3 bf bf bf bf bf ; room &c4 : bd bf c3 bf bf bf bf bf # &0caf c6 be ; room &c5 : c6 be &0cb1 c7 c5 ; room &c6 : c7 c5 &0cb3 c6 ; room &c7 : c6 &0cb4 af ; room &c8 : af ; ADCODE3 ; 001100 001b8d 001bad ; readable_objects &1100 01 ; OBJECT_NOTICE &1101 02 ; OBJECT_SIGN &1102 08 ; OBJECT_MILESTONE &1103 09 ; OBJECT_PAGE &1104 0d ; OBJECT_NEWSPAPER &1105 1d ; OBJECT_MAP &1106 1e ; OBJECT_PLANS &1107 21 ; OBJECT_NAME_TAG ; readable_object_string_ids &1108 05 ; string_205 : "Lift receiver, insert coin into slot and dial number. Make call then place receiver on telephone. " &1109 04 ; string_204 : "The sign says: "Swimming in the cove is illegal"! " &110a 06 ; string_206 : "Witherton 1 mile. " &110b 07 ; string_207 : "The following telephone numbers are listed: " &110c 17 ; string_217 : "Entertainment. The Hayrick Cinema: "Forest Road End" 15. Times of showing: noon, quarter past three and nine o'clock. " &110d 2e ; string_22e : "The map indicates a path through a mine field! Arrows point south, east, southwest, north, north, northeast and east. " &110e 2f ; string_22f : "You fail to understand anything! " &110f 3a ; string_23a : ""Billy". " ; game_state ; object_locations &1110 0c ; &00 (OBJECT_TOWEL) : ROOM_0c ; "the hut" &1111 19 ; &01 (OBJECT_NOTICE) : ROOM_19 ; "the telephone box" &1112 03 ; &02 (OBJECT_SIGN) : ROOM_03 ; "the middle beach" &1113 19 ; &03 (OBJECT_TELEPHONE) : ROOM_19 ; "the telephone box" &1114 cc ; &04 (OBJECT_RECEIVER) : ROOM_OBJECTS + OBJECT_TELEPHONE &1115 fc ; &05 (OBJECT_LARGE_CHEST) : ROOM_HIDDEN &1116 fe ; &06 (OBJECT_DIVING_SUIT) : ROOM_WEARING &1117 fe ; &07 (OBJECT_FLIPPERS) : ROOM_WEARING &1118 12 ; &08 (OBJECT_MILESTONE) : ROOM_12 ; "a long road" &1119 19 ; &09 (OBJECT_PAGE) : ROOM_19 ; "the telephone box" &111a fb ; &0a (OBJECT_COIN) : ROOM_LOCKED_IN_LARGE_CHEST &111b fb ; &0b (OBJECT_SHOES) : ROOM_LOCKED_IN_LARGE_CHEST &111c fb ; &0c (OBJECT_OVERALLS) : ROOM_LOCKED_IN_LARGE_CHEST &111d fc ; &0d (OBJECT_NEWSPAPER) : ROOM_HIDDEN &111e 21 ; &0e (OBJECT_CARNATION) : ROOM_21 ; "a flower bed" &111f d5 ; &0f (OBJECT_BEACH_PASS) : ROOM_OBJECTS + OBJECT_NEWSPAPER &1120 fc ; &10 (OBJECT_RABBIT) : ROOM_HIDDEN &1121 fc ; &11 (OBJECT_SNARE) : ROOM_HIDDEN &1122 3b ; &12 (OBJECT_LITTER_BIN) : ROOM_3b ; "a statue" &1123 58 ; &13 (OBJECT_CHEESE_WIRE) : ROOM_58 ; "some rough ground" &1124 3b ; &14 (OBJECT_STATUE) : ROOM_3b ; "a statue" &1125 fc ; &15 (OBJECT_SPANNER) : ROOM_HIDDEN &1126 64 ; &16 (OBJECT_BATTERY) : ROOM_64 ; "a miner's cabin" &1127 64 ; &17 (OBJECT_BED) : ROOM_64 ; "a miner's cabin" &1128 68 ; &18 (OBJECT_MINING_HELMET) : ROOM_68 ; "a tunnel" &1129 e0 ; &19 (OBJECT_SHEET) : ROOM_OBJECTS + OBJECT_BED &112a 92 ; &1a (OBJECT_LAB_COAT) : ROOM_92 ; "a storeroom" &112b ab ; &1b (OBJECT_SCALES) : ROOM_ab ; "a storeroom" &112c 9c ; &1c (OBJECT_MASK) : ROOM_9c ; "a storeroom" &112d a2 ; &1d (OBJECT_MAP) : ROOM_a2 ; "the security office" &112e e9 ; &1e (OBJECT_PLANS) : ROOM_OBJECTS + OBJECT_PROFESSOR &112f fb ; &1f (OBJECT_GLOVES) : ROOM_LOCKED_IN_LARGE_CHEST &1130 fc ; &20 (OBJECT_PROFESSOR) : ROOM_HIDDEN &1131 c9 ; &21 (OBJECT_NAME_TAG) : ROOM_OBJECTS + OBJECT_TOWEL &1132 a7 ; &22 (OBJECT_COMPUTER) : ROOM_a7 ; "a corridor" &1133 c8 ; &23 (OBJECT_LEVER) : ROOM_c8 ; "a storeroom" ; object_states &1134 00 ; &00 (OBJECT_TOWEL) &1135 00 ; &01 (OBJECT_NOTICE) &1136 00 ; &02 (OBJECT_SIGN) &1137 00 ; &03 (OBJECT_TELEPHONE) &1138 00 ; &04 (OBJECT_RECEIVER) &1139 00 ; &05 (OBJECT_LARGE_CHEST) &113a 00 ; &06 (OBJECT_DIVING_SUIT) &113b 00 ; &07 (OBJECT_FLIPPERS) &113c 00 ; &08 (OBJECT_MILESTONE) &113d 00 ; &09 (OBJECT_PAGE) &113e 00 ; &0a (OBJECT_COIN) &113f 00 ; &0b (OBJECT_SHOES) &1140 00 ; &0c (OBJECT_OVERALLS) &1141 00 ; &0d (OBJECT_NEWSPAPER) &1142 00 ; &0e (OBJECT_CARNATION) &1143 00 ; &0f (OBJECT_BEACH_PASS) &1144 00 ; &10 (OBJECT_RABBIT) &1145 00 ; &11 (OBJECT_SNARE) &1146 00 ; &12 (OBJECT_LITTER_BIN) &1147 00 ; &13 (OBJECT_CHEESE_WIRE) &1148 00 ; &14 (OBJECT_STATUE) &1149 00 ; &15 (OBJECT_SPANNER) &114a 00 ; &16 (OBJECT_BATTERY) &114b 00 ; &17 (OBJECT_BED) &114c 00 ; &18 (OBJECT_MINING_HELMET) &114d 00 ; &19 (OBJECT_SHEET) &114e 00 ; &1a (OBJECT_LAB_COAT) &114f 00 ; &1b (OBJECT_SCALES) &1150 00 ; &1c (OBJECT_MASK) &1151 00 ; &1d (OBJECT_MAP) &1152 00 ; &1e (OBJECT_PLANS) &1153 00 ; &1f (OBJECT_GLOVES) &1154 00 ; &20 (OBJECT_PROFESSOR) &1155 00 ; &21 (OBJECT_NAME_TAG) &1156 00 ; &22 (OBJECT_COMPUTER) &1157 00 ; &23 (OBJECT_LEVER) ; room_states ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1158 01 09 06 02 01 03 01 03 02 00 00 00 00 00 00 00 ; &00 &1168 00 00 00 00 00 00 00 00 00 00 01 02 00 00 00 01 ; &10 &1178 02 00 03 01 01 00 00 00 00 00 00 00 00 00 00 00 ; &20 &1188 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &30 &1198 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &40 &11a8 00 00 00 00 00 00 00 00 00 01 01 01 00 00 00 01 ; &50 &11b8 12 03 00 00 00 00 00 00 00 12 02 00 00 00 00 00 ; &60 &11c8 00 00 01 01 00 00 00 00 03 01 01 02 00 03 01 05 ; &70 &11d8 04 01 01 00 02 00 00 00 00 00 00 03 00 00 00 00 ; &80 &11e8 00 00 00 00 07 06 00 07 08 09 01 00 00 00 00 00 ; &90 &11f8 00 00 00 00 00 00 00 01 03 00 00 00 01 03 00 02 ; &a0 &1208 03 01 01 00 00 00 00 00 00 00 00 00 00 01 01 02 ; &b0 &1218 01 01 01 01 01 00 00 00 00 ; &c0 ; player_room &1221 00 ; rooms_exits &1222 ff ; DIRECTION_NORTH &1223 ff ; DIRECTION_SOUTH &1224 ff ; DIRECTION_EAST &1225 ff ; DIRECTION_WEST &1226 ff ; DIRECTION_NORTHEAST &1227 ff ; DIRECTION_NORTHWEST &1228 ff ; DIRECTION_SOUTHEAST &1229 ff ; DIRECTION_SOUTHWEST &122a ff ; DIRECTION_UP &122b ff ; DIRECTION_DOWN &122c ff ; DIRECTION_IN &122d ff ; DIRECTION_OUT ; player_is_wet &122e 80 # Negative if player is wet ; coin_state &122f 80 # Positive if telephone has credit ; page_read &1230 80 # Positive if page of telephone numbers has been read ; beach_pass_given_to_guard &1231 80 # Positive if beach pass given to guard ; helicopter_state &1232 03 # Determines if string is displayed ; dog_state &1233 80 # Positive if dog has taken rabbit ; boar_timer &1234 06 # Turns until boar charges in forest ; naked_timer &1235 00 # Turns player has spent naked in village ; helicopter_attack_timer &1236 00 # Clears manhole on 3, kills player on 4 ; bees_timer &1237 04 # Turn until bees sting, negative if bees have gone ; lamp_state &1238 80 # Positive if lamp has been ruined ; sheet_tied_room &1239 ff # Room where sheet is tied ; sheet_exit_room &123a ff # Room where sheet leads to ; unused &123b 7d ; trough_timer &123c 00 # Turns holding breath in trough ; helicopter_hostile &123d 80 # Positive if helicopter is hostile ; password_timer &123e 03 # Turns until password is displayed ; telephone_message_played &123f 80 # Positive if telephone message has been played ; dumbwaiter_state &1240 01 # Height of dumbwaiter ; door_string_ids &1241 00 &1242 00 &1243 45 ; string_245 : "It is secured by a large bolt. " &1244 00 &1245 45 ; string_245 : "It is secured by a large bolt. " &1246 00 &1247 00 &1248 00 &1249 46 ; string_246 : "A guard enters the room and seeing that you are not a scientist, kills you! " &124a 00 &124b 46 ; string_246 : "A guard enters the room and seeing that you are not a scientist, kills you! " &124c 00 &124d 00 &124e 00 ; lever_state &124f 03 # Zero if lever has been pulled ; guards_chasing &1250 80 # Positive if guards with dogs are chasing player ; professor_timer &1251 80 # Negative if professor hasn't seen player yet ; unused &1252 80 ; previous_player_room &1253 00 ; end_of_game_state ; rooms_with_doors &1254 20 ; ROOM_20 ; "a side street" &1255 22 ; ROOM_22 ; "the cottage path" &1256 73 ; ROOM_73 ; "some dusty ground" &1257 78 ; ROOM_78 ; "a dark tunnel" &1258 7b ; ROOM_7b ; "a dark tunnel" &1259 7d ; ROOM_7d ; "a courtyard" &125a 84 ; ROOM_84 ; "a window ledge" &125b 8b ; ROOM_8b ; "a disused room" &125c a7 ; ROOM_a7 ; "a corridor" &125d a8 ; ROOM_a8 ; "a corridor" &125e ac ; ROOM_ac ; "a corridor" &125f ad ; ROOM_ad ; "a corridor" &1260 af ; ROOM_af ; "a fire door" &1261 b0 ; ROOM_b0 ; "a platform" ; room_string_ids ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1262 01 01 01 04 04 04 09 09 09 16 10 12 14 0e 0e 0e ; &00 &1272 0e 0e 18 18 18 18 18 18 1a 1c 1e 1e 22 22 24 28 ; &10 &1282 28 32 2d 28 28 26 26 26 26 26 26 26 26 26 26 26 ; &20 &1292 26 48 46 4a 4a 4a 4a 4a 4a 4a 4a 4c 3e 3e 3e 3e ; &30 &12a2 3e 3e 3e 40 42 42 42 42 38 3c 3c 3c 3c 3c 3a 3a ; &40 &12b2 3a 3a 3a 3a 3a 3a 3a 44 38 2d 2d 2d 36 34 4e 50 ; &50 &12c2 50 50 55 57 59 5b 5d 5f 61 50 50 64 66 68 6a 6c ; &60 &12d2 6e 70 75 75 7a 7a 7c 73 7e 7e 7e 7e 72 83 83 83 ; &70 &12e2 83 83 83 92 94 8a 8a 8c 8a 8e 90 99 9e 9e 9e a2 ; &80 &12f2 9e 9e a0 aa a4 a6 a8 a6 a6 a6 aa a0 a0 9e 9e 9e ; &90 &1302 9e 9e b1 9e 9e 9e 8a b3 b8 bd bd a0 b3 b8 bf ce ; &a0 &1312 c1 c1 c1 c6 c6 c8 c8 c8 c8 d6 c8 c8 c8 ca ca ca ; &b0 &1322 ca ca ca ca ca d3 d3 d3 a0 ; &c0 ; object_string_ids &132b 32 ; &00 : string_032 : "towel" &132c 34 ; &01 : string_034 : "notice" &132d 36 ; &02 : string_036 : "sign" &132e 37 ; &03 : string_037 : "telephone" &132f 39 ; &04 : string_039 : "receiver" &1330 3b ; &05 : string_03b : "large chest" &1331 3e ; &06 : string_03e : "diving suit" &1332 3f ; &07 : string_03f : "pair of flippers" &1333 40 ; &08 : string_040 : "milestone which points to the west" &1334 3a ; &09 : string_03a : "page torn from a telephone directory" &1335 44 ; &0a : string_044 : "coin" &1336 46 ; &0b : string_046 : "pair of shoes" &1337 47 ; &0c : string_047 : "pair of overalls" &1338 49 ; &0d : string_049 : "newspaper" &1339 4a ; &0e : string_04a : "pink carnation" &133a 48 ; &0f : string_048 : "Beach Pass" &133b 4d ; &10 : string_04d : "snared rabbit" &133c 4f ; &11 : string_04f : "snare" &133d 50 ; &12 : string_050 : "litter bin" &133e 42 ; &13 : string_042 : "length of cheese wire" &133f 52 ; &14 : string_052 : "statue" &1340 53 ; &15 : string_053 : "spanner" &1341 55 ; &16 : string_055 : "battery" &1342 56 ; &17 : string_056 : "bed" &1343 58 ; &18 : string_058 : "mining helmet" &1344 5b ; &19 : string_05b : "sheet" &1345 5d ; &1a : string_05d : "lab coat" &1346 5e ; &1b : string_05e : "bathroom weighing scales" &1347 60 ; &1c : string_060 : "face mask" &1348 61 ; &1d : string_061 : "map" &1349 62 ; &1e : string_062 : "set of plans" &134a 67 ; &1f : string_067 : "pair of leather gloves" &134b 69 ; &20 : string_069 : "corpse" &134c 68 ; &21 : string_068 : "name tag" &134d 6b ; &22 : string_06b : "computer" &134e 6d ; &23 : string_06d : "lever" ; object_extra_string_ids &134f 33 ; &00 : string_033 : "It's a normal beach towel. " &1350 35 ; &01 : string_035 : "You can see writing. " &1351 35 ; &02 : string_035 : "You can see writing. " &1352 38 ; &03 : string_038 : "The telephone is old, but in good working order. It has a dial. " &1353 43 ; &04 : string_043 : "The receiver is attached to the telephone by a coiled wire. " &1354 3c ; &05 : string_03c : "The chest is locked. A numeric keypad is set into the lid close to which is inscribed the word "Danger"! " &1355 2d ; &06 : string_02d : "You see nothing which interests you. " &1356 2d ; &07 : string_02d : "You see nothing which interests you. " &1357 35 ; &08 : string_035 : "You can see writing. " &1358 35 ; &09 : string_035 : "You can see writing. " &1359 45 ; &0a : string_045 : "The coin is made of copper. " &135a 2d ; &0b : string_02d : "You see nothing which interests you. " &135b 2d ; &0c : string_02d : "You see nothing which interests you. " &135c 4c ; &0d : string_04c : "A message is circled in the Entertainments Column of the newspaper! " &135d 2d ; &0e : string_02d : "You see nothing which interests you. " &135e 4b ; &0f : string_04b : "The Beach Pass has your picture attached to it and is stamped "Official" in red ink. " &135f 4e ; &10 : string_04e : "The rabbit has been expertly killed. " &1360 2d ; &11 : string_02d : "You see nothing which interests you. " &1361 51 ; &12 : string_051 : "The litter bin is made from yellow plastic. " &1362 2d ; &13 : string_02d : "You see nothing which interests you. " &1363 2d ; &14 : string_02d : "You see nothing which interests you. " &1364 54 ; &15 : string_054 : "The spanner is made of toughened steel and can loosen large bolts! " &1365 2d ; &16 : string_02d : "You see nothing which interests you. " &1366 57 ; &17 : string_057 : "The bed is old and large. " &1367 59 ; &18 : string_059 : "The helmet is made from hard, white plastic and has a lamp set into the front. The lamp is off. " &1368 5c ; &19 : string_05c : "It's a kingsize bed sheet. " &1369 2d ; &1a : string_02d : "You see nothing which interests you. " &136a 5f ; &1b : string_05f : "A small light emitting diode is set into the upper surface. " &136b 64 ; &1c : string_064 : "The face mask is made from a thin, green material. " &136c 35 ; &1d : string_035 : "You can see writing. " &136d 63 ; &1e : string_063 : "These are the key to Project Thesius! " &136e 2d ; &1f : string_02d : "You see nothing which interests you. " &136f 6a ; &20 : string_06a : "The dead body of the professor lies before you. " &1370 35 ; &21 : string_035 : "You can see writing. " &1371 6c ; &22 : string_06c : "It has a keyboard. " &1372 2d ; &23 : string_02d : "You see nothing which interests you. " # &00 : WORD_VERB # &01 : WORD_DIRECTION # &02 : WORD_SYSTEM_VERB # &03 : WORD_OBJECT # &04 : WORD_NOUN # &05 : WORD_PRONOUN # &06 : WORD_CONJUNCTION # &07 : WORD_EVERYTHING # &08 : WORD_EXCEPT # &80 : WORD_ACCEPTS_MULTIPLE_OBJECTS ; vocabulary value type handler &1373 6e 6f 72 74 e8 ; &00 : "north" &00 &01 &1edd = handle_north &1378 73 6f 75 74 e8 ; &01 : "south" &01 &01 &1f16 = handle_south &137d 65 61 73 f4 ; &02 : "east" &02 &01 &1f1b = handle_east &1381 77 65 73 f4 ; &03 : "west" &03 &01 &1f20 = handle_west &1385 6e 6f 72 74 68 65 61 73 f4 ; &04 : "northeast" &04 &01 &1f25 = handle_northeast &138e 6e e5 ; &05 : "ne" &04 &01 &1f25 = handle_northeast &1390 6e 6f 72 74 68 77 65 73 f4 ; &06 : "northwest" &05 &01 &1f2a = handle_northwest &1399 6e f7 ; &07 : "nw" &05 &01 &1f2a = handle_northwest &139b 73 6f 75 74 68 65 61 73 f4 ; &08 : "southeast" &06 &01 &1f2f = handle_southeast &13a4 73 e5 ; &09 : "se" &06 &01 &1f2f = handle_southeast &13a6 73 6f 75 74 68 77 65 73 f4 ; &0a : "southwest" &07 &01 &1f34 = handle_southwest &13af 73 f7 ; &0b : "sw" &07 &01 &1f34 = handle_southwest &13b1 75 f0 ; &0c : "up" &08 &01 &1f39 = handle_up &13b3 64 6f 77 ee ; &0d : "down" &09 &01 &1f3e = handle_down &13b7 69 6e 74 ef ; &0e : "into" &0a &01 &1f43 = handle_in &13bb 65 6e 74 65 f2 ; &0f : "enter" &0a &01 &1f43 = handle_in &13c0 6f 75 f4 ; &10 : "out" &0b &01 &1f48 = handle_out &13c3 61 6e e4 ; &11 : "and" &00 &06 &13c6 74 68 65 ee ; &12 : "then" &00 &06 &13ca 74 ef ; &13 : "to" &00 &06 &13cc 66 6f f2 ; &14 : "for" &00 &06 &13cf 61 f4 ; &15 : "at" &08 &04 &13d1 69 f4 ; &16 : "it" &00 &05 &13d3 74 68 65 ed ; &17 : "them" &00 &05 &13d7 61 6c ec ; &18 : "all" &00 &07 &13da 65 76 65 72 79 74 68 69 6e e7 ; &19 : "everything" &00 &07 &13e4 62 75 f4 ; &1a : "but" &00 &08 &13e7 65 78 63 65 70 f4 ; &1b : "except" &00 &08 &13ed 77 61 69 f4 ; &1c : "wait" &0c &00 &1c63 = handle_wait &13f1 70 61 75 73 e5 ; &1d : "pause" &0c &00 &1c63 = handle_wait &13f6 6c 6f 6f eb ; &1e : "look" &0d &00 &1ce7 = handle_look &13fa 69 6e 76 65 6e 74 6f 72 f9 ; &1f : "inventory" &0e &00 &1ff0 = handle_inventory &1403 6c 69 73 f4 ; &20 : "list" &0e &00 &1ff0 = handle_inventory &1407 65 78 61 6d 69 6e e5 ; &21 : "examine" &12 &80 &2001 = handle_examine &140e 64 72 6f f0 ; &22 : "drop" &13 &80 &207e = handle_drop &1412 74 68 72 6f f7 ; &23 : "throw" &13 &80 &207e = handle_drop &1417 67 65 f4 ; &24 : "get" &14 &80 &2138 = handle_get &141a 74 61 6b e5 ; &25 : "take" &14 &80 &2138 = handle_get &141e 70 69 63 eb ; &26 : "pick" &14 &80 &2138 = handle_get &1422 72 65 6d 6f 76 e5 ; &27 : "remove" &14 &80 &2138 = handle_get &1428 6c 69 66 f4 ; &28 : "lift" &14 &80 &2138 = handle_get &142c 77 65 61 f2 ; &29 : "wear" &15 &80 &21d3 = handle_wear &1430 67 ef ; &2a : "go" &17 &00 &1c72 = handle_go &1432 6d 6f 76 e5 ; &2b : "move" &17 &00 &1c72 = handle_go &1436 70 75 f4 ; &2c : "put" &1a &00 &22cf = handle_put &1439 70 6c 61 63 e5 ; &2d : "place" &1a &00 &22cf = handle_put &143e 69 6e 73 65 72 f4 ; &2e : "insert" &1a &00 &22cf = handle_put &1444 61 74 74 61 63 e8 ; &2f : "attach" &1a &00 &22cf = handle_put &144a 6c 69 6e eb ; &30 : "link" &1a &00 &22cf = handle_put &144e 70 6c 75 e7 ; &31 : "plug" &1a &00 &22cf = handle_put &1452 72 65 61 e4 ; &32 : "read" &1b &80 &2353 = handle_read &1456 64 69 e7 ; &33 : "dig" &1c &00 &2384 = handle_dig &1459 73 77 69 ed ; &34 : "swim" &1d &00 &23a8 = handle_swim &145d 77 69 70 e5 ; &35 : "wipe" &1e &00 &23b7 = handle_dry &1461 64 72 f9 ; &36 : "dry" &1e &00 &23b7 = handle_dry &1464 64 69 61 ec ; &37 : "dial" &1f &00 &23f9 = handle_dial &1468 70 72 65 73 f3 ; &38 : "press" &20 &00 &2432 = handle_press &146d 74 79 70 e5 ; &39 : "type" &20 &00 &2432 = handle_press &1471 67 69 76 e5 ; &3a : "give" &21 &00 &24bb = handle_give &1475 6f 70 65 ee ; &3b : "open" &22 &00 &24f0 = handle_open &1479 63 6c 6f 73 e5 ; &3c : "close" &23 &00 &2532 = handle_close &147e 73 68 75 f4 ; &3d : "shut" &23 &00 &2532 = handle_close &1482 6d 61 6b e5 ; &3e : "make" &24 &00 &2539 = handle_make &1486 65 6d 70 74 f9 ; &3f : "empty" &25 &00 &2563 = handle_empty &148b 6a 75 6d f0 ; &40 : "jump" &26 &00 &257e = handle_jump &148f 6c 65 61 f0 ; &41 : "leap" &26 &00 &257e = handle_jump &1493 74 75 72 ee ; &42 : "turn" &27 &00 &25bb = handle_turn &1497 73 77 69 74 63 e8 ; &43 : "switch" &27 &00 &25bb = handle_turn &149d 68 61 6e e4 ; &44 : "hand" &21 &00 &24bb = handle_give &14a1 63 6c 69 6d e2 ; &45 : "climb" &28 &00 &2609 = handle_climb &14a6 74 69 e5 ; &46 : "tie" &29 &00 &2688 = handle_tie &14a9 75 6e 74 69 e5 ; &47 : "untie" &2a &00 &26c2 = handle_untie &14ae 6c 6f 6f 73 65 ee ; &48 : "loosen" &2b &00 &26eb = handle_undo &14b4 75 6e 64 ef ; &49 : "undo" &2b &00 &26eb = handle_undo &14b8 72 61 69 73 e5 ; &4a : "raise" &2c &00 &2747 = handle_raise &14bd 6c 6f 77 65 f2 ; &4b : "lower" &2d &00 &275c = handle_lower &14c2 70 75 6c ec ; &4c : "pull" &2e &00 &279a = handle_pull &14c6 73 74 61 6e e4 ; &4d : "stand" &2f &00 &276e = handle_stand &14cb 6b 69 6c ec ; &4e : "kill" &30 &00 &27b4 = handle_attack &14cf 61 74 74 61 63 eb ; &4f : "attack" &30 &00 &27b4 = handle_attack &14d5 73 74 72 61 6e 67 6c e5 ; &50 : "strangle" &30 &00 &27b4 = handle_attack &14dd 66 6c 61 73 e8 ; &51 : "flash" &31 &00 &2806 = handle_flash &14e2 63 6c f3 ; &52 : "cls" &0f &02 &1c81 = handle_cls &14e5 73 63 72 65 65 ee ; &53 : "screen" &10 &02 &1c86 = handle_screen &14eb 74 65 78 f4 ; &54 : "text" &11 &02 &1cb7 = handle_text &14ef 71 75 69 f4 ; &55 : "quit" &16 &02 &1cbc = handle_quit &14f3 73 61 76 e5 ; &56 : "save" &18 &02 &2283 = handle_save &14f7 6c 6f 61 e4 ; &57 : "load" &19 &00 &22a8 = handle_restore &14fb 72 65 73 74 6f 72 e5 ; &58 : "restore" &19 &00 &22a8 = handle_restore &1502 73 68 69 66 f4 ; &59 : "shift" &32 &02 &2336 = handle_shift &1507 30 a0 ; &5a : "0 " &00 &04 &1509 31 a0 ; &5b : "1 " &01 &04 &150b 32 a0 ; &5c : "2 " &02 &04 &150d 33 a0 ; &5d : "3 " &03 &04 &150f 34 a0 ; &5e : "4 " &04 &04 &1511 35 a0 ; &5f : "5 " &05 &04 &1513 36 a0 ; &60 : "6 " &06 &04 &1515 37 a0 ; &61 : "7 " &07 &04 &1517 34 33 b9 ; &62 : "439" &09 &04 &151a 38 37 b4 ; &63 : "874" &0a &04 &151d 32 36 b5 ; &64 : "265" &0b &04 &1520 36 34 b0 ; &65 : "640" &0c &04 &1523 35 33 b1 ; &66 : "531" &0d &04 &1526 39 a0 ; &67 : "9 " &0d &04 &1528 67 75 61 72 e4 ; &68 : "guard" &10 &04 &152d 67 61 74 e5 ; &69 : "gate" &0e &04 &1531 64 6f 6f f2 ; &6a : "door" &0e &04 &1535 77 69 6e 64 6f f7 ; &6b : "window" &0e &04 &153b 64 6f 67 f3 ; &6c : "dogs" &0f &04 &153f 6d 61 6e 68 6f 6c e5 ; &6d : "manhole" &0e &04 &1546 6f ee ; &6e : "on" &12 &04 &1548 6f 66 e6 ; &6f : "off" &13 &04 &154b 62 6f 6c f4 ; &70 : "bolt" &14 &04 &154f 74 72 65 65 f3 ; &71 : "trees" &15 &04 &1554 62 72 61 6e 63 e8 ; &72 : "branch" &15 &04 &155a 62 6f 75 67 e8 ; &73 : "bough" &15 &04 &155f 77 61 6c 6c f3 ; &74 : "walls" &16 &04 &1564 63 6c 69 66 66 f3 ; &75 : "cliffs" &16 &04 &156a 74 72 65 6c 6c 69 f3 ; &76 : "trellis" &11 &04 &1571 6e 75 f4 ; &77 : "nut" &14 &04 &1574 64 75 6d 62 77 61 69 74 65 f2 ; &78 : "dumbwaiter" &17 &04 &157e 61 74 74 61 63 6f ee ; &79 : "attacon" &18 &04 &1585 74 6f 77 65 ec ; &7a : "towel" &00 &03 &158a 6e 6f 74 69 63 e5 ; &7b : "notice" &01 &03 &1590 73 69 67 6e 70 6f 73 f4 ; &7c : "signpost" &02 &03 &1598 74 65 6c 65 70 68 6f 6e e5 ; &7d : "telephone" &03 &03 &15a1 70 68 6f 6e e5 ; &7e : "phone" &03 &03 &15a6 73 6c 6f f4 ; &7f : "slot" &03 &03 &15aa 72 65 63 65 69 76 65 f2 ; &80 : "receiver" &04 &03 &15b2 63 68 65 73 f4 ; &81 : "chest" &05 &03 &15b7 73 75 69 f4 ; &82 : "suit" &06 &03 &15bb 66 6c 69 70 70 65 72 f3 ; &83 : "flippers" &07 &03 &15c3 6d 69 6c 65 73 74 6f 6e e5 ; &84 : "milestone" &08 &03 &15cc 70 61 67 e5 ; &85 : "page" &09 &03 &15d0 63 6f 69 ee ; &86 : "coin" &0a &03 &15d4 73 68 6f 65 f3 ; &87 : "shoes" &0b &03 &15d9 6f 76 65 72 61 6c 6c f3 ; &88 : "overalls" &0c &03 &15e1 6e 65 77 73 70 61 70 65 f2 ; &89 : "newspaper" &0d &03 &15ea 70 61 70 65 f2 ; &8a : "paper" &0d &03 &15ef 6d 65 73 73 61 67 e5 ; &8b : "message" &0d &03 &15f6 63 61 72 6e 61 74 69 6f ee ; &8c : "carnation" &0e &03 &15ff 66 6c 6f 77 65 f2 ; &8d : "flower" &0e &03 &1605 70 61 73 f3 ; &8e : "pass" &0f &03 &1609 72 61 62 62 69 f4 ; &8f : "rabbit" &10 &03 &160f 73 6e 61 72 e5 ; &90 : "snare" &11 &03 &1614 74 72 61 f0 ; &91 : "trap" &11 &03 &1618 62 69 ee ; &92 : "bin" &12 &03 &161b 77 69 72 e5 ; &93 : "wire" &13 &03 &161f 73 74 61 74 75 e5 ; &94 : "statue" &14 &03 &1625 73 70 61 6e 6e 65 f2 ; &95 : "spanner" &15 &03 &162c 62 61 74 74 65 72 f9 ; &96 : "battery" &16 &03 &1633 62 65 e4 ; &97 : "bed" &17 &03 &1636 68 65 6c 6d 65 f4 ; &98 : "helmet" &18 &03 &163c 68 61 f4 ; &99 : "hat" &18 &03 &163f 6c 61 6d f0 ; &9a : "lamp" &18 &03 &1643 73 68 65 65 f4 ; &9b : "sheet" &19 &03 &1648 62 6c 61 6e 6b 65 f4 ; &9c : "blanket" &19 &03 &164f 63 6f 61 f4 ; &9d : "coat" &1a &03 &1653 73 63 61 6c 65 f3 ; &9e : "scales" &1b &03 &1659 6d 61 73 eb ; &9f : "mask" &1c &03 &165d 6d 61 f0 ; &a0 : "map" &1d &03 &1660 70 6c 61 6e f3 ; &a1 : "plans" &1e &03 &1665 70 72 6f 6a 65 63 f4 ; &a2 : "project" &1e &03 &166c 67 6c 6f 76 65 f3 ; &a3 : "gloves" &1f &03 &1672 62 6f 64 f9 ; &a4 : "body" &20 &03 &1676 63 6f 72 70 73 e5 ; &a5 : "corpse" &20 &03 &167c 70 72 6f 66 65 73 73 6f f2 ; &a6 : "professor" &20 &03 &1685 74 61 e7 ; &a7 : "tag" &21 &03 &1688 63 6f 6d 70 75 74 65 f2 ; &a8 : "computer" &22 &03 &1690 6c 65 76 65 f2 ; &a9 : "lever" &23 &03 &1695 6c 69 67 68 f4 ; &aa : "light" &18 &03 &169a 73 69 67 6e 61 ec ; &ab : "signal" &31 &00 &2806 = handle_flash &16a0 ff ; vocabulary_values ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &16a1 00 01 02 03 04 04 05 05 06 06 07 07 08 09 0a 0a ; &00 &16b1 0b 00 00 00 00 08 00 00 00 00 00 00 0c 0c 0d 0e ; &10 &16c1 0e 12 13 13 14 14 14 14 14 15 17 17 1a 1a 1a 1a ; &20 &16d1 1a 1a 1b 1c 1d 1e 1e 1f 20 20 21 22 23 23 24 25 ; &30 &16e1 26 26 27 27 21 28 29 2a 2b 2b 2c 2d 2e 2f 30 30 ; &40 &16f1 30 31 0f 10 11 16 18 19 19 32 00 01 02 03 04 05 ; &50 &1701 06 07 09 0a 0b 0c 0d 0d 10 0e 0e 0e 0f 0e 12 13 ; &60 &1711 14 15 15 15 16 16 11 14 17 18 00 01 02 03 03 03 ; &70 &1721 04 05 06 07 08 09 0a 0b 0c 0d 0d 0d 0e 0e 0f 10 ; &80 &1731 11 11 12 13 14 15 16 17 18 18 18 19 19 1a 1b 1c ; &90 &1741 1d 1e 1e 1f 20 20 20 21 22 23 18 31 ; &a0 ; vocabulary_types ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &174d 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ; &00 &175d 01 06 06 06 06 04 05 05 07 07 08 08 00 00 00 00 ; &10 &176d 00 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 ; &20 &177d 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &30 &178d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &40 &179d 00 00 02 02 02 02 02 00 00 02 04 04 04 04 04 04 ; &50 &17ad 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ; &60 &17bd 04 04 04 04 04 04 04 04 04 04 03 03 03 03 03 03 ; &70 &17cd 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ; &80 &17dd 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ; &90 &17ed 03 03 03 03 03 03 03 03 03 03 03 00 ; &a0 ; verb_handler_addresses_low_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &17f9 dd 16 1b 20 25 2a 2f 34 39 3e 43 48 63 e7 f0 81 ; &00 &1809 86 b7 01 7e 38 d3 bc 72 83 a8 cf 53 84 a8 b7 f9 ; &10 &1819 32 bb f0 32 39 63 7e bb 09 88 c2 eb 47 5c 9a 6e ; &20 &1829 b4 06 36 ; &30 ; verb_handler_addresses_high_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &182c 1e 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1c 1c 1f 1c ; &00 &183c 1c 1c 20 20 21 21 1c 1c 22 22 22 23 23 23 23 23 ; &10 &184c 24 24 24 25 25 25 25 25 26 26 26 26 27 27 27 27 ; &20 &185c 27 28 23 ; &30 ; has_previous_input &185f 00 ; use_previous_input &1860 00 ; object_for_pronoun &1861 00 ; word_type &1862 00 ; word_value &1863 00 ; object_to_consider &1864 00 ; physical_colour ; maximum_length &1865 00 ; incomprehension_string_ids &1866 04 ; string_004 : "I don't understand that. " &1867 05 ; string_005 : "I can't make head nor tail of that!" &1868 06 ; string_006 : "Pardon? " ; allow_previous_input &1869 00 ; get_input &186a 8d 65 18 STA &1865 ; maximum_length &186d 86 7f STX &7f ; buffer_address_low &186f 84 80 STY &80 ; buffer_address_high &1871 a0 00 LDY #&00 ; get_input_loop &1873 20 e0 ff JSR &ffe0 ; OSRDCH &1876 c9 0d CMP #&0d ; CR &1878 f0 41 BEQ &18bb ; is_return &187a c9 20 CMP #&20 ; " " &187c f0 42 BEQ &18c0 ; is_space &187e c9 09 CMP #&09 ; TAB &1880 f0 45 BEQ &18c7 ; use_previous_input &1882 c9 30 CMP #&30 ; "0" &1884 90 ed BCC &1873 ; get_input_loop &1886 c9 3a CMP #&3a ; "9" + 1 &1888 90 23 BCC &18ad ; add_character_to_input &188a c9 41 CMP #&41 ; "A" &188c 90 e5 BCC &1873 ; get_input_loop &188e c9 5b CMP #&5b ; "Z" &1890 90 1b BCC &18ad ; add_character_to_input &1892 c9 61 CMP #&61 ; "a" &1894 90 dd BCC &1873 ; get_input_loop &1896 c9 7b CMP #&7b ; "z" &1898 90 13 BCC &18ad ; add_character_to_input &189a c9 7f CMP #&7f &189c d0 d5 BNE &1873 ; get_input_loop &189e c0 00 CPY #&00 &18a0 f0 d1 BEQ &1873 ; get_input_loop &18a2 20 ee ff JSR &ffee ; OSWRCH &18a5 88 DEY &18a6 a9 20 LDA #&20 ; " " &18a8 91 7f STA (&7f),Y ; buffer_address &18aa 4c 73 18 JMP &1873 ; get_input_loop ; add_character_to_input &18ad cc 65 18 CPY &1865 ; maximum_length &18b0 f0 c1 BEQ &1873 ; get_input_loop &18b2 91 7f STA (&7f),Y ; buffer_address &18b4 20 ee ff JSR &ffee ; OSWRCH &18b7 c8 INY &18b8 4c 73 18 JMP &1873 ; get_input_loop ; is_return &18bb 91 7f STA (&7f),Y ; buffer_address &18bd 4c e3 ff JMP &ffe3 ; OSASCI ; is_space &18c0 c0 00 CPY #&00 &18c2 d0 e9 BNE &18ad ; add_character_to_input &18c4 4c 73 18 JMP &1873 ; get_input_loop ; use_previous_input &18c7 c0 00 CPY #&00 &18c9 d0 a8 BNE &1873 ; get_input_loop &18cb ad 69 18 LDA &1869 ; allow_previous_input # Zero if previous input can be used &18ce d0 a3 BNE &1873 ; get_input_loop &18d0 a9 2a LDA #&2a ; "*" &18d2 91 7f STA (&7f),Y ; buffer_address &18d4 a9 0d LDA #&0d ; CR &18d6 c8 INY &18d7 91 7f STA (&7f),Y ; buffer_address &18d9 98 TYA &18da 48 PHA &18db a2 03 LDX #&03 ; string_003 : "Again: " &18dd 20 05 1b JSR &1b05 ; write_string_from_table_zero &18e0 68 PLA &18e1 a8 TAY &18e2 60 RTS ; prompt_for_input &18e3 a9 3a LDA #&3a ; ">" &18e5 20 ee ff JSR &ffee ; OSWRCH &18e8 a9 00 LDA #&00 &18ea 8d 69 18 STA &1869 ; allow_previous_input &18ed 85 83 STA &83 ; current_word &18ef a9 26 LDA #&26 ; 38 characters maximum &18f1 a0 07 LDY #&07 ; &0700 = input_buffer &18f3 a2 00 LDX #&00 &18f5 20 6a 18 JSR &186a ; get_input &18f8 c0 00 CPY #&00 &18fa f0 e7 BEQ &18e3 ; prompt_for_input &18fc 84 77 STY &77 ; input_length &18fe ad 00 07 LDA &0700 ; input_buffer &1901 c9 2a CMP #&2a ; "*" &1903 d0 0b BNE &1910 ; not_previous &1905 ad 5f 18 LDA &185f ; has_previous_input &1908 d0 06 BNE &1910 ; not_previous &190a a9 01 LDA #&01 &190c 8d 60 18 STA &1860 ; use_previous_input &190f 60 RTS ; not_previous &1910 a9 00 LDA #&00 &1912 8d 60 18 STA &1860 ; use_previous_input &1915 8d 5f 18 STA &185f ; has_previous_input ; split_input_into_words &1918 a8 TAY &1919 aa TAX &191a 85 76 STA &76 ; number_of_words &191c a9 00 LDA #&00 &191e 85 7f STA &7f ; word_buffer_address_low &1920 a9 06 LDA #&06 ; &0600 = word_buffer &1922 85 80 STA &80 ; word_buffer_address_high ; split_input_into_words_loop # Split input into words at &0600, &0610, &0620... &1924 20 5f 19 JSR &195f ; move_past_whitespace ; copy_word_loop &1927 09 20 ORA #&20 # Convert to lowercase &1929 91 7f STA (&7f),Y ; word_buffer_address &192b c8 INY &192c e8 INX &192d bd 00 07 LDA &0700,X ; input_buffer &1930 e4 77 CPX &77 ; input_length &1932 b0 21 BCS &1955 ; end_of_input &1934 c9 20 CMP #&20 ; " " &1936 d0 ef BNE &1927 ; copy_word_loop &1938 a9 0d LDA #&0d ; CR # End split words with carriage return &193a 91 7f STA (&7f),Y ; word_buffer_address &193c 18 CLC &193d a9 10 LDA #&10 &193f 65 7f ADC &7f ; word_buffer_address_low &1941 85 7f STA &7f ; word_buffer_address_low &1943 90 02 BCC &1947 ; skip_page &1945 e6 80 INC &80 ; word_buffer_address_high # Unnecessary code; split words stay within page ; skip_page &1947 a9 00 LDA #&00 &1949 a8 TAY &194a a5 76 LDA &76 ; number_of_words &194c c9 0f CMP #&0f &194e f0 05 BEQ &1955 ; leave &1950 e6 76 INC &76 ; number_of_words &1952 4c 24 19 JMP &1924 ; split_input_into_words_loop ; end_of_input &1955 e6 76 INC &76 ; number_of_words &1957 91 7f STA (&7f),Y ; buffer_address ; leave &1959 60 RTS ; ignore_trailing_whitespace &195a c6 76 DEC &76 ; number_of_words &195c 4c 57 19 JMP &1957 ; move_past_whitespace &195f bd 00 07 LDA &0700,X ; input_buffer &1962 c9 20 CMP #&20 ; " " &1964 d0 f3 BNE &1959 ; leave &1966 e8 INX &1967 e4 77 CPX &77 ; input_length &1969 f0 ef BEQ &195a ; ignore_trailing_whitespace &196b 4c 5f 19 JMP &195f ; move_past_whitespace ; tokenise_input &196e a2 00 LDX #&00 ; tokenise_words_loop # For each word &1970 a9 00 LDA #&00 &1972 85 79 STA &79 ; vocabulary_id &1974 8a TXA &1975 0a ASL A &1976 0a ASL A &1977 0a ASL A &1978 0a ASL A &1979 85 77 STA &77 ; input_length &197b a8 TAY &197c b9 00 06 LDA &0600,Y ; word_buffer &197f 85 78 STA &78 ; character &1981 a9 73 LDA #&73 ; &1373 = vocabulary &1983 85 74 STA &74 ; vocabulary_address_low &1985 a9 13 LDA #&13 &1987 85 75 STA &75 ; vocabulary_address_high ; check_input_word_against_vocabulary_loop &1989 a0 00 LDY #&00 &198b b1 74 LDA (&74),Y ; vocabulary_address &198d c9 ff CMP #&ff # &ff marks end of vocabulary &198f f0 19 BEQ &19aa ; unmatched_input_word &1991 c5 78 CMP &78 ; character &1993 f0 26 BEQ &19bb ; first_character_matches ; consider_next_vocabulary_word &1995 e6 79 INC &79 ; vocabulary_id ; move_to_next_vocabulary_word &1997 c8 INY &1998 b1 74 LDA (&74),Y ; vocabulary_address &199a 10 fb BPL &1997 ; move_to_next_vocabulary_word &199c c8 INY &199d 18 CLC &199e 98 TYA &199f 65 74 ADC &74 ; vocabulary_address_low &19a1 85 74 STA &74 ; vocabulary_address_low &19a3 90 e4 BCC &1989 ; check_input_word_against_vocabulary_loop &19a5 e6 75 INC &75 ; vocabulary_address_high &19a7 4c 89 19 JMP &1989 ; check_input_word_against_vocabulary_loop ; unmatched_input_word &19aa 48 PHA # A is &ff = WORD_NONE &19ab 8a TXA &19ac 0a ASL A &19ad a8 TAY &19ae 68 PLA &19af 99 30 07 STA &0730,Y ; tokenised_words_value &19b2 99 31 07 STA &0731,Y ; tokenised_words_type &19b5 e8 INX &19b6 e4 76 CPX &76 ; number_of_words &19b8 90 b6 BCC &1970 ; tokenise_words_loop &19ba 60 RTS ; first_character_matches &19bb 86 7a STX &7a ; token_offset &19bd a6 77 LDX &77 ; input_length ; consider_next_character_of_input_word &19bf e8 INX &19c0 c8 INY &19c1 bd 00 06 LDA &0600,X ; word_buffer &19c4 c9 0d CMP #&0d ; CR &19c6 f0 1e BEQ &19e6 ; end_of_input_word &19c8 b1 74 LDA (&74),Y ; vocabulary_address &19ca 30 0c BMI &19d8 ; end_of_vocabulary_word &19cc dd 00 06 CMP &0600,X ; word_buffer &19cf f0 ee BEQ &19bf ; consider_next_character_of_input_word ; input_and_vocabulary_word_failed_to_match &19d1 a0 00 LDY #&00 &19d3 a6 7a LDX &7a ; token_offset &19d5 4c 95 19 JMP &1995 ; consider_next_vocabulary_word ; end_of_vocabulary_word &19d8 29 7f AND #&7f &19da dd 00 06 CMP &0600,X ; word_buffer &19dd d0 f2 BNE &19d1 ; input_and_vocabulary_word_failed_to_match &19df bd 01 06 LDA &0601,X ; word_buffer + 1 &19e2 c9 0d CMP #&0d ; CR &19e4 d0 eb BNE &19d1 ; input_and_vocabulary_word_failed_to_match ; end_of_input_word &19e6 a5 7a LDA &7a ; token_offset &19e8 0a ASL A &19e9 a8 TAY &19ea a6 79 LDX &79 ; vocabulary_id &19ec bd a1 16 LDA &16a1,X ; vocabulary_values &19ef 99 30 07 STA &0730,Y ; tokenised_words_value &19f2 bd 4d 17 LDA &174d,X ; vocabulary_types &19f5 99 31 07 STA &0731,Y ; tokenised_words_type &19f8 a6 7a LDX &7a ; token_offset &19fa 4c b5 19 JMP &19b5 ; consider_next_input_word ; get_player_input_and_tokenise &19fd 20 e7 ff JSR &ffe7 ; OSNEWL &1a00 20 e3 18 JSR &18e3 ; prompt_for_input &1a03 ad 60 18 LDA &1860 ; use_previous_input &1a06 d0 03 BNE &1a0b ; skip_tokenisation &1a08 20 6e 19 JSR &196e ; tokenise_input ; skip_tokenisation &1a0b 20 e7 ff JSR &ffe7 ; OSNEWL &1a0e ad 31 07 LDA &0731 ; tokenised_words_type &1a11 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &1a13 c9 03 CMP #&03 ; WORD_OBJECT &1a15 b0 3a BCS &1a51 ; input_doesn't_start_with_a_verb &1a17 a9 ff LDA #&ff ; OBJECT_UNKNOWN &1a19 8d 61 18 STA &1861 ; object_for_pronoun &1a1c a2 00 LDX #&00 ; process_input_loop &1a1e 8a TXA &1a1f 0a ASL A &1a20 a8 TAY &1a21 b9 31 07 LDA &0731,Y ; tokenised_words_type &1a24 c9 03 CMP #&03 ; WORD_OBJECT &1a26 d0 09 BNE &1a31 ; not_object &1a28 b9 30 07 LDA &0730,Y ; tokenised_words_value &1a2b 8d 61 18 STA &1861 ; object_for_pronoun &1a2e b9 31 07 LDA &0731,Y ; tokenised_words_type ; not_object &1a31 c9 05 CMP #&05 ; WORD_PRONOUN &1a33 d0 12 BNE &1a47 ; not_pronoun &1a35 ad 61 18 LDA &1861 ; object_for_pronoun &1a38 99 30 07 STA &0730,Y ; tokenised_words_value &1a3b c9 ff CMP #&ff ; OBJECT_UNKNOWN &1a3d f0 02 BEQ &1a41 ; skip_converting_pronoun &1a3f a9 03 LDA #&03 ; WORD_OBJECT ; skip_converting_pronoun &1a41 99 31 07 STA &0731,Y ; tokenised_words_type &1a44 b9 31 07 LDA &0731,Y ; tokenised_words_type &1a47 c9 ff CMP #&ff ; WORD_UNRECOGNISED &1a49 f0 29 BEQ &1a74 ; remove_unrecognised_word &1a4b e8 INX ; consider_next_word &1a4c e4 76 CPX &76 ; number_of_words &1a4e 90 ce BCC &1a1e ; process_input_loop &1a50 60 RTS ; input_doesn't_start_with_a_verb &1a51 20 57 1a JSR &1a57 ; i_don't_understand_you &1a54 4c fd 19 JMP &19fd ; get_player_input_and_tokenise ; i_don't_understand_you &1a57 a6 7d LDX &7d ; incomprehension_state &1a59 e0 03 CPX #&03 &1a5b 90 04 BCC &1a61 ; skip_wraparound &1a5d a2 00 LDX #&00 &1a5f 86 7d STX &7d ; incomprehension_state ; skip_wraparound &1a61 bd 66 18 LDA &1866,X ; incomprehension_string_ids &1a64 aa TAX &1a65 e6 7d INC &7d ; incomprehension_state &1a67 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; i_need_more_information &1a6a a2 07 LDX #&07 ; string_007 : "I need more information. " &1a6c 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; you_can't_do_that &1a6f a2 08 LDX #&08 ; string_008 : "You can't do that. " &1a71 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; remove_unrecognised_word &1a74 86 7a STX &7a ; word ; remove_unrecognised_words_loop &1a76 e8 INX &1a77 e4 76 CPX &76 ; number_of_words &1a79 b0 12 BCS &1a8d ; finished_removing_unrecognised_word &1a7b 8a TXA &1a7c 0a ASL A &1a7d a8 TAY &1a7e b9 30 07 LDA &0730,Y ; tokenised_words_value &1a81 99 2e 07 STA &072e,Y ; tokenised_words_value - 2 &1a84 b9 31 07 LDA &0731,Y ; tokenised_words_type &1a87 99 2f 07 STA &072f,Y ; tokenised_words_type - 2 &1a8a 4c 76 1a JMP &1a76 ; remove_unrecognised_words_loop ; finished_removing_unrecognised_word &1a8d a6 7a LDX &7a ; word &1a8f c6 76 DEC &76 ; number_of_words &1a91 4c 4c 1a JMP &1a4c ; consider_next_word ; move_to_next_word &1a94 18 CLC &1a95 e6 83 INC &83 ; current_word &1a97 a5 83 LDA &83 ; current_word &1a99 c5 76 CMP &76 ; number_of_words &1a9b b0 02 BCS &1a9f ; leave &1a9d 0a ASL A &1a9e a8 TAY ; leave &1a9f 60 RTS ; restore_previous_current_word &1aa0 a5 8b LDA &8b ; previous_current_word &1aa2 85 83 STA &83 ; current_word &1aa4 60 RTS ; word_type_to_get &1aa5 00 ; ask_for_more_information &1aa6 00 ; get_noun &1aa7 a9 04 LDA #&04 ; WORD_NOUN ; get_word_of_type_A &1aa9 8d a5 1a STA &1aa5 ; word_type_to_get &1aac a5 83 LDA &83 ; current_word &1aae 85 8b STA &8b ; previous_current_word &1ab0 a9 00 LDA #&00 &1ab2 8d a6 1a STA &1aa6 ; ask_for_more_information &1ab5 2e a6 1a ROL &1aa6 ; ask_for_more_information # Set to zero if carry clear, non-zero if carry set ; get_word_of_type_loop &1ab8 20 94 1a JSR &1a94 ; move_to_next_word # Returns carry set at end of input &1abb b0 10 BCS &1acd ; consider_asking_for_more_information &1abd b9 31 07 LDA &0731,Y ; tokenised_words_type &1ac0 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &1ac2 cd a5 1a CMP &1aa5 ; word_type_to_get &1ac5 d0 f1 BNE &1ab8 ; get_word_of_type_loop ; leave_with_next_word &1ac7 aa TAX &1ac8 b9 30 07 LDA &0730,Y ; tokenised_words_value &1acb 18 CLC # Leave with carry clear to indicate word found &1acc 60 RTS ; consider_asking_for_more_information &1acd ad a6 1a LDA &1aa6 ; ask_for_more_information &1ad0 d0 03 BNE &1ad5 ; skip_please_give_more_information &1ad2 20 6a 1a JSR &1a6a ; i_need_more_information ; skip_please_give_more_information &1ad5 38 SEC # Leave with carry set to indicate no word found &1ad6 60 RTS ; get_word_or_ask_for_more_information # Leaves with X = word type, A = word_value &1ad7 a9 00 LDA #&00 ; set_ask_for_more_information &1ad9 8d a6 1a STA &1aa6 ; ask_for_more_information &1adc a5 83 LDA &83 ; current_word &1ade 85 8b STA &8b ; previous_current_word ; skip_conjunctions_loop &1ae0 20 94 1a JSR &1a94 ; move_to_next_word # Returns carry set at end of input &1ae3 b0 e8 BCS &1acd ; consider_asking_for_more_information &1ae5 b9 31 07 LDA &0731,Y ; tokenised_words_type &1ae8 c9 06 CMP #&06 ; WORD_CONJUNCTION &1aea f0 f4 BEQ &1ae0 ; skip_conjunctions_loop &1aec d0 d9 BNE &1ac7 ; leave_with_next_word # Always branches ; get_word &1aee a9 ff LDA #&ff # Non-zero to not ask for more information on bad input &1af0 4c d9 1a JMP &1ad9 ; set_ask_for_more_information ; get_object &1af3 a9 03 LDA #&03 ; WORD_OBJECT &1af5 4c a9 1a JMP &1aa9 ; get_word_of_type_A ; call_verb_handler &1af8 b9 f9 17 LDA &17f9,Y ; verb_handler_addresses_low_table &1afb 85 81 STA &81 ; verb_handler_address_low &1afd b9 2c 18 LDA &182c,Y ; verb_handler_addresses_high_table &1b00 85 82 STA &82 ; verb_handler_address_high &1b02 6c 81 00 JMP (&0081) ; verb_handler_address ; write_string_from_table_zero &1b05 a0 00 LDY #&00 ; write_string_from_table &1b07 a9 20 LDA #&20 ; " " &1b09 20 78 59 JSR &5978 ; write_packed_string &1b0c 4c e7 ff JMP &ffe7 ; OSNEWL ; write_string_from_table_one &1b0f a0 01 LDY #&01 &1b11 4c 07 1b JMP &1b07 ; write_string_from_table ; write_string_from_table_two &1b14 a0 02 LDY #&02 &1b16 4c 07 1b JMP &1b07 ; write_string_from_table ; end_string_without_punctuation &1b19 a9 00 LDA #&00 ; TEXT_END_NONE &1b1b 8d 64 59 STA &5964 ; string_ending &1b1e 60 RTS ; end_string_with_comma &1b1f a9 01 LDA #&01 ; TEXT_END_COMMA &1b21 8d 64 59 STA &5964 ; string_ending &1b24 60 RTS ; end_string_with_period &1b25 a9 02 LDA #&02 ; TEXT_END_PERIOD &1b27 8d 64 59 STA &5964 ; string_ending &1b2a 60 RTS ; write_string &1b2b a9 20 LDA #&20 ; " " &1b2d 4c 78 59 JMP &5978 ; write_packed_string ; copy_memory &1b30 86 7f STX &7f ; addresses_address_low &1b32 84 80 STY &80 ; addresses_address_high &1b34 a0 00 LDY #&00 ; copy_addresses_loop &1b36 b1 7f LDA (&7f),Y ; addresses_address &1b38 99 74 00 STA &0074,Y ; addresses_and_size &1b3b c8 INY &1b3c c0 06 CPY #&06 &1b3e 90 f6 BCC &1b36 ; copy_addresses_loop &1b40 a0 00 LDY #&00 &1b42 84 7f STY &7f ; bytes_copied_low &1b44 84 80 STY &80 ; bytes_copied_high ; copy_memory_loop &1b46 b1 74 LDA (&74),Y ; source_address &1b48 91 76 STA (&76),Y ; target_address &1b4a a5 74 LDA &74 ; source_address_low &1b4c 18 CLC &1b4d 69 01 ADC #&01 &1b4f 85 74 STA &74 ; source_address_low &1b51 90 02 BCC &1b55 ; skip_source_page &1b53 e6 75 INC &75 ; source_address_high ; skip_source_page &1b55 18 CLC &1b56 a5 76 LDA &76 ; target_address_low &1b58 69 01 ADC #&01 &1b5a 85 76 STA &76 ; target_address_low &1b5c 90 02 BCC &1b60 ; skip_target_page &1b5e e6 77 INC &77 ; target_address_high ; skip_target_page &1b60 a5 7f LDA &7f ; bytes_copied_low &1b62 c5 78 CMP &78 ; bytes_to_copy_low &1b64 90 07 BCC &1b6d ; copy_next_byte &1b66 a5 80 LDA &80 ; bytes_copied_high &1b68 c5 79 CMP &79 ; bytes_to_copy_high &1b6a 90 01 BCC &1b6d ; copy_next_byte &1b6c 60 RTS ; copy_next_byte &1b6d a5 7f LDA &7f ; bytes_copied_low &1b6f 18 CLC &1b70 69 01 ADC #&01 &1b72 85 7f STA &7f ; bytes_copied_low &1b74 90 d0 BCC &1b46 ; copy_memory_loop &1b76 e6 80 INC &80 ; bytes_copied_high &1b78 4c 46 1b JMP &1b46 ; copy_memory_loop ; backup_initial_game_state_addresses &1b7b 00 11 ; &1100 = game_state &1b7d 00 04 ; &0400 = initial_game_state &1b7f 54 01 ; &0154 = end_of_game_state - game_state ; restore_initial_game_state_addresses &1b81 00 04 ; &0400 = initial_game_state &1b83 00 11 ; &1100 = game_state &1b85 54 01 ; &0154 = end_of_game_state - game_state ; disk_relocation_addresses &1b87 00 11 ; &1100 = game_state &1b89 73 13 ; &1373 &1b8b 2d 03 ; &032d ; entry_point &1b8d a9 16 LDA #&16 # Change to MODE 6 &1b8f 20 ee ff JSR &ffee ; OSWRCH &1b92 a9 06 LDA #&06 &1b94 20 ee ff JSR &ffee ; OSWRCH &1b97 a5 74 LDA &74 ; tape_version # Zero if tape &1b99 10 07 BPL &1ba2 ; skip_relocation &1b9b a2 87 LDX #&87 &1b9d a0 1b LDY #&1b ; &1b87 = disk_relocation_addresses &1b9f 20 30 1b JSR &1b30 ; copy_memory ; skip_relocation &1ba2 a9 21 LDA #&21 ; string_021 : "You're " &1ba4 85 8a STA &8a ; look_string_id &1ba6 a2 7b LDX #&7b &1ba8 a0 1b LDY #&1b ; &1b7b = backup_initial_game_state_addresses &1baa 20 30 1b JSR &1b30 ; copy_memory ; start_game &1bad a9 01 LDA #&01 &1baf 8d 5f 18 STA &185f ; has_previous_input # Set to non-zero to indicate no previous input &1bb2 a2 81 LDX #&81 &1bb4 a0 1b LDY #&1b ; &1b81 = restore_initial_game_state_addresses &1bb6 20 30 1b JSR &1b30 ; copy_memory &1bb9 20 81 1c JSR &1c81 ; handle_cls &1bbc a2 22 LDX #&22 ; string_022 : ""Project Thesius (Rick Hanson 2)". By Robert and Mike O'Leary. Programmed by Robert O'Leary using "Midge, The Message Compression System". Copyright (c) 1986. " &1bbe 20 05 1b JSR &1b05 ; write_string_from_table_zero &1bc1 20 e7 ff JSR &ffe7 ; OSNEWL &1bc4 20 fa 1c JSR &1cfa ; look_at_room &1bc7 20 33 28 JSR &2833 ; update_world_after_action ; start_parsing &1bca 20 19 1b JSR &1b19 ; end_string_without_punctuation &1bcd 20 fd 19 JSR &19fd ; get_player_input_and_tokenise &1bd0 a0 00 LDY #&00 &1bd2 84 7e STY &7e ; player_state &1bd4 8c 62 18 STY &1862 ; word_type ; parse_sentence ; skip_conjunctions_loop &1bd7 20 19 1b JSR &1b19 ; end_string_without_punctuation &1bda b9 31 07 LDA &0731,Y ; tokenised_words_type &1bdd 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &1bdf c9 06 CMP #&06 ; WORD_CONJUNCTION &1be1 d0 07 BNE &1bea ; not_conjunction &1be3 20 94 1a JSR &1a94 ; move_to_next_word # Returns carry set at end of input &1be6 b0 e2 BCS &1bca ; start_parsing &1be8 90 ed BCC &1bd7 ; skip_conjunctions_loop # Always branches ; not_conjunction &1bea c9 03 CMP #&03 ; WORD_OBJECT &1bec b0 65 BCS &1c53 ; parse_not_verb_or_direction ; parse_verb_or_direction &1bee b9 31 07 LDA &0731,Y ; tokenised_words_type &1bf1 8d 62 18 STA &1862 ; word_type &1bf4 b9 30 07 LDA &0730,Y ; tokenised_words_value &1bf7 8d 63 18 STA &1863 ; word_value ; parse_word &1bfa ad 62 18 LDA &1862 ; word_type &1bfd c9 02 CMP #&02 ; WORD_SYSTEM_VERB &1bff f0 09 BEQ &1c0a ; skip_updating_world_before_action &1c01 20 2c 28 JSR &282c ; update_world_before_action &1c04 a5 7e LDA &7e ; player_state &1c06 c9 03 CMP #&03 ; PLAYER_DEAD &1c08 f0 44 BEQ &1c4e ; game_failed ; skip_updating_world_before_action &1c0a ac 63 18 LDY &1863 ; word_value &1c0d 18 CLC # Clear carry to request more information by default &1c0e 20 f8 1a JSR &1af8 ; call_verb_handler &1c11 a5 7e LDA &7e ; player_state &1c13 c9 01 CMP #&01 ; PLAYER_QUIT &1c15 f0 96 BEQ &1bad ; start_game &1c17 c9 02 CMP #&02 ; PLAYER_WON &1c19 f0 1f BEQ &1c3a ; game_won &1c1b c9 03 CMP #&03 ; PLAYER_DEAD &1c1d f0 2f BEQ &1c4e ; game_failed &1c1f ad 62 18 LDA &1862 ; word_type &1c22 c9 02 CMP #&02 ; WORD_SYSTEM_VERB &1c24 f0 09 BEQ &1c2f ; skip_updating_world_after_action &1c26 20 33 28 JSR &2833 ; update_world_after_action &1c29 a5 7e LDA &7e ; player_state &1c2b c9 03 CMP #&03 ; PLAYER_DEAD &1c2d f0 1f BEQ &1c4e ; game_failed ; skip_updating_world_after_action &1c2f 20 94 1a JSR &1a94 ; move_to_next_word # Returns carry set at end of input &1c32 b0 96 BCS &1bca ; start_parsing &1c34 20 e7 ff JSR &ffe7 ; OSNEWL &1c37 4c d7 1b JMP &1bd7 ; parse_sentence ; game_won &1c3a a2 02 LDX #&02 ; string_002 : "You have won! " &1c3c 20 05 1b JSR &1b05 ; write_string_from_table_zero &1c3f a2 00 LDX #&00 ; string_000 : "Press the space bar. " &1c41 20 05 1b JSR &1b05 ; write_string_from_table_zero ; wait_for_space &1c44 20 e0 ff JSR &ffe0 ; OSRDCH &1c47 c9 20 CMP #&20 ; " " &1c49 d0 f9 BNE &1c44 ; wait_for_space &1c4b 4c ad 1b JMP &1bad ; start_game ; game_failed &1c4e a2 01 LDX #&01 ; string_001 : "You are dead! " &1c50 4c 3c 1c JMP &1c3c ; parse_not_verb_or_direction &1c53 ad 62 18 LDA &1862 ; word_type # Type of previous verb &1c56 30 06 BMI &1c5e ; verb_accepts_multiple_objects # Top bit set if previous verb accepts multiple objects &1c58 20 57 1a JSR &1a57 ; i_don't_understand_you &1c5b 4c ca 1b JMP &1bca ; start_parsing ; verb_accepts_multiple_objects &1c5e c6 83 DEC &83 ; current_word &1c60 4c fa 1b JMP &1bfa ; parse_word ; handle_wait &1c63 a9 05 LDA #&05 &1c65 20 9d 5b JSR &5b9d ; set_delay_length &1c68 a2 09 LDX #&09 ; string_009 : "Time passes. . . " &1c6a 20 05 1b JSR &1b05 ; write_string_from_table_zero &1c6d a9 00 LDA #&00 &1c6f 4c 9d 5b JMP &5b9d ; set_delay_length ; handle_go &1c72 20 d7 1a JSR &1ad7 ; get_word_or_ask_for_more_information # Returns carry set if no word found &1c75 b0 27 BCS &1c9e ; leave &1c77 e0 01 CPX #&01 ; WORD_DIRECTION &1c79 d0 03 BNE &1c7e ; to_you_can't_do_that &1c7b 4c ee 1b JMP &1bee ; parse_verb_or_direction ; to_you_can't_do_that &1c7e 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_cls &1c81 a9 0c LDA #&0c ; CLS &1c83 4c ee ff JMP &ffee ; OSWRCH ; handle_screen &1c86 a9 00 LDA #&00 ; handle_screen_or_text &1c88 8d 65 18 STA &1865 ; physical_colour &1c8b 20 a7 1a JSR &1aa7 ; get_noun # Returns carry set if no noun found &1c8e b0 0e BCS &1c9e ; leave &1c90 c9 08 CMP #&08 &1c92 90 03 BCC &1c97 ; is_valid_colour &1c94 4c 6f 1a JMP &1a6f ; you_can't_do_that ; is_valid_colour &1c97 ae 65 18 LDX &1865 ; physical_colour &1c9a a8 TAY &1c9b 4c 9f 1c JMP &1c9f ; set_colour ; leave &1c9e 60 RTS ; set_colour &1c9f a9 13 LDA #&13 &1ca1 20 ee ff JSR &ffee ; OSWRCH &1ca4 8a TXA &1ca5 20 ee ff JSR &ffee ; OSWRCH &1ca8 98 TYA &1ca9 20 ee ff JSR &ffee ; OSWRCH &1cac a9 00 LDA #&00 &1cae 20 ee ff JSR &ffee ; OSWRCH &1cb1 20 ee ff JSR &ffee ; OSWRCH &1cb4 4c ee ff JMP &ffee ; OSWRCH ; handle_text &1cb7 a9 01 LDA #&01 &1cb9 4c 88 1c JMP &1c88 ; handle_screen_or_text ; handle_quit &1cbc 20 cb 1c JSR &1ccb ; are_you_sure # Returns carry set if player is sure &1cbf b0 05 BCS &1cc6 ; quit_game ; write_okay &1cc1 a2 23 LDX #&23 ; string_023 : "Okay. " &1cc3 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; quit_game &1cc6 a9 01 LDA #&01 ; PLAYER_QUIT &1cc8 85 7e STA &7e ; player_state &1cca 60 RTS ; are_you_sure &1ccb a2 2e LDX #&2e ; string_02e : "Are you sure? " &1ccd 20 05 1b JSR &1b05 ; write_string_from_table_zero ; get_y_or_n &1cd0 20 e0 ff JSR &ffe0 ; OSRDCH &1cd3 09 20 ORA #&20 # Convert to lowercase &1cd5 c9 79 CMP #&79 ; "y" &1cd7 f0 07 BEQ &1ce0 ; is_sure &1cd9 c9 6e CMP #&6e ; "n" &1cdb f0 08 BEQ &1ce5 ; is_not_sure &1cdd 4c d0 1c JMP &1cd0 ; get_y_or_n ; is_sure &1ce0 20 ee ff JSR &ffee ; OSWRCH &1ce3 38 SEC # Leave with carry set to indicate yes &1ce4 60 RTS ; is_not_sure &1ce5 18 CLC # Leave with carry set to indicate no &1ce6 60 RTS ; handle_look &1ce7 20 ee 1a JSR &1aee ; get_word # Returns carry set if no word found &1cea b0 0e BCS &1cfa ; look_at_room &1cec e0 04 CPX #&04 ; WORD_NOUN &1cee d0 07 BNE &1cf7 ; handle_look_nothing &1cf0 c9 08 CMP #&08 ; NOUN_AT &1cf2 d0 03 BNE &1cf7 ; handle_look_nothing &1cf4 4c 01 20 JMP &2001 ; handle_examine ; handle_look_nothing &1cf7 20 a0 1a JSR &1aa0 ; restore_previous_current_word ; look_at_room &1cfa 20 9a 1d JSR &1d9a ; populate_room_exits &1cfd 20 64 1d JSR &1d64 ; check_for_dark_room # Returns carry clear if room is lit &1d00 90 05 BCC &1d07 ; not_dark &1d02 a2 38 LDX #&38 ; string_238 : "It is pitch dark. " &1d04 4c 14 1b JMP &1b14 ; write_string_from_table_two ; not_dark &1d07 ae 21 12 LDX &1221 ; player_room &1d0a bd 62 12 LDA &1262,X ; room_string_ids # Get string for room's long description &1d0d 85 89 STA &89 ; string_id &1d0f bd 58 11 LDA &1158,X ; room_states # Get offset for room's state dependent string &1d12 85 86 STA &86 ; string_id_offset &1d14 a5 8a LDA &8a ; look_string_id &1d16 49 01 EOR #&01 &1d18 85 8a STA &8a ; look_string_id &1d1a aa TAX &1d1b a0 00 LDY #&00 &1d1d 20 2b 1b JSR &1b2b ; write_string # Write variant of "You are " &1d20 a6 89 LDX &89 ; string_id &1d22 a5 86 LDA &86 ; string_id_offset &1d24 f0 0a BEQ &1d30 ; no_secondary_string &1d26 a0 01 LDY #&01 # Use string_table_one for room descriptions &1d28 20 2b 1b JSR &1b2b ; write_string &1d2b 18 CLC &1d2c 8a TXA &1d2d 65 86 ADC &86 ; string_id_offset &1d2f aa TAX ; no_secondary_string &1d30 20 25 1b JSR &1b25 ; end_string_with_period &1d33 a0 01 LDY #&01 # Use string_table_one for room descriptions &1d35 20 2b 1b JSR &1b2b ; write_string &1d38 20 49 1d JSR &1d49 ; check_for_deadly_room &1d3b b0 06 BCS &1d43 ; skip_exits_and_objects &1d3d 20 53 1e JSR &1e53 ; list_room_exits &1d40 20 6d 1f JSR &1f6d ; list_room_objects ; skip_exits_and_objects &1d43 20 19 1b JSR &1b19 ; end_string_without_punctuation &1d46 4c e7 ff JMP &ffe7 ; OSNEWL ; check_for_deadly_room &1d49 a0 05 LDY #&05 ; check_for_deadly_room_loop &1d4b b9 5e 1d LDA &1d5e,Y ; deadly_rooms &1d4e cd 21 12 CMP &1221 ; player_room &1d51 f0 05 BEQ &1d58 ; kill_player &1d53 88 DEY &1d54 10 f5 BPL &1d4b ; check_for_deadly_room_loop ; leave_with_carry_clear &1d56 18 CLC # Leave with carry set to indicate room isn't deadly &1d57 60 RTS ; kill_player &1d58 a9 03 LDA #&03 ; PLAYER_DEAD &1d5a 85 7e STA &7e ; player_state ; leave_with_carry_set &1d5c 38 SEC # Leave with carry set to indicate room is deadly &1d5d 60 RTS ; deadly_rooms &1d5e 77 ; ROOM_77 ; "coils of thick barbed wire" &1d5f 76 ; ROOM_76 ; "the castle" &1d60 8a ; ROOM_8a ; "the entrance hall" &1d61 97 ; ROOM_97 ; "a serving platform" &1d62 98 ; ROOM_98 ; "a serving platform" &1d63 bf ; ROOM_bf ; "the beach" ; check_for_dark_room &1d64 ae 21 12 LDX &1221 ; player_room &1d67 e0 7a CPX #&7a ; ROOM_7a ; "a dark tunnel" &1d69 f0 0e BEQ &1d79 ; unlit_room &1d6b e0 79 CPX #&79 ; ROOM_79 ; "a dark tunnel" &1d6d f0 0a BEQ &1d79 ; unlit_room &1d6f e0 78 CPX #&78 ; ROOM_78 ; "a dark tunnel" &1d71 f0 14 BEQ &1d87 ; lit_if_manhole_is_open &1d73 e0 7b CPX #&7b ; ROOM_7b ; "a dark tunnel" &1d75 f0 10 BEQ &1d87 ; lit_if_manhole_is_open &1d77 d0 dd BNE &1d56 ; leave_with_carry_clear # Leave with carry clear to indicate room is lit ; unlit_room &1d79 a2 18 LDX #&18 ; OBJECT_MINING_HELMET &1d7b 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &1d7e b0 dc BCS &1d5c ; leave_with_carry_set # Leave with carry clear to indicate room is dark &1d80 ad 4c 11 LDA &114c ; object_states + &18 (OBJECT_MINING_HELMET) &1d83 f0 d7 BEQ &1d5c ; leave_with_carry_set # Leave with carry clear to indicate room is dark &1d85 d0 cf BNE &1d56 ; leave_with_carry_clear # Leave with carry clear to indicate room is lit ; lit_if_manhole_is_open &1d87 bd 58 11 LDA &1158,X ; room_states &1d8a c9 03 CMP #&03 ; DOOR_OPEN &1d8c f0 c8 BEQ &1d56 ; leave_with_carry_clear # Leave with carry clear to indicate room is lit &1d8e d0 e9 BNE &1d79 ; unlit_room # Always branches ; move_to_next_room_data &1d90 18 CLC &1d91 65 84 ADC &84 ; room_data_address_low &1d93 85 84 STA &84 ; room_data_address_low &1d95 90 02 BCC &1d99 ; leave &1d97 e6 85 INC &85 ; room_data_address_high ; leave &1d99 60 RTS ; populate_room_exits &1d9a a2 00 LDX #&00 &1d9c a9 52 LDA #&52 &1d9e 85 84 STA &84 ; room_data_address_low &1da0 a9 0a LDA #&0a ; &0a52 = room_exit_data &1da2 85 85 STA &85 ; room_data_address_high ; find_room_loop &1da4 ec 21 12 CPX &1221 ; player_room &1da7 f0 0c BEQ &1db5 ; found_room &1da9 bd c0 08 LDA &08c0,X ; room_exits_count_and_nsew &1dac 29 0f AND #&0f # Low nibble is number of exits &1dae 20 90 1d JSR &1d90 ; move_to_next_room_data &1db1 e8 INX &1db2 4c a4 1d JMP &1da4 ; find_room_loop ; found_room &1db5 bd c0 08 LDA &08c0,X ; room_exits_count_and_nsew &1db8 29 0f AND #&0f # Low nibble is number of exits &1dba 85 87 STA &87 ; number_of_exits &1dbc c6 87 DEC &87 ; number_of_exits &1dbe a9 0b LDA #&0b # For each direction, &1dc0 85 88 STA &88 ; exit_offset &1dc2 bd 89 09 LDA &0989,X ; room_exits_other_directions ; populate_room_exits_loop &1dc5 0a ASL A &1dc6 48 PHA &1dc7 90 1e BCC &1de7 ; no_exit # bit set if room has an exit in that direction &1dc9 a4 87 LDY &87 ; number_of_exits &1dcb c6 87 DEC &87 ; number_of_exits &1dcd b1 84 LDA (&84),Y ; room_data_address # If so, get byte of room data for exit location ; set_room_exit &1dcf a4 88 LDY &88 ; exit_offset &1dd1 99 22 12 STA &1222,Y ; rooms_exits &1dd4 68 PLA &1dd5 88 DEY &1dd6 30 14 BMI &1dec ; leave &1dd8 84 88 STY &88 ; exit_offset &1dda c0 03 CPY #&03 &1ddc f0 03 BEQ &1de1 ; use_nsew_exits &1dde 4c c5 1d JMP &1dc5 ; populate_room_exits_loop ; use_nsew_exits &1de1 bd c0 08 LDA &08c0,X ; room_exits_count_and_nsew &1de4 4c c5 1d JMP &1dc5 ; populate_room_exits_loop ; no_exit &1de7 a9 ff LDA #&ff ; EXIT_NONE # Otherwise, &ff to indicate no exit &1de9 4c cf 1d JMP &1dcf ; set_room_exit ; leave &1dec 60 RTS ; end_string_with_exit_ending &1ded ad 51 1e LDA &1e51 ; exit_ending &1df0 4c fb 1d JMP &1dfb ; end_string_with_ending ; conditionally_write_string_X_and_and &1df3 ad 52 1e LDA &1e52 ; use_exit_ending &1df6 30 f5 BMI &1ded ; end_string_with_exit_ending &1df8 ad 64 59 LDA &5964 ; string_ending ; end_string_with_ending &1dfb c9 02 CMP #&02 ; TEXT_END_PERIOD &1dfd f0 1a BEQ &1e19 ; leave &1dff 20 19 1b JSR &1b19 ; end_string_without_punctuation &1e02 8d 51 1e STA &1e51 ; exit_ending &1e05 8a TXA &1e06 48 PHA &1e07 a0 00 LDY #&00 &1e09 20 1a 1e JSR &1e1a ; write_exit &1e0c a2 16 LDX #&16 ; string_016 : " and " &1e0e 20 2b 1b JSR &1b2b ; write_string &1e11 68 PLA &1e12 aa TAX &1e13 20 25 1b JSR &1b25 ; end_string_with_period &1e16 8d 51 1e STA &1e51 ; exit_ending ; leave &1e19 60 RTS ; write_exit &1e1a ad 52 1e LDA &1e52 ; use_exit_ending &1e1d 10 21 BPL &1e40 ; to_write_string &1e1f 20 19 1b JSR &1b19 ; end_string_without_punctuation &1e22 20 2b 1b JSR &1b2b ; write_string &1e25 a2 41 LDX #&41 ; string_041 : " to " &1e27 20 2b 1b JSR &1b2b ; write_string &1e2a ae 50 1e LDX &1e50 ; exit_room &1e2d bd 62 12 LDA &1262,X ; room_string_ids &1e30 aa TAX &1e31 ca DEX &1e32 a0 01 LDY #&01 &1e34 ad 51 1e LDA &1e51 ; exit_ending &1e37 8d 64 59 STA &5964 ; string_ending &1e3a 20 2b 1b JSR &1b2b ; write_string # Write short room description &1e3d a0 00 LDY #&00 &1e3f 60 RTS ; to_write_string &1e40 4c 2b 1b JMP &1b2b ; write_string ; directions_string_ids &1e43 0a ; string_00a : "north" &1e44 0b ; string_00b : "south" &1e45 0c ; string_00c : "east" &1e46 0d ; string_00d : "west" &1e47 0e ; string_00e : "northeast" &1e48 0f ; string_00f : "northwest" &1e49 10 ; string_010 : "southeast" &1e4a 11 ; string_011 : "southwest" &1e4b 12 ; string_012 : "up" &1e4c 13 ; string_013 : "down" &1e4d 14 ; string_014 : "in" &1e4e 15 ; string_015 : "out" &1e4f 16 ; string_016 : " and " ; exit_room &1e50 00 ; exit_ending &1e51 00 ; use_exit_ending &1e52 00 ; list_room_exits &1e53 ad 21 12 LDA &1221 ; player_room &1e56 c9 73 CMP #&73 ; ROOM_73 ; "some dusty ground" &1e58 d0 1c BNE &1e76 ; list_regular_room_exits &1e5a ad cb 11 LDA &11cb ; room_states + &73 &1e5d c9 01 CMP #&01 ; &76 - &75 : string_176 : "a thick layer of dust covers the ground" &1e5f d0 15 BNE &1e76 ; list_regular_room_exits &1e61 20 19 1b JSR &1b19 ; end_string_without_punctuation &1e64 a0 00 LDY #&00 &1e66 a2 1b LDX #&1b ; string_01b : "The only exit you can see is " &1e68 20 2b 1b JSR &1b2b ; write_string &1e6b 20 25 1b JSR &1b25 ; end_string_with_period &1e6e a2 0d LDX #&0d ; string_00d : "west" &1e70 20 2b 1b JSR &1b2b ; write_string &1e73 4c 19 1b JMP &1b19 ; end_string_without_punctuation ; list_regular_room_exits &1e76 a9 80 LDA #&80 &1e78 8d 52 1e STA &1e52 ; use_exit_ending # Set to negative to use exit_ending to end strings &1e7b ac 21 12 LDY &1221 ; player_room &1e7e 20 19 1b JSR &1b19 ; end_string_without_punctuation &1e81 b9 c0 08 LDA &08c0,Y ; room_exits_count_and_nsew &oe84 29 0f AND #&0f # Low nibble is number of exits &1e86 85 87 STA &87 ; number_of_exits_remaining &1e88 c9 01 CMP #&01 &1e8a f0 3b BEQ &1ec7 ; single_exit &1e8c a2 1c LDX #&1c &1e8e a0 00 LDY #&00 ; string_01c : "There are visible exits " &1e90 20 2b 1b JSR &1b2b ; write_string &1e93 a9 01 LDA #&01 ; TEXT_END_COMMA &1e95 8d 51 1e STA &1e51 ; exit_ending ; list_all_exits &1e98 a2 00 LDX #&00 ; list_exits_loop &1e9a bd 22 12 LDA &1222,X ; rooms_exits &1e9d c9 ff CMP #&ff ; EXIT_NONE &1e9f d0 0b BNE &1eac ; direction_has_exit ; consider_next_direction &1ea1 e8 INX &1ea2 e0 0c CPX #&0c &1ea4 90 f4 BCC &1e9a ; list_exits_loop &1ea6 a9 00 LDA #&00 &1ea8 8d 52 1e STA &1e52 ; use_exit_ending # Set to positive to use string_ending to end strings &1eab 60 RTS ; direction_has_exit &1eac 8d 50 1e STA &1e50 ; exit_room &1eaf a0 00 LDY #&00 &1eb1 8a TXA &1eb2 48 PHA &1eb3 bd 43 1e LDA &1e43,X ; directions_string_ids &1eb6 aa TAX &1eb7 a5 87 LDA &87 ; number_of_exits_remaining &1eb9 c9 02 CMP #&02 &1ebb f0 19 BEQ &1ed6 ; two_exits_remaining &1ebd 20 1a 1e JSR &1e1a ; write_exit ; to_consider_next_direction &1ec0 68 PLA &1ec1 aa TAX &1ec2 c6 87 DEC &87 ; number_of_exits_remaining &1ec4 4c a1 1e JMP &1ea1 ; consider_next_direction ; single_exit &1ec7 a2 1b LDX #&1b &1ec9 a0 00 LDY #&00 ; string_01b : "The only exit you can see is " &1ecb 20 2b 1b JSR &1b2b ; write_string &1ece a9 02 LDA #&02 ; TEXT_END_PERIOD &1ed0 8d 51 1e STA &1e51 ; exit_ending &1ed3 4c 98 1e JMP &1e98 ; list_all_exits ; two_exits_remaining &1ed6 20 f3 1d JSR &1df3; conditionally_write_string_X_and_and &1ed9 4c c0 1e JMP &1ec0 ; to_consider_next_direction ; movement_direction &1edc 00 ; handle_north &1edd a0 00 LDY #&00 ; DIRECTION_NORTH ; consider_moving_in_direction &1edf 8c dc 1e STY &1edc ; movement_direction &1ee2 b9 22 12 LDA &1222,Y ; rooms_exits &1ee5 c9 ff CMP #&ff ; EXIT_NONE &1ee7 d0 14 BNE &1efd ; use_Exit &1ee9 a2 1d LDX #&1d &1eeb a0 00 LDY #&00 ; string_01d : "There is no exit " &1eed 20 2b 1b JSR &1b2b ; write_string &1ef0 20 25 1b JSR &1b25 ; end_string_with_period &1ef3 ae dc 1e LDX &1edc ; movement_direction &1ef6 bd 43 1e LDA &1e43,X ; directions_string_ids &1ef9 aa TAX &1efa 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; use_exit &1efd 20 64 1d JSR &1d64 ; check_for_dark_room # Returns carry clear if room is lit &1f00 90 08 BCC &1f0a ; call_room_exit_handler &1f02 20 58 1d JSR &1d58 ; kill_player &1f05 a2 39 LDX #&39 ; string_239 : "You stumble in the darkness and break your neck! " &1f07 4c 14 1b JMP &1b14 ; write_string_from_table_two ; to_call_room_exit_handler &1f0a 4c 4d 1f JMP &1f4d ; call_room_exit_handler ; use_room_exit_Y &1f0d b9 22 12 LDA &1222,Y ; rooms_exits &1f10 8d 21 12 STA &1221 ; player_room &1f13 4c fa 1c JMP &1cfa ; look_at_room ; handle_south &1f16 a0 01 LDY #&01 ; DIRECTION_SOUTH &1f18 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_east &1f1b a0 02 LDY #&02 ; DIRECTION_EAST &1f1d 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_west &1f20 a0 03 LDY #&03 ; DIRECTION_WEST &1f22 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_northeast &1f25 a0 04 LDY #&04 ; DIRECTION_NORTHEAST &1f27 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_northwest &1f2a a0 05 LDY #&05 ; DIRECTION_NORTHWEST &1f2c 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_southeast &1f2f a0 06 LDY #&06 ; DIRECTION_SOUTHEAST &1f31 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_southwest &1f34 a0 07 LDY #&07 ; DIRECTION_SOUTHWEST &1f36 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_up &1f39 a0 08 LDY #&08 ; DIRECTION_UP &1f3b 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_down &1f3e a0 09 LDY #&09 ; DIRECTION_DOWN &1f40 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_in &1f43 a0 0a LDY #&0a ; DIRECTION_IN &1f45 4c df 1e JMP &1edf ; consider_moving_in_direction ; handle_out &1f48 a0 0b LDY #&0b ; DIRECTION_OUT &1f4a 4c df 1e JMP &1edf ; consider_moving_in_direction ; call_room_exit_handler &1f4d a2 1a LDX #&1a ; check_for_handler_loop &1f4f bd 2e 2b LDA &2b2e,X ; rooms_with_exit_handlers &1f52 cd 21 12 CMP &1221 ; player_room &1f55 f0 06 BEQ &1f5d ; room_has_exit_handler &1f57 ca DEX &1f58 10 f5 BPL &1f4f ; check_for_handler_loop &1f5a 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; room_has_exit_handler &1f5d 8a TXA &1f5e 0a ASL A &1f5f aa TAX &1f60 bd 49 2b LDA &2b49,X ; room_exit_handler_addresses &1f63 85 81 STA &81 ; room_exit_handler_address_low &1f65 bd 4a 2b LDA &2b4a,X ; room_exit_handler_addresses + 1 &1f68 85 82 STA &82 ; room_exit_handler_address_high &1f6a 6c 81 00 JMP (&0081) ; room_exit_handler_address ; list_room_objects &1f6d ad 21 12 LDA &1221 ; player_room ; list_objects &1f70 a2 18 LDX #&18 ; string_018 : "You find " ; list_objects_with_prefix &1f72 a0 00 LDY #&00 &1f74 85 89 STA &89 ; room &1f76 84 87 STY &87 ; number_of_objects ; count_room_objects_loop &1f78 d9 10 11 CMP &1110,Y ; object_locations &1f7b f0 25 BEQ &1fa2 ; count_object ; consider_next_object_for_counting &1f7d c8 INY &1f7e c0 24 CPY #&24 ; OBJECT_LAST + 1 &1f80 90 f6 BCC &1f78 ; count_room_objects_loop &1f82 a0 00 LDY #&00 &1f84 20 19 1b JSR &1b19 ; end_string_without_punctuation &1f87 20 2b 1b JSR &1b2b ; write_string &1f8a a5 87 LDA &87 ; number_of_objects &1f8c f0 19 BEQ &1fa7 ; no_objects_in_room &1f8e c9 01 CMP #&01 &1f90 f0 21 BEQ &1fb3 ; single_object &1f92 20 1f 1b JSR &1b1f ; end_string_with_comma ; list_objects_loop &1f95 a5 89 LDA &89 ; room &1f97 d9 10 11 CMP &1110,Y ; object_locations &1f9a f0 1e BEQ &1fba ; list_this_object ; consider_next_object_for_listing &1f9c c8 INY &1f9d c0 24 CPY #&24 ; OBJECT_LAST + 1 &1f9f 90 f4 BCC &1f95 ; list_objects_loop &1fa1 60 RTS ; count_object &1fa2 e6 87 INC &87 ; number_of_objects &1fa4 4c 7d 1f JMP &1f7d ; consider_next_object_for_counting ; no_objects_in_room &1fa7 a5 89 LDA &89 ; room &1fa9 a2 1e LDX #&1e &1fab 20 25 1b JSR &1b25 ; end_string_with_period &1fae a0 00 LDY #&00 &1fb0 4c 2b 1b JMP &1b2b ; write_string ; single_object &1fb3 20 25 1b JSR &1b25 ; end_string_with_period &1fb6 4c 95 1f JMP &1f95 ; list_objects_loop ; object &1fb9 00 ; list_this_object &1fba 8c b9 1f STY &1fb9 ; object &1fbd a2 1f LDX #&1f &1fbf ad 64 59 LDA &5964 ; string_ending &1fc2 48 PHA &1fc3 20 19 1b JSR &1b19 ; end_string_without_punctuation &1fc6 a0 00 LDY #&00 &1fc8 20 2b 1b JSR &1b2b ; write_string &1fcb ac b9 1f LDY &1fb9 ; object &1fce b9 2b 13 LDA &132b,Y ; object_string_ids &1fd1 aa TAX &1fd2 a5 87 LDA &87 ; number_of_objects &1fd4 c9 02 CMP #&02 &1fd6 f0 11 BEQ &1fe9 ; two_objects_remaining &1fd8 68 PLA &1fd9 8d 64 59 STA &5964 ; string_ending &1fdc a0 00 LDY #&00 &1fde 20 2b 1b JSR &1b2b ; write_string ; to_consider_next_object &1fe1 c6 87 DEC &87 ; number_of_objects &1fe3 ac b9 1f LDY &1fb9 ; object &1fe6 4c 9c 1f JMP &1f9c ; consider_next_object_for_listing ; two_objects_remaining &1fe9 68 PLA &1fea 20 f3 1d JSR &1df3; conditionally_write_string_X_and_and &1fed 4c e1 1f JMP &1fe1 ; to_consider_next_object ; handle_inventory &1ff0 a9 ff LDA #&ff ; ROOM_CARRYING &1ff2 a2 1a LDX #&1a ; string_01a : "You are carrying &1ff4 20 72 1f JSR &1f72 ; list_objects_with_prefix &1ff7 a9 fe LDA #&fe ; ROOM_WEARING &1ff9 a2 19 LDX #&19 ; string_019 : "You are wearing " &1ffb 20 72 1f JSR &1f72 ; list_objects_with_prefix &1ffe 4c e7 ff JMP &ffe7 ; OSNEWL ; handle_examine &2001 20 66 20 JSR &2066 ; get_word_for_multiple_object_verbs # Returns carry set if no word found &2004 b0 59 BCS &205f ; you_see_nothing_which_interests_you &2006 e0 03 CPX #&03 ; WORD_OBJECT &2008 f0 09 BEQ &2013 ; handle_examine_object &200a e0 07 CPX #&07 ; WORD_EVERYTHING &200c d0 f3 BNE &2001 ; handle_examine &200e a9 2d LDA #&2d ; string_02d : "You see nothing which interests you. " &2010 4c bf 20 JMP &20bf ; handle_verb_everything ; handle_examine_object &2013 aa TAX &2014 bd 10 11 LDA &1110,X ; object_locations &2017 cd 21 12 CMP &1221 ; player_room &201a f0 12 BEQ &202e ; handle_examine_accessible_object &201c c9 ff CMP #&ff ; ROOM_CARRYING &201e f0 0e BEQ &202e ; handle_examine_accessible_object &2020 c9 fe CMP #&fe ; ROOM_WEARING &2022 f0 0a BEQ &202e ; handle_examine_accessible_object &2024 ad 65 20 LDA &2065 ; word_type_for_multiple_object_verbs &2027 c9 07 CMP #&07 ; WORD_EVERYTHING &2029 f0 39 BEQ &2064 ; leave &202b 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_examine_accessible_object &202e ce 64 18 DEC &1864 ; object_to_consider &2031 8a TXA &2032 48 PHA &2033 a2 6e LDX #&6e ; string_06e : "You examine the " &2035 20 b8 20 JSR &20b8 ; write_string_from_table_zero_and_object_A &2038 20 19 1b JSR &1b19 ; end_string_without_punctuation &203b 68 PLA &203c 48 PHA &203d aa TAX &203e bd 4f 13 LDA &134f,X ; object_extra_string_ids &2041 18 CLC &2042 7d 34 11 ADC &1134,X ; object_states &2045 aa TAX &2046 a0 00 LDY #&00 &2048 20 2b 1b JSR &1b2b ; write_string # Write object description &204b 68 PLA &204c 18 CLC &204d 69 c9 ADC #&c9 ; ROOM_OBJECTS &204f 20 70 1f JSR &1f70 ; list_objects &2052 ad 65 20 LDA &2065 ; word_type_for_multiple_object_verbs &2055 c9 07 CMP #&07 ; WORD_EVERYTHING &2057 d0 03 BNE &205c ; to_osnewl &2059 20 e7 ff JSR &ffe7 ; OSNEWL ; to_osnewl &205c 4c e7 ff JMP &ffe7 ; OSNEWL ; you_see_nothing_which_interests_you &205f a2 2d LDX #&2d ; string_02d : "You see nothing which interests you. " &2061 20 05 1b JSR &1b05 ; write_string_from_table_zero ; leave &2064 60 RTS ; word_type_for_multiple_object_verbs &2065 00 ; get_word_for_multiple_object_verbs &2066 a9 24 LDA #&24 &2068 8d 64 18 STA &1864 ; object_to_consider &206b 20 ee 1a JSR &1aee ; get_word # Returns carry set if no word found &206e 8e 65 20 STX &2065 ; word_type_for_multiple_object_verbs &2071 60 RTS ; objects_to_apply_verb_to &2072 ff ff ff ff ff ff ff ff ff ff ff ff ; handle_drop &207e 20 66 20 JSR &2066 ; get_word_for_multiple_object_verbs # Returns carry clear if no word found &2081 90 05 BCC &2088 ; handle_drop_word &2083 a2 2b LDX #&2b ; string_02b : "You didn't drop anything! " &2085 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; handle_drop_word &2088 e0 07 CPX #&07 ; WORD_EVERYTHING &208a f0 31 BEQ &20bd ; handle_drop_everything &208c e0 03 CPX #&03 ; WORD_OBJECT &208e f0 03 BEQ &2093 ; handle_drop_object ; to_you_can't_do_that &2090 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_drop_object &2093 aa TAX &2094 bd 10 11 LDA &1110,X ; object_locations &2097 c9 ff CMP #&ff ; ROOM_CARRYING &2099 f0 11 BEQ &20ac ; handle_drop_accessible_object &209b ad 65 20 LDA &2065 ; word_type_for_multiple_object_verbs &209e c9 07 CMP #&07 ; WORD_EVERYTHING &20a0 f0 09 BEQ &20ab ; leave &20a2 bd 10 11 LDA &1110,X ; object_locations &20a5 c9 fe CMP #&fe ; ROOM_WEARING &20a7 f0 03 BEQ &20ac ; handle_drop_accessible_object &20a9 d0 e5 BNE &2090 ; to_you_can't_do_that ; leave &20ab 60 RTS ; handle_drop_accessible_object &20ac ce 64 18 DEC &1864 ; object_to_consider &20af ad 21 12 LDA &1221 ; player_room &20b2 9d 10 11 STA &1110,X ; object_locations &20b5 8a TXA &20b6 a2 27 LDX #&27 ; string_027 : "You drop the " ; write_string_from_table_zero_and_object_A &20b8 a0 00 LDY #&00 &20ba 4c c3 21 JMP &21c3 ; write_string_and_object_A &20bd a9 2b LDA #&2b ; string_02b : "You didn't drop anything! " ; handle_verb_everything &20bf 8d 32 21 STA &2132 ; multiple_object_verb_error_string_id &20c2 20 ee 1a JSR &1aee ; get_word # Returns carry set if no word found &20c5 b0 1c BCS &20e3 ; clear_objects_to_apply_verb_to &20c7 e0 08 CPX #&08 ; WORD_EXCEPT &20c9 d0 18 BNE &20e3 ; clear_objects_to_apply_verb_to &20cb a9 0b LDA #&0b &20cd 85 7b STA &7b ; slot_offset ; exclude_objects_loop &20cf 20 ee 1a JSR &1aee ; get_word # Returns carry set if no word found &20d2 b0 19 BCS &20ed ; apply_verb_to_objects_after_restoring_previous_current_word &20d4 e0 03 CPX #&03 ; WORD_OBJECT &20d6 d0 15 BNE &20ed ; apply_verb_to_objects_after_restoring_previous_current_word &20d8 a4 7b LDY &7b ; slot_offset &20da 99 72 20 STA &2072,Y ; objects_to_apply_verb_to &20dd c6 7b DEC &7b ; slot_offset &20df 10 ee BPL &20cf ; exclude_objects_loop &20e1 30 0d BMI &20f0 ; apply_verb_to_objects # Always branches ; clear_objects_to_apply_verb_to &20e3 a0 0b LDY #&0b &20e5 a9 ff LDA #&ff ; clear_objects_to_apply_verb_to_loop &20e7 99 72 20 STA &2072,Y ; objects_to_apply_verb_to &20ea 88 DEY &20eb 10 fa BPL &20e7 ; clear_objects_to_apply_verb_to_loop ; apply_verb_to_objects_after_restoring_previous_current_word &20ed 20 a0 1a JSR &1aa0 ; restore_previous_current_word ; apply_verb_to_objects &20f0 a9 00 LDA #&00 ; apply_verb_to_objects_loop &20f2 85 7a STA &7a ; object &20f4 a0 0b LDY #&0b &20f6 b9 72 20 LDA &2072,Y ; objects_to_apply_verb_to &20f9 c5 7a CMP &7a ; object &20fb f0 22 BEQ &211f ; consider_next_object_for_multiple_verb &20fd 88 DEY &20fe 10 f6 BPL &20f6 &2100 20 19 1b JSR &1b19 ; end_string_without_punctuation &2103 a5 7a LDA &7a ; object &2105 ac 32 21 LDY &2132 ; multiple_object_verb_error_string_id &2108 c0 2b CPY #&2b ; string_02b : "You didn't drop anything! " &210a f0 10 BEQ &211c ; to_handle_drop_object &210c c0 2a CPY #&2a ; string_02a : "You didn't take anything! " &210e f0 06 BEQ &2116 ; to_handle_get_object &2110 20 13 20 JSR &2013 ; handle_examine_object &2113 18 CLC &2114 90 09 BCC &211f ; consider_next_object_for_multiple_verb # Always branches ; to_handle_get_object &2116 20 4f 21 JSR &214f ; handle_get_object &2119 18 CLC &211a 90 03 BCC &211f ; consider_next_object_for_multiple_verb # Always branches &211c 20 93 20 JSR &2093 ; handle_drop_object ; consider_next_object_for_multiple_verb &211f e6 7a INC &7a ; object &2121 a5 7a LDA &7a ; object &2123 c9 24 CMP #&24 ; OBJECTS_LAST + 1 &2125 90 cb BCC &20f2 ; apply_verb_to_objects_loop &2127 cd 64 18 CMP &1864 ; object_to_consider &212a d0 16 BNE &2142 ; leave &212c ae 32 21 LDX &2132 ; multiple_object_verb_error_string_id &212f 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; multiple_object_verb_error_string_id &2132 00 ; handle_get_everything &2133 a9 2a LDA #&2a ; string_02a : "You didn't take anything! " &2135 4c bf 20 JMP &20bf ; handle_verb_everything ; handle_get &2138 20 66 20 JSR &2066 ; get_word_for_multiple_object_verbs # Returns carry clear if no word found &213b 90 06 BCC &2143 ; handle_get_word &213d a2 2a LDX #&2a ; string_02a : "You didn't take anything! " &213f 20 05 1b JSR &1b05 ; write_string_from_table_zero ; leave &2142 60 RTS ; handle_get_word &2143 e0 01 CPX #&01 ; WORD_DIRECTION &2145 f0 f1 BEQ &2138 ; handle_get &2147 e0 07 CPX #&07 ; WORD_EVERYTHING &2149 f0 e8 BEQ &2133 ; handle_get_everything &214b e0 03 CPX #&03 ; WORD_OBJECT &214d d0 3d BNE &218c ; to_you_can't_do_that ; handle_get_object &214f aa TAX &2150 bd 10 11 LDA &1110,X ; object_locations &2153 cd 21 12 CMP &1221 ; player_room &2156 f0 38 BEQ &2190 ; handle_get_accessible_object &2158 ad 65 20 LDA &2065 ; word_type_for_multiple_object_verbs &215b c9 07 CMP #&07 ; WORD_EVERYTHING &215d f0 30 BEQ &218f ; leave &215f bd 10 11 LDA &1110,X ; object_locations &2162 c9 fe CMP #&fe ; ROOM_WEARING &2164 f0 2a BEQ &2190 ; handle_get_accessible_object &2166 c9 ff CMP #&ff ; ROOM_CARRYING &2168 d0 06 BNE &2170 ; not_already_carrying_object &216a 8a TXA &216b a2 28 LDX #&28 &216d 4c b8 20 JMP &20b8 ; write_string_from_table_zero_and_object_A ; not_already_carrying_object &2170 c9 c9 CMP #&c9 ; ROOM_OBJECTS &2172 90 18 BCC &218c ; to_you_can't_do_that &2174 c9 fa CMP #&fa ; ROOM_OBJECTS + OBJECTS_LAST + 1 &2176 b0 14 BCS &218c ; to_you_can't_do_that ; handle_get_object_in_object &2178 38 SEC &2179 e9 c9 SBC #&c9 ; ROOM_OBJECTS &217b a8 TAY &217c b9 10 11 LDA &1110,Y ; object_locations &217f cd 21 12 CMP &1221 ; player_room &2182 f0 0c BEQ &2190 ; handle_get_accessible_object &2184 c9 ff CMP #&ff ; ROOM_WEARING &2186 f0 08 BEQ &2190 ; handle_get_accessible_object &2188 c9 fe CMP #&fe ; ROOM_CARRYING &218a f0 04 BEQ &2190 ; handle_get_accessible_object ; to_you_can't_do_that &218c 4c 6f 1a JMP &1a6f ; you_can't_do_that ; leave &218f 60 RTS ; handle_get_accessible_object &2190 a0 0b LDY #&0b &2192 8a TXA &2193 18 CLC ; check_for_immovable_object_loop &2194 d9 b7 21 CMP &21b7,Y ; immovable_objects &2197 f0 11 BEQ &21aa ; is_immovable &2199 88 DEY &219a 10 f8 BPL &2194 ; check_for_immovable_object_loop &219c ce 64 18 DEC &1864 ; object_to_consider &219f a9 ff LDA #&ff ; ROOM_CARRYING &21a1 9d 10 11 STA &1110,X ; object_locations &21a4 8a TXA &21a5 a2 25 LDX #&25 ; string_025 : "You have the " &21a7 4c b8 20 JMP &20b8 ; write_string_from_table_zero_and_object_A ; is_immovable &21aa ad 65 20 LDA &2065 ; word_type_for_multiple_object_verbs &21ad c9 07 CMP #&07 ; WORD_EVERYTHING &21af f0 de BEQ &218f ; leave &21b1 8a TXA &21b2 a2 17 LDX #&17 ; string_017 : "You are unable to move the " &21b4 4c b8 20 JMP &20b8 ; write_string_from_table_zero_and_object_A ; immovable_objects &21b7 01 ; OBJECT_NOTICE &21b8 02 ; OBJECT_SIGN &21b9 03 ; OBJECT_TELEPHONE &21ba 05 ; OBJECT_LARGE_CHEST &21bb 08 ; OBJECT_MILESTONE &21bc 12 ; OBJECT_LITTER_BIN &21bd 14 ; OBJECT_STATUE &21be 17 ; OBJECT_BED &21bf 1d ; OBJECT_MAP &21c0 20 ; OBJECT_PROFESSOR &21c1 22 ; OBJECT_COMPUTER &21c2 23 ; OBJECT_LEVER ; write_string_and_object_A &21c3 48 PHA &21c4 20 2b 1b JSR &1b2b ; write_string &21c7 20 25 1b JSR &1b25 ; end_string_with_period &21ca 68 PLA &21cb aa TAX &21cc bd 2b 13 LDA &132b,X ; object_string_ids &21cf aa TAX &21d0 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; handle_wear &21d3 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &21d6 90 01 BCC &21d9 ; handle_wear_object &21d8 60 RTS ; handle_wear_object &21d9 aa TAX &21da bd 10 11 LDA &1110,X ; object_locations &21dd c9 ff CMP #&ff &21df f0 12 BEQ &21f3 ; handle_wear_accessible_object &21e1 cd 21 12 CMP &1221 ; player_room &21e4 f0 0d BEQ &21f3 ; handle_wear_accessible_object &21e6 c9 fe CMP #&fe ; ROOM_WEARING &21e8 d0 06 BNE &21f0 ; to_you_can't_do_that &21ea 8a TXA &21eb a2 29 LDX #&29 ; string_029 "You are already wearing the " &21ed 4c b8 20 JMP &20b8 ; write_string_from_table_zero_and_object_A ; to_you_can't_do_that &21f0 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_wear_accessible_object &21f3 8a TXA &21f4 a0 08 LDY #&08 ; check_for_wearable_object_loop &21f6 d9 25 22 CMP &2225,Y ; wearable_objects &21f9 f0 08 BEQ &2203 ; handle_wear_wearable_carried_object &21fb 88 DEY &21fc 10 f8 BPL &21f6 ; check_for_wearable_object_loop &21fe a2 24 LDX #&24 ; string_024 : "You can't wear the " &2200 4c b8 20 JMP &20b8 ; write_string_from_table_zero_and_object_A ; handle_wear_wearable_carried_object &2203 c9 07 CMP #&07 ; OBJECT_FLIPPERS &2205 f0 0d BEQ &2214 ; handle_wear_flippers &2207 c9 0b CMP #&0b ; OBJECT_SHOES &2209 d0 0f BNE &221a ; wear_object &220b ad 17 11 LDA &1117 ; object_locations + &07 (OBJECT_FLIPPERS) ; check_for_footwear &220e c9 fe CMP #&fe ; ROOM_WEARING &2210 f0 de BEQ &21f0 ; to_you_can't_do_that &2212 d0 06 BNE &221a ; wear_object ; handle_wear_flippers # Always branches &2214 ad 1b 11 LDA &111b ; object_locations + &0b (OBJECT_SHOES) &2217 4c 0e 22 JMP &220e ; check_for_footwear ; wear_object &221a a9 fe LDA #&fe ; ROOM_WEARING &221c 9d 10 11 STA &1110,X ; object_locations &221f 8a TXA &2220 a2 26 LDX #&26 ; string_026 : "You wear the " &2222 4c b8 20 JMP &20b8 ; write_string_from_table_zero_and_object_A ; wearable_objects &2225 06 ; OBJECT_DIVING_SUIT &2226 07 ; OBJECT_FLIPPERS &2227 0b ; OBJECT_SHOES &2228 0c ; OBJECT_OVERALLS &2229 0e ; OBJECT_CARNATION &222a 18 ; OBJECT_MINING_HELMET &222b 1a ; OBJECT_LAB_COAT &222c 1c ; OBJECT_MASK &222d 1f ; OBJECT_GLOVES ; filename_buffer &222e 20 20 20 20 20 20 20 0d ; " \r" ; file_block &2236 2e 22 ; filename &225e = filename_buffer &2238 00 11 ff ff ; load address &1100 = game_state &223c 00 11 ff ff ; execution address &1100 = game_state &2240 00 11 ff ff ; start address &1100 = game_state &2244 54 12 ff ff ; end address &1254 = end_of_game_state ; initial_file_block &2248 2e 22 ; filename &22ee = filename_buffer &2249 00 11 ff ff ; load address &1100 = game_state &224e 00 11 ff ff ; execution address &1100 = game_state &2252 00 11 ff ff ; start address &1100 = game_state &2256 54 12 ff ff ; end address &1254 = end_of_game_state ; get_filename &225a a0 00 LDY #&00 &225c 20 2b 1b JSR &1b2b ; write_string &225f a2 31 LDX #&31 ; string_031 : " game position: type file name or Return Key to abort. " &2261 20 05 1b JSR &1b05 ; write_string_from_table_zero &2264 20 e7 ff JSR &ffe7 ; OSNEWL &2267 a2 11 LDX #&11 ; copy_file_block_loop &2269 bd 48 22 LDA &2248,X ; initial_file_block &226c 9d 36 22 STA &2236,X ; file_block &226f ca DEX &2270 10 f7 BPL &2269 ; copy_file_block_loop &2272 a9 3e LDA #&3e ; ">" &2274 20 ee ff JSR &ffee ; OSWRCH &2277 8d 69 18 STA &1869 ; allow_previous_input &227a a2 2e LDX #&2e &227c a0 22 LDY #&22 ; &222e = filename_buffer &227e a9 07 LDA #&07 ; 7 characters maximum &2280 4c 6a 18 JMP &186a ; get_input ; handle_save &2283 a2 2f LDX #&2f ; string_02f : "Save"; &2285 a9 00 LDA #&00 ; save a file ; save_or_load_file &2287 48 PHA &2288 20 5a 22 JSR &225a ; get_filename &228b c0 00 CPY #&00 &228d f0 09 BEQ &2298 ; skip_file &228f 68 PLA &2290 48 PHA &2291 a2 36 LDX #&36 &2293 a0 22 LDY #&22 ; &2236 = file_block &2295 20 dd ff JSR &ffdd ; OSFILE ; skip_file &2298 20 e7 ff JSR &ffe7 ; OSNEWL &229b 20 c1 1c JSR &1cc1 ; write_okay &229e 68 PLA &229f d0 01 BNE &22a2 ; look_after_restore &22a1 60 RTS ; look_after_restore &22a2 20 e7 ff JSR &ffe7 ; OSNEWL &22a5 4c fa 1c JMP &1cfa ; look_at_room ; handle_restore &22a8 a2 30 LDX #&30 ; string_030 : "Load previous" &22aa a9 ff LDA #&ff ; load a file &22ac 4c 87 22 JMP &2287; save_or_load_file ; change_object_locations &22af 86 7f STX &7f ; origin_room &22b1 84 80 STY &80 ; target_room &22b3 a0 23 LDY #&23 ; OBJECT_LAST &22b5 a2 00 LDX #&00 ; change_object_locations_loop &22b7 b9 10 11 LDA &1110,Y ; object_locations &22ba c5 7f CMP &7f ; origin_room &22bc d0 06 BNE &22c4 ; consider_next_object &22be a5 80 LDA &80 ; target_room &22c0 99 10 11 STA &1110,Y ; object_locations &22c3 e8 INX ; consider_next_object &22c4 88 DEY &22c5 10 f0 BPL &22b7 ; change_object_locations_loop &22c7 e0 00 CPX #&00 &22c9 f0 02 BEQ &22cd ; leave_with_carry_clear &22cb 38 SEC # Leave with carry set to indicate object(s) moved &22cc 60 RTS ; leave_with_carry_clear &22cd 18 CLC # Leave with carry clear to indicate no objects moved ; leave &22ce 60 RTS ; handle_put &22cf 20 f3 1a JSR &1af3 ; get_object # Returns carry set if no object found &22d2 b0 fa BCS &22ce ; leave &22d4 85 8c STA &8c ; source_object &22d6 20 f3 1a JSR &1af3 ; get_object # Returns carry set if no object found &22d9 b0 f3 BCS &22ce ; leave &22db 85 8d STA &8d ; target_object &22dd c5 8c CMP &8c ; source_object &22df d0 03 BNE &22e4 ; handle_put_object_object ; to_you_can't_do_that &22e1 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_put_object_object &22e4 aa TAX &22e5 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &22e8 b0 f7 BCS &22e1 ; to_you_can't_do_that &22ea e0 05 CPX #&05 ; OBJECT_LARGE_CHEST &22ec f0 20 BEQ &230e ; handle_put_object_in_container &22ee e0 12 CPX #&12 ; OBJECT_SNARE &22f0 f0 1c BEQ &230e ; handle_put_object_in_container &22f2 e0 03 CPX #&03 ; OBJECT_TELEPHONE &22f4 f0 06 BEQ &22fc ; handle_put_object_in_telephone &22f6 e0 18 CPX #&18 ; OBJECT_MINING_HELMET &22f8 f0 0e BEQ &2308 ; handle_put_object_in_mining_helmet &22fa d0 e5 BNE &22e1 ; to_you_can't_do_that # Always branches ; handle_put_object_in_telephone &22fc a6 8c LDX &8c ; source_object &22fe e0 04 CPX #&04 ; OBJECT_RECEIVER &2300 f0 0c BEQ &230e ; handle_put_object_in_container &2302 e0 0a CPX #&0a ; OBJECT_COIN &2304 f0 08 BEQ &230e ; handle_put_object_in_container &2306 d0 d9 BNE &22e1 ; to_you_can't_do_that # Always branches ; handle_put_object_in_mining_helmet &2308 a6 8c LDX &8c ; source_object &230a e0 16 CPX #&16 ; OBJECT_BATTERY &230c d0 d3 BNE &22e1 ; to_you_can't_do_that ; handle_put_object_in_container &230e a6 8c LDX &8c ; source_object &2310 bd 10 11 LDA &1110,X ; object_locations &2313 c9 ff CMP #&ff ; ROOM_CARRYING &2315 d0 ca BNE &22e1 ; to_you_can't_do_that &2317 a5 8d LDA &8d ; target_object &2319 18 CLC &231a 69 c9 ADC #&c9 ; ROOM_OBJECTS &231c 9d 10 11 STA &1110,X ; object_locations &231f 4c c1 1c JMP &1cc1 ; write_okay ; check_if_object_is_accessible &2322 bd 10 11 LDA &1110,X ; object_locations &2325 cd 21 12 CMP &1221 ; player_room &2328 f0 0a BEQ &2334 ; leave_with_carry_clear &232a c9 ff CMP #&ff ; ROOM_CARRYING &232c f0 06 BEQ &2334 ; leave_with_carry_clear &232e c9 fe CMP #&fe ; ROOM_WEARING &2330 f0 02 BEQ &2334 ; leave_with_carry_clear &2332 38 SEC # Leave with carry set to indicate object inaccessible &2333 60 RTS ; leave_with_carry_clear &2334 18 CLC # Leave with carry clear to indicate object accessible ; leave &2335 60 RTS ; handle_shift &2336 20 a7 1a JSR &1aa7 ; get_noun # Returns carry set if no noun found &2339 b0 fa BCS &2335 ; leave &233b c9 12 CMP #&12 ; NOUN_ON &233d f0 07 BEQ &2346 ; handle_shift_on &233f c9 13 CMP #&13 ; NOUN_OFF &2341 f0 0b BEQ &234e ; handle_shift_off &2343 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_shift_on &2346 a9 0e LDA #&0e ; PAGE_ON ; write_character_and_okay &2348 20 ee ff JSR &ffee ; OSWRCH &234b 4c c1 1c JMP &1cc1 ; write_okay ; you_can't_do_that &234e a9 0f LDA #&0f ; PAGE_OFF &2350 18 CLC &2351 90 f5 BCC &2348 ; write_character_and_okay # Always branches ; handle_read &2353 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &2356 b0 2b BCS &2383 ; leave &2358 a0 07 LDY #&07 ; check_if_object_is_readable_loop &235a d9 00 11 CMP &1100,Y ; readable_objects &235d f0 06 BEQ &2365 ; handle_read_readable_object &235f 88 DEY &2360 10 f8 BPL &235a ; check_if_object_is_readable_loop ; to_you_can't_do_that &2362 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_read_readable_object &2365 aa TAX &2366 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2369 b0 f7 BCS &2362 ; to_you_can't_do_that &236b e0 09 CPX #&09 ; OBJECT_PAGE &236d f0 07 BEQ &2376 ; handle_read_page &236f b9 08 11 LDA &1108,Y ; readable_object_string_ids &2372 aa TAX &2373 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_read_page &2376 a2 07 LDX #&07 ; string_207 : "The following telephone numbers are listed: " &2378 8e 30 12 STX &1230 ; page_read # Set to positive to indicate page has been read ; read_page_loop &237b 20 14 1b JSR &1b14 ; write_string_from_table_two &237e e8 INX &237f e0 0d CPX #&0d ; &0c + 1 : string_20c : "Z. Short 531" &2381 90 f8 BCC &237b ; read_page_loop ; leave &2383 60 RTS ; handle_dig &2384 ad 21 12 LDA &1221 ; player_room &2387 c9 0a CMP #&0a ; ROOM_0a ; "a cobbled path" &2389 b0 13 BCS &239e ; the_ground_is_too_hard_for_you_to_dig &238b c9 09 CMP #&09 ; ROOM_09 ; "a cave" &238d 90 14 BCC &23a3 ; you_discover_nothing &238f ae 15 11 LDX &1115 ; object_locations + &05 (OBJECT_LARGE_CHEST) &2392 e0 fc CPX #&fc ; ROOM_HIDDEN &2394 d0 0d BNE &23a3 ; you_discover_nothing &2396 8d 15 11 STA &1115 ; object_locations + &05 (OBJECT_LARGE_CHEST) &2399 a2 02 LDX #&02 ; "You dig up a chest! " &239b 4c 14 1b JMP &1b14 ; write_string_from_table_two ; the_ground_is_too_hard_for_you_to_dig &239e a2 03 LDX #&03 ; "The ground is too hard for you to dig. " &23a0 4c 14 1b JMP &1b14 ; write_string_from_table_two ; you_discover_nothing &23a3 a2 01 LDX #&01 ; "You discover nothing. " &23a5 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_swim &23a8 ad 21 12 LDA &1221 ; player_room &23ab c9 03 CMP #&03 ; ROOM_03 ; "the middle beach" &23ad 90 03 BCC &23b2 ; you_can't_leave &23af 4c 6f 1a JMP &1a6f ; you_can't_do_that ; you_can't_leave &23b2 a2 00 LDX #&00 ; string_200 : "You can't leave! You haven't finished your mission! " &23b4 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_dry &23b7 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &23ba 90 01 BCC &23bd ; handle_dry_object &23bc 60 RTS ; handle_dry_object &23bd c9 00 CMP #&00 ; OBJECT_TOWEL &23bf f0 03 BEQ &23c4 ; handle_dry_towel ; to_you_can't_do_that &23c1 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_dry_towel &23c4 ad 10 11 LDA &1110 ; object_locations + &00 (OBJECT_TOWEL) &23c7 c9 ff CMP #&ff ; ROOM_CARRYING &23c9 d0 f6 BNE &23c1 ; to_you_can't_do_that &23cb ad 2e 12 LDA &122e ; player_is_wet # Positive if player is not wet &23ce 10 f1 BPL &23c1 ; to_you_can't_do_that &23d0 a9 fe LDA #&fe ; ROOM_WEARING &23d2 20 e6 23 JSR &23e6 ; count_objects_in_location_A &23d5 e0 00 CPX #&00 &23d7 f0 05 BEQ &23de ; dry_player &23d9 a2 12 LDX #&12 ; string_212 : "You are still wearing something. " &23db 4c 14 1b JMP &1b14 ; write_string_from_table_two ; dry_player &23de ce 2e 12 DEC &122e ; player_is_wet # Set to positive to indicate player is not wet &23e1 a2 13 LDX #&13 ; string_213 : "You dry yourself completely. " &23e3 4c 14 1b JMP &1b14 ; write_string_from_table_two ; count_objects_in_location_A &23e6 a2 00 LDX #&00 &23e8 a0 00 LDY #&00 ; count_objects_in_location_A_loop &23ea d9 10 11 CMP &1110,Y ; object_locations &23ed f0 06 BEQ &23f5 ; found_object ; consider_next_object &23ef c8 INY &23f0 c0 24 CPY #&24 ; OBJECTS_LAST + 1 &23f2 90 f6 BCC &23ea ; count_objects_in_location_A_loop ; leave &23f4 60 RTS ; found_object &23f5 e8 INX &23f6 4c ef 23 JMP &23ef ; consider_next_object ; handle_dial &23f9 20 a7 1a JSR &1aa7 ; get_noun # Returns carry set if no noun found &23fc b0 f6 BCS &23f4 ; leave &23fe aa TAX &23ff ad 21 12 LDA &1221 ; player_room &2402 c9 19 CMP #&19 ; ROOM_19 ; "the telephone box" &2404 f0 03 BEQ &2409 ; handle_dial_in_telephone_box ; to_you_can't_do_that &2406 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_dial_in_telephone_box &2409 ad 14 11 LDA &1114 ; object_locations + &04 (OBJECT_RECEIVER) &240c c9 ff CMP #&ff ; ROOM_CARRYING &240e f0 05 BEQ &2415 ; handle_dial_while_holding_receiver ; read_the_notice &2410 a2 10 LDX #&10 ; string_210 : "Read the notice! " &2412 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_dial_while_holding_receiver &2415 ad 2f 12 LDA &122f ; coin_state # Negative if telephone doesn't have credit &2418 30 f6 BMI &2410 ; read_the_notice &241a e0 0c CPX #&0c ; NOUN_640 &241c d0 0b BNE &2429 ; wrong_number &241e ce 3f 12 DEC &123f ; telephone_message_played # Set to positive to indicate message has been played &2421 a2 0f LDX #&0f ; string_20f : "A recorded message is played to you: "Hello Rick, this is K. Make your way to Witherton, a small village west of here, and meet your contact by the statue in the park there. He'll be wearing a pink carnation and you must do the same. Good luck"! " ; consume_credit &2423 ee 2f 12 INC &122f ; coin_state # Set to negative to indicate telephone doesn't have credit &2426 4c 14 1b JMP &1b14 ; write_string_from_table_two ; wrong_number &2429 e0 0e CPX #&0e ; NOUN_9 + 1 &242b b0 d9 BCS &2406 ; to_you_can't_do_that &242d a2 0e LDX #&0e ; string_20e : "The 'phone rings for ages, but there is no answer. " &242f 4c 23 24 JMP &2423 ; consume_credit ; handle_press &2432 38 SEC # Set clear to suppress asking for more information &2433 20 a7 1a JSR &1aa7 ; get_noun # Returns carry clear if noun found &2436 90 05 BCC &243d ; handle_press_noun ; nothing_happens &2438 a2 cf LDX #&cf ; string_1cf : "Nothing happens. " &243a 4c 0f 1b JMP &1b0f ; write_string_from_table_one ; handle_press_noun &243d a8 TAY &243e ad 21 12 LDA &1221 ; player_room &2441 c9 a7 CMP #&a7 ; ROOM_a7 ; "a corridor" &2443 f0 3a BEQ &247f ; handle_press_in_room_a7 &2445 a2 05 LDX #&05 ; OBJECT_LARGE_CHEST &2447 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &244a b0 13 BCS &245f ; ; to_you_can't_do_that &244c ad 39 11 LDA &1139 ; object_states + &05 (OBJECT_LARGE_CHEST) &244f d0 0e BNE &245f ; ; to_you_can't_do_that &2451 c0 08 CPY #&08 ; NOUN_7 + 1 &2453 90 0d BCC &2462 ; the_chest_explodes &2455 f0 08 BEQ &245f ; to_you_can't_do_that &2457 c0 0c CPY #&0c ; NOUN_640 &2459 f0 10 BEQ &246b ; handle_press_640 &245b c0 0d CPY #&0d ; NOUN_9 &245d 90 03 BCC &2462 ; the_chest_explodes ; to_you_can't_do_that &245f 4c 6f 1a JMP &1a6f ; you_can't_do_that ; the_chest_explodes &2462 a9 03 LDA #&03 ; PLAYER_DEAD &2464 85 7e STA &7e ; player_state &2466 a2 15 LDX #&15 ; string_215 : "Kaboom! The chest explodes! " &2468 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_press_640 &246b ad 30 12 LDA &1230 ; page_read # Negative if page of numbers has not been read &246e 30 f2 BMI &2462 ; the_chest_explodes &2470 a2 fb LDX #&fb ; ROOM_LOCKED_IN_LARGE_CHEST &2472 a0 ce LDY #&ce ; ROOM_OBJECTS + OBJECT_LARGE_CHEST &2474 20 af 22 JSR &22af ; change_object_locations &2477 ee 39 11 INC &1139 ; object_states + &05 (OBJECT_LARGE_CHEST) &247a a2 16 LDX #&16 ; string_216 : "Click! The chest springs open. " &247c 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_press_in_room_a7 &247f c0 18 CPY #&18 ; NOUN_ATTACON &2481 d0 b5 BNE &2438 ; nothing_happens ; handle_press_attacon &2483 ad ff 11 LDA &11ff ; room_states + &a7 &2486 c9 01 CMP #&01 ; &b4 - &b3 : string_1b4 : "locked" &2488 d0 ae BNE &2438 ; nothing_happens &248a ad 3e 12 LDA &123e ; password_timer # Positive if password hasn't been displayed &248d 10 a9 BPL &2438 ; nothing_happens &248f ee ff 11 INC &11ff ; room_states + &a7 ; &b5 - &b3 : string_1b5 : "closed" &2492 a9 00 LDA #&00 &2494 8d 49 12 STA &1249 ; door_string_ids + &8 # Set to zero to allow door to be opened &2497 4c c1 1c JMP &1cc1 ; write_okay ; get_object_and_noun &249a 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &249d b0 0e BCS &24ad ; leave_with_carry_set &249f 85 8c STA &8c ; object &24a1 a5 83 LDA &83 ; current_word &24a3 85 7c STA &7c ; previous_current_word &24a5 20 a0 1a JSR &1aa0 ; restore_previous_current_word &24a8 20 a7 1a JSR &1aa7 ; get_noun # Returns carry set if no noun found &24ab 90 02 BCC &24af ; found_noun ; leave_with_carry_set &24ad 38 SEC # Leve with carry set to indicate two words not found &24ae 60 RTS ; found_noun &24af 85 8e STA &8e ; noun &24b1 a6 7c LDX &7c ; previous_current_word &24b3 e4 83 CPX &83 ; current_word &24b5 90 02 BCC &24b9 ; leave_with_carry_clear &24b7 86 83 STX &83 ; current_word ; leave_with_carry_clear &24b9 18 CLC # Leave with carry clear to indicate both words found &24ba 60 RTS ; handle_give &24bb 20 9a 24 JSR &249a ; get_object_and_noun # Returns carry clear if object and noun found &24be 90 01 BCC &24c1 ; handle_give_object_noun &24c0 60 RTS ; handle_give_object_noun &24c1 c9 10 CMP #&10 ; NOUN_GUARD &24c3 f0 03 BEQ &24c8 ; handle_give_to_guard ; to_you_can't_do_that &24c5 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_give_to_guard &24c8 ad 21 12 LDA &1221 ; player_room &24cb c9 1a CMP #&1a ; ROOM_1a ; "a road by a guard post" &24cd f0 04 BEQ &24d3 ; handle_give_to_guard_in_room_1a_or_1b &24cf c9 1b CMP #&1b ; ROOM_1b ; "a road by a guard post" &24d1 d0 f2 BNE &24c5 ; to_you_can't_do_that ; handle_give_to_guard_in_room_1a_or_1b &24d3 a6 8c LDX &8c ; object &24d5 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &24d8 b0 eb BCS &24c5 ; to_you_can't_do_that &24da a9 fd LDA #&fd ; ROOM_DESTROYED &24dc 9d 10 11 STA &1110,X ; object_locations &24df e0 0f CPX #&0f ; OBJECT_BEACH_PASS &24e1 f0 03 BEQ &24e6 ; handle_give_beach_pass_to_guard &24e3 4c c1 1c JMP &1cc1 ; write_okay ; handle_give_beach_pass_to_guard &24e6 a2 1f LDX #&1f ; string_21f : ""Okay, okay, get along now", says the guard. " &24e8 ce 31 12 DEC &1231 ; beach_pass_given_to_guard # Set to positive to indicate beach pass given to guard &24eb 4c 14 1b JMP &1b14 ; write_string_from_table_two ; old_open_or_closed_room_state &24ee 00 ; new_open_or_closed_room_state &24ef 00 ; handle_open &24f0 a2 02 LDX #&02 ; DOOR_CLOSED &24f2 a0 03 LDY #&03 ; DOOR_OPEN ; handle_open_or_close &24f4 8c ef 24 STY &24ef ; new_open_or_closed_room_state &24f7 8e ee 24 STX &24ee ; old_open_or_closed_room_state &24fa 38 SEC &24fb 20 a7 1a JSR &1aa7 ; get_noun # Returns carry set if no noun found &24fe 90 03 BCC &2503 ; handle_open_or_close_noun &2500 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_open_or_close_noun &2503 c9 0e CMP #&0e ; NOUN_DOOR &2505 d0 0d BNE &2514 ; to_you_can't_do_that &2507 a0 0d LDY #&0d ; check_if_room_has_door_loop &2509 b9 54 12 LDA &1254,Y ; rooms_with_doors &250c cd 21 12 CMP &1221 ; player_room &250f f0 06 BEQ &2517 ; handle_open_or_close_door &2511 88 DEY &2512 10 f5 BPL &2509 ; check_if_room_has_door_loop ; to_you_can't_do_that &2514 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_open_or_close_door &2517 aa TAX &2518 bd 58 11 LDA &1158,X ; room_states &251b cd ee 24 CMP &24ee ; old_open_or_closed_room_state &251e d0 f4 BNE &2514 ; to_you_can't_do_that &2520 b9 41 12 LDA &1241,Y ; door_string_ids &2523 f0 04 BEQ &2529 ; open_or_close_door &2525 aa TAX &2526 4c 14 1b JMP &1b14 ; write_string_from_table_two ; open_or_close_door &2529 ad ef 24 LDA &24ef ; new_open_or_closed_room_state &252c 9d 58 11 STA &1158,X ; room_states &252f 4c c1 1c JMP &1cc1 ; write_okay ; handle_close &2532 a2 03 LDX #&03 ; DOOR_OPEN &2534 a0 02 LDY #&02 ; DOOR_CLOSED &2536 4c f4 24 JMP &24f4 ; handle_open_or_close ; handle_make &2539 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &253c 90 01 BCC &253f ; handle_make_object ; leave &253e 60 RTS ; handle_make_object &253f c9 11 CMP #&11 ; OBJECT_SNARE &2541 d0 d1 BNE &2514 ; to_you_can't_do_that ; handle_make_snare &2543 ad 23 11 LDA &1123 ; object_locations + &13 (OBJECT_CHEESE_WIRE) &2546 c9 ff CMP #&ff ; ROOM_CARRYING &2548 d0 ca BNE &2514 ; to_you_can't_do_that &254a ad 2f 11 LDA &112f ; object_locations + &1f (OBJECT_GLOVES) &254d c9 fe CMP #&fe ; ROOM_WEARING &254f d0 05 BNE &2556 ; make_snare &2551 a2 3b LDX #&3b ; string_23b : "Your attempts at making a snare are very clumsy and you eventually give up. " &2553 4c 14 1b JMP &1b14 ; write_string_from_table_two ; make_snare &2556 a9 fd LDA #&fd ; ROOM_DESTROYED &2558 8d 23 11 STA &1123 ; object_locations + &13 (OBJECT_CHEESE_WIRE) &255b a9 ff LDA #&ff ; ROOM_CARRYING &255d 8d 21 11 STA &1121 ; object_locations + &11 (OBJECT_SNARE) &2560 4c c1 1c JMP &1cc1 ; write_okay ; handle_empty &2563 20 f3 1a JSR &1af3 ; get_object # Returns carry set if no object found &2566 b0 d6 BCS &253e ; leave &2568 aa TAX &2569 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &256c b0 a6 BCS &2514 ; to_you_can't_do_that &256e 8a TXA &256f 18 CLC &2570 69 c9 ADC #&c9 ; ROOM_OBJECTS &2572 aa TAX &2573 ac 21 12 LDY &1221 ; player_room &2576 20 af 22 JSR &22af ; change_object_locations # Returns carry clear if no objects moved &2579 90 99 BCC &2514 ; to_you_can't_do_that &257b 4c c1 1c JMP &1cc1 ; write_okay ; handle_jump &257e ad 21 12 LDA &1221 ; player_room &2581 c9 57 CMP #&57 ; ROOM_57 ; "a rocky ledge" &2583 f0 07 BEQ &258c ; handle_jump_in_room_57 &2585 c9 c7 CMP #&c7 ; ROOM_c7 ; "a jetty" &2587 f0 11 BEQ &259a ; handle_jump_in_room_c7 &2589 4c 2c 26 JMP &262c ; there's_no_point ; handle_jump_in_room_57 &258c a9 5e LDA #&5e ; ROOM_5e ; "a grassy bank" &258e 8d 21 12 STA &1221 ; player_room ; write_okay_and_look_at_room &2591 20 c1 1c JSR &1cc1 ; write_okay &2594 20 e7 ff JSR &ffe7 ; OSNEWL &2597 4c fa 1c JMP &1cfa ; look_at_room ; handle_jump_in_room_c7 &259a ad 1f 12 LDA &121f ; room_states + &c7 &259d d0 09 BNE &25a8 ; motor_boat_present &259f a2 9a LDX #&9a ; string_19a : "You leap from the jetty into the gaping jaws of a shark! " &25a1 a9 03 LDA #&03 ; PLAYER_KILLED ; set_player_state_and_write_string_from_table_one &25a3 85 7e STA &7e ; player_state &25a5 4c 0f 1b JMP &1b0f ; write_string_from_table_one ; motor_boat_present &25a8 ad 2e 11 LDA &112e ; object_locations + &1e (OBJECT_PLANS) &25ab c9 ff CMP #&ff ; PLAYER_CARRYING &25ad f0 05 BEQ &25b4 ; is_carrying_plans &25af a2 53 LDX #&53 ; string_253 : "You leap into the motor boat. Agent Redhouse looks at you in amazement. "Where are the plans? ! Ahhhh", he shouts and throws you overboard to the sharks! " &25b1 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; is_carrying_plans &25b4 a9 02 LDA #&02 ; PLAYER_WON &25b6 a2 95 LDX #&95 ; string_195 : "You leap from the jetty and land in the motor boat waiting for you! Agent Redhouse throws a hand grenade onto the jetty, slams the boat into gear and roars away as the grenade explodes behind you! " &25b8 18 CLC &25b9 90 e8 BCC &25a3 ; set_player_state_and_write_string_from_table_one # Always branches ; handle_turn &25bb 20 9a 24 JSR &249a ; get_object_and_noun # Returns carry clear if object and noun found &25be 90 01 BCC &25c1 ; handle_turn_object_noun ; leave &25c0 60 RTS ; handle_turn_object_noun &25c1 a6 8c LDX &8c ; object &25c3 e0 18 CPX #&18 ; OBJECT_MINING_HELMET &25c5 f0 03 BEQ &25ca ; handle_turn_mining_helmet_noun ; to_you_can't_do_that &25c7 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_turn_mining_helmet_noun &25ca 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &25cd b0 f8 BCS &25c7 ; to_you_can't_do_that &25cf a6 8e LDX &8e ; noun &25d1 e0 13 CPX #&13 ; NOUN_OFF &25d3 f0 27 BEQ &25fc ; handle_turn_mining_helmet_off &25d5 e0 12 CPX #&12 ; NOUN_ON &25d7 d0 ee BNE &25c7 ; to_you_can't_do_that ; handle_turn_mining_helmet_on &25d9 ad 4c 11 LDA &114c ; object_states + &18 (OBJECT_MINING_HELMET) &25dc c9 00 CMP #&00 ; &59 - &59 : string_159 : "The helmet is made from hard, white plastic and has a lamp set into the front. The lamp is off. " &25de d0 e7 BNE &25c7 ; to_you_can't_do_that &25e0 ad 38 12 LDA &1238 ; lamp_state # Negative if lamp has not been ruined &25e3 30 05 BMI &25ea ; lamp_is_ok &25e5 a2 66 LDX #&66 ; string_066 : "Water from the trough has ruined the lamp. " &25e7 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; lamp_is_ok &25ea ad 26 11 LDA &1126 ; object_locations + &16 (OBJECT_BATTERY) &25ed c9 e1 CMP #&e1 ; ROOM_OBJECTS + OBJECT_MINING_HELMET &25ef f0 05 BEQ &25f6 ; turn_mining_helmet_on &25f1 a2 65 LDX #&65 ; string_065 : "The helmet needs a power source before the lamp can be switched on. " &25f3 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; turn_mining_helmet_on &25f6 ee 4c 11 INC &114c ; object_states + &18 (OBJECT_MINING_HELMET) &25f9 4c c1 1c JMP &1cc1 ; write_okay ; handle_turn_mining_helmet_off &25fc ad 4c 11 LDA &114c ; object_states + &18 (OBJECT_MINING_HELMET) &25ff c9 01 CMP #&01 ; &5a - &59 : string_15a : "The lamp on the helmet is on. " &2601 d0 c4 BNE &25c7 ; to_you_can't_do_that ; turn_mining_helment_off &2603 ce 4c 11 DEC &114c ; object_states + &18 (OBJECT_MINING_HELMET) &2606 4c c1 1c JMP &1cc1 ; write_okay ; handle_climb &2609 20 d7 1a JSR &1ad7 ; get_word_or_ask_for_more_information # Returns carry set if no word found &260c b0 b2 BCS &25c0 ; leave &260e e0 04 CPX #&04 ; WORD_NOUN &2610 f0 0b BEQ &261d ; handle_climb_noun &2612 e0 03 CPX #&03 ; WORD_OBJECT &2614 f0 39 BEQ &264f ; handle_climb_object &2616 e0 01 CPX #&01 ; WORD_DIRECTION &2618 f0 ef BEQ &2609 ; handle_climb &261a 4c a0 1a JMP &1aa0 ; restore_previous_current_word ; handle_climb_noun &261d c9 15 CMP #&15 ; NOUN_TREES &261f f0 10 BEQ &2631 ; handle_climb_trees &2621 c9 16 CMP #&16 ; NOUN_CLIFFS &2623 f0 07 BEQ &262c ; there's_no_point &2625 c9 11 CMP #&11 ; NOUN_TRELLIS &2627 f0 46 BEQ &266f ; handle_climb_trellis ; to_you_can't_do_that &2629 4c 6f 1a JMP &1a6f ; you_can't_do_that ; there's_no_point &262c a2 32 LDX #&32 ; string_232 : "There's no point. " &262e 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_climb_trees &2631 ad 21 12 LDA &1221 ; player_room &2634 c9 6a CMP #&6a ; ROOM_6a ; "a narrow footpath" &2636 f0 11 BEQ &2649 ; handle_climb_trees_in_room_6a &2638 c9 6f CMP #&6f ; ROOM_6f ; "a rough piece of ground" &263a f0 08 BEQ &2644 ; the_nearest_branch_is_out_of_reach &263c c9 48 CMP #&48 ; ROOM_48 ; "some rough ground" &263e 90 ec BCC &262c ; there's_no_point &2640 c9 58 CMP #&58 ; ROOM_58 ; "some rough ground" &2642 b0 e8 BCS &262c ; there's_no_point ; the_nearest_branch_is_out_of_reach &2644 a2 35 LDX #&35 ; "The nearest branch is out of reach. " &2646 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_climb_trees_in_room_6a &2649 ee 21 12 INC &1221 ; player_room &264c 4c 91 25 JMP &2591 ; write_okay_and_look_at_room ; handle_climb_object &264f c9 19 CMP #&19 ; OBJECT_SHEET &2651 d0 d6 BNE &2629 ; to_you_can't_do_that &2653 ad 21 12 LDA &1221 ; player_room &2656 cd 39 12 CMP &1239 ; sheet_tied_room &2659 f0 0e BEQ &2669 ; use_sheet_exit_room &265b cd 3a 12 CMP &123a ; sheet_exit_room &265e d0 c9 BNE &2629 ; to_you_can't_do_that &2660 ad 39 12 LDA &1239 ; sheet_tied_room ; set_player_room_and_look &2663 8d 21 12 STA &1221 ; player_room &2666 4c 91 25 JMP &2591 ; write_okay_and_look_at_room ; use_sheet_exit_room &2669 ad 3a 12 LDA &123a ; sheet_exit_room &266c 4c 63 26 JMP &2663 ; set_player_room_and_look ; handle_climb_trellis &266f ad 21 12 LDA &1221 ; player_room &2672 c9 7f CMP #&7f ; ROOM_7f ; "a courtyard" &2674 f0 0a BEQ &2680 ; climb_trellis &2676 c9 83 CMP #&83 ; ROOM_83 ; "a trellis" &2678 f0 b2 BEQ &262c ; there's_no_point &267a c9 84 CMP #&84 ; ROOM_84 ; "a window ledge" &267c f0 ae BEQ &262c ; there's_no_point &267e d0 a9 BNE &2629 ; to_you_can't_do_that ; climb_trellis &2680 a9 83 LDA #&83 ; ROOM_83 ; "a trellis" &2682 8d 21 12 STA &1221 ; player_room &2685 4c 91 25 JMP &2591 ; write_okay_and_look_at_room ; handle_tie &2688 20 9a 24 JSR &249a ; get_object_and_noun # Returns carry clear if object and noun found &268b 90 01 BCC &268e ; handle_tie_object_noun ; leave &268d 60 RTS ; handle_tie_object_noun &268e c9 15 CMP #&15 ; NOUN_TREES &2690 d0 9a BNE &262c ; there's_no_point &2692 a5 8c LDA &8c ; object &2694 c9 19 CMP #&19 ; OBJECT_SHEET &2696 d0 91 BNE &2629 ; to_you_can't_do_that &2698 ad 29 11 LDA &1129 ; object_locations + &19 (OBJECT_SHEET) &269b c9 ff CMP #&ff ; ROOM_CARRYING &269d d0 8a BNE &2629 ; to_you_can't_do_that &269f a0 03 LDY #&03 ; check_if_sheet_can_be_tied_loop &26a1 b9 e3 26 LDA &26e3,Y ; rooms_where_sheet_can_be_tied &26a4 cd 21 12 CMP &1221 ; player_room &26a7 f0 06 BEQ &26af ; sheet_can_be_tied &26a9 88 DEY &26aa 10 f5 BPL &26a1 ; check_if_sheet_can_be_tied_loop ; to_you_can't_do_that &26ac 4c 6f 1a JMP &1a6f ; you_can't_do_that ; sheet_can_be_tied &26af 8d 39 12 STA &1239 ; sheet_tied_room &26b2 b9 e7 26 LDA &26e7,Y ; rooms_where_sheet_exits &26b5 8d 3a 12 STA &123a ; sheet_exit_room &26b8 a9 fc LDA #&fc ; ROOM_HIDDEN &26ba 8d 29 11 STA &1129 ; object_locations + &19 (OBJECT_SHEET) &26bd a2 36 LDX #&36 ; string_236 : "You tie the sheet to the branch on which you stand. " &26bf 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_untie &26c2 20 f3 1a JSR &1af3 ; get_object # Returns carry set if no object found &26c5 b0 c6 BCS &268d ; leave &26c7 c9 19 CMP #&19 ; OBJECT_SHEET &26c9 d0 e1 BNE &26ac ; to_you_can't_do_that &26cb ad 21 12 LDA &1221 ; player_room &26ce cd 39 12 CMP &1239 ; sheet_tied_room &26d1 d0 d9 BNE &26ac ; to_you_can't_do_that &26d3 a9 ff LDA #&ff ; ROOM_CARRYING &26d5 8d 29 11 STA &1129 ; object_locations + &19 (OBJECT_SHEET) &26d8 8d 39 12 STA &1239 ; sheet_tied_room &26db 8d 3a 12 STA &123a ; sheet_exit_room &26de a2 37 LDX #&37 ; string_237 : "You untie the sheet. " &26e0 4c 14 1b JMP &1b14 ; write_string_from_table_two ; rooms_where_sheet_can_be_tied &26e3 6b ; ROOM_6b ; "the lowest branch" &26e4 6c ; ROOM_6c ; "a branch" &26e5 6d ; ROOM_6d ; "the tree trunk" &26e6 6e ; ROOM_6e ; "the topmost branch" ; rooms_where_sheet_exits &26e7 6a ; ROOM_6a ; "a narrow footpath" &26e8 77 ; ROOM_77 ; "coils of thick barbed wire" &26e9 6b ; ROOM_6b ; "the lowest branch" &26ea 6f ; ROOM_6f ; "a rough piece of ground" ; handle_undo &26eb 20 9a 24 JSR &249a ; get_object_and_noun # Returns carry clear if object and noun found &26ee 90 01 BCC &26f1 ; handle_undo_object_noun &26f0 60 RTS ; handle_undo_object_noun &26f1 c9 14 CMP #&14 ; NOUN_BOLT &26f3 d0 18 BNE &270d ; to_you_can't_do_that &26f5 a5 8c LDA &8c ; object &26f7 c9 15 CMP #&15 ; OBJECT_SPANNER &26f9 d0 12 BNE &270d ; to_you_can't_do_that &26fb ad 25 11 LDA &1125 ; object_locations + &15 (OBJECT_SPANNER) &26fe c9 ff CMP #&ff ; ROOM_CARRYING &2700 d0 0b BNE &270d ; to_you_can't_do_that &2702 ac 21 12 LDY &1221 ; player_room &2705 c0 73 CPY #&73 ; ROOM_73 ; "some dusty ground" &2707 f0 07 BEQ &2710 ; handle_undo_bolt_with_spanner_in_room_73 &2709 c0 7b CPY #&7b ; ROOM_7b ; "a dark tunnel" &270b f0 1f BEQ &272c ; handle_undo_bolt_with_spanner_in_room_7b ; to_you_can't_do_that &270d 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_undo_bolt_with_spanner_in_room_73 &2710 a2 02 LDX #&02 ; handle_undo_bolt_with_spanner_on_door_X &2712 bd 41 12 LDA &1241,X ; door_string_ids &2715 f0 f6 BEQ &270d ; to_you_can't_do_that &2717 b9 58 11 LDA &1158,Y ; room_states &271a c9 02 CMP #&02 &271c d0 ef BNE &270d ; to_you_can't_do_that &271e a9 00 LDA #&00 # Set to zero to allow door to be opened &2720 9d 41 12 STA &1241,X ; door_string_ids &2723 a2 47 LDX #&47 &2725 a0 02 LDY #&02 ; string_247 : "You loosen the bolt with the " &2727 a9 15 LDA #&15 ; OBJECT_SPANNER &2729 4c c3 21 JMP &21c3 ; write_string_and_object_A ; handle_undo_bolt_with_spanner_in_room_7b &272c a2 04 LDX #&04 &272e 18 CLC &272f 90 e1 BCC &2712 ; handle_undo_bolt_with_spanner_on_door_X # Always branches ; dumbwaiter_exits &2731 97 ; ROOM_97 ; "a serving platform" &2732 95 ; ROOM_95 ; "a serving platform" &2733 98 ; ROOM_98 ; "a serving platform" &2734 99 ; ROOM_99 ; "a serving platform" ; check_for_dumbwaiter &2735 20 a7 1a JSR &1aa7 ; get_noun # Returns carry set if no noun found &2738 b0 0c BCS &2746 ; leave &273a c9 17 CMP #&17 ; NOUN_DUMBWAITER &273c d0 19 BNE &2757 ; to_you_can't_do_that &273e ad 21 12 LDA &1221 ; player_room &2741 c9 96 CMP #&96 ; ROOM_96 ; "a dumbwaiter" &2743 d0 12 BNE &2757 ; to_you_can't_do_that &2745 18 CLC # Leave with carry clear if accessible dumbwaiter ; leave &2746 60 RTS ; handle_raise &2747 20 35 27 JSR &2735 ; check_for_dumbwaiter # Returns carry set if not accessible dumbwaiter &274a b0 fa BCS &2746 ; leave &274c ad 40 12 LDA &1240 ; dumbwaiter_state &274f f0 06 BEQ &2757 ; to_you_can't_do_that &2751 ce 40 12 DEC &1240 ; dumbwaiter_state &2754 4c c1 1c JMP &1cc1 ; write_okay ; to_you_can't_do_that &2757 20 6f 1a JSR &1a6f ; you_can't_do_that &275a 38 SEC # Unnecessary code &275b 60 RTS ; handle_lower &275c 20 35 27 JSR &2735 ; check_for_dumbwaiter # Returns carry set if not accessible dumbwaiter &275f b0 e5 BCS &2746 ; leave &2761 ad 40 12 LDA &1240 ; dumbwaiter_state &2764 c9 03 CMP #&03 &2766 f0 ef BEQ &2757 ; to_you_can't_do_that &2768 ee 40 12 INC &1240 ; dumbwaiter_state &276b 4c c1 1c JMP &1cc1 ; write_okay ; handle_stand &276e 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &2771 b0 26 BCS &2799 ; leave &2773 c9 1b CMP #&1b ; OBJECT_SCALES &2775 d0 e0 BNE &2757 ; to_you_can't_do_that &2777 ad 21 12 LDA &1221 ; player_room &277a cd 2b 11 CMP &112b ; object_locations + &1b (OBJECT_SCALES) &277d d0 d8 BNE &2757 ; to_you_can't_do_that &277f 48 PHA &2780 a2 48 LDX #&48 ; string_248 : "You stand on the scales. They emit a high pitched hum as well as informing you of your weight! " &2782 20 14 1b JSR &1b14 ; write_string_from_table_two &2785 68 PLA &2786 c9 ac CMP #&ac ; ROOM_ac ; "a corridor" &2788 d0 0f BNE &2799 ; leave &278a ad 04 12 LDA &1204 ; room_states + &ac &278d c9 01 CMP #&01 &278f d0 08 BNE &2799 ; leave &2791 ee 04 12 INC &1204 ; room_states + &ac ; &b5 - &b3 ; string_1b5 : "closed" &2794 a9 00 LDA #&00 &2796 8d 4b 12 STA &124b ; door_string_ids + &a # Set to zero to allow door to be opened ; leave &2799 60 RTS ; handle_pull &279a 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &279d b0 fa BCS &2799 ; leave &279f aa TAX &27a0 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &27a3 b0 b2 BCS &2757 ; to_you_can't_do_that &27a5 e0 23 CPX #&23 ; OBJECT_LEVER &27a7 f0 03 BEQ &27ac ; handle_pull_lever &27a9 4c 38 24 JMP &2438 ; nothing_happens ; handle_pull_lever &27ac a9 00 LDA #&00 # Set to zero to indicate lever pulled &27ae 8d 4f 12 STA &124f ; lever_state &27b1 4c c1 1c JMP &1cc1 ; write_okay ; handle_attack &27b4 38 SEC &27b5 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &27b8 90 03 BCC &27bd ; handle_attack_object ; to_you_can't_do_that &27ba 4c 6f 1a JMP &1a6f ; you_can't_do_that ; handle_attack_object &27bd 85 8c STA &8c ; object &27bf 20 f3 1a JSR &1af3 ; get_object # Returns carry set if no object found &27c2 b0 d5 BCS &2799 ; leave &27c4 aa TAX &27c5 bd 10 11 LDA &1110,X ; object_locations &27c8 c9 ff CMP #&ff ; ROOM_CARRYING &27ca d0 ee BNE &27ba ; to_you_can't_do_that &27cc e0 11 CPX #&11 ; OBJECT_SNARE &27ce d0 ea BNE &27ba ; to_you_can't_do_that &27d0 a5 8c LDA &8c ; object &27d2 c9 20 CMP #&20 ; OBJECT_PROFESSOR &27d4 d0 e4 BNE &27ba ; to_you_can't_do_that &27d6 ad 30 11 LDA &1130 ; object_locations + &20 (OBJECT_PROFESSOR) &27d9 c9 fc CMP #&fc ; ROOM_HIDDEN &27db d0 dd BNE &27ba ; to_you_can't_do_that &27dd ad 21 12 LDA &1221 ; player_room &27e0 c9 ae CMP #&ae ; ROOM_ae ; "the inner laboratory" &27e2 d0 d6 BNE &27ba ; to_you_can't_do_that &27e4 a2 4e LDX #&4e &27e6 a0 02 LDY #&02 ; string_24e : "You attempt to strangle the professor! " &27e8 20 2b 1b JSR &1b2b ; write_string &27eb ad 2f 11 LDA &112f ; object_locations + &1f (OBJECT_GLOVES) &27ee c9 fe CMP #&fe ; ROOM_WEARING &27f0 f0 0a BEQ &27fc ; is_wearing_gloves &27f2 a2 4b LDX #&4b ; string_24b : "the snare cuts into your hands and in the struggle the professor " &27f4 20 2b 1b JSR &1b2b ; write_string &27f7 a2 4f LDX #&4f ; string_24f : "draws a pistol and fires! " &27f9 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; is_wearing_gloves &27fc a2 4c LDX #&4c ; string_24c : "soon, he slumps to the floor, dead! " &27fe a9 ae LDA #&ae ; ROOM_ae ; "the inner laboratory" &2800 8d 30 11 STA &1130 ; object_locations + &20 (OBJECT_PROFESSOR) &2803 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_flash &2806 20 f3 1a JSR &1af3 ; get_object # Returns carry clear if object found &2809 b0 8e BCS &2799 ; leave &280b c9 18 CMP #&18 ; OBJECT_MINING_HELMET &280d d0 ab BNE &27ba ; to_you_can't_do_that &280f aa TAX &2810 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2813 b0 a5 BCS &27ba ; to_you_can't_do_that &2815 ad 21 12 LDA &1221 ; player_room &2818 c9 b9 CMP #&b9 ; ROOM_b9 ; "a rocky pinnacle" &281a f0 03 BEQ &281f ; handle_flash_mining_helmet_in_room_b9 ; to_there's_no_point &281c 4c 2c 26 JMP &262c ; there's_no_point ; handle_flash_mining_helmet_in_room_b9 &281f ad 1f 12 LDA &121f ; room_states + &c7 &2822 d0 f8 BNE &281c ; to_there's_no_point &2824 ee 1f 12 INC &121f ; room_states + &c7 ; &d4 - &d3 : string_1d4 : ". A motor boat floats on the sea below" &2827 a2 54 LDX #&54 ; string_254 : "You signal the submarine with the lamp on your helmet. " &2829 4c 14 1b JMP &1b14 ; write_string_from_table_two ; update_world_before_action &282c 20 19 1b JSR &1b19 ; end_string_without_punctuation &282f 20 db 2a JSR &2adb ; set_previous_player_room &2832 60 RTS ; update_world_after_action &2833 a9 00 LDA #&00 &2835 85 7e STA &7e ; player_state &2837 20 19 1b JSR &1b19 ; end_string_without_punctuation &283a 20 f9 2a JSR &2af9 ; update_trellis_objects &283d 20 00 2b JSR &2b00 ; check_light_from_mining_helmet &2840 20 e2 2a JSR &2ae2 ; update_chasing_guards &2843 a5 7e LDA &7e ; player_state &2845 c9 03 CMP #&03 ; PLAYER_DEAD &2847 f0 39 BEQ &2882 ; leave &2849 20 7c 2a JSR &2a7c ; update_password_timer &284c 20 f7 29 JSR &29f7 ; update_mining_helmet &284f 20 04 2a JSR &2a04 ; write_if_sheet_present &2852 20 83 28 JSR &2883 ; write_if_player_is_wet &2855 20 a0 28 JSR &28a0 ; update_helicopter &2858 20 90 28 JSR &2890 ; update_coin &285b 20 f4 28 JSR &28f4 ; update_guardpost_guard &285e 20 77 29 JSR &2977 ; update_carnation_man &2861 a5 7e LDA &7e ; player_state &2863 c9 03 CMP #&03 ; PLAYER_DEAD &2865 f0 1b BEQ &2882 ; leave &2867 20 41 29 JSR &2941 ; update_dog &286a a5 7e LDA &7e ; player_state &286c c9 03 CMP #&03 ; PLAYER_DEAD &286e f0 12 BEQ &2882 ; leave &2870 20 a4 29 JSR &29a4 ; update_naked_timer &2873 20 da 29 JSR &29da ; update_boar &2876 20 17 2a JSR &2a17 ; update_bees &2879 20 51 2a JSR &2a51 ; update_trough &287c 20 9b 2a JSR &2a9b ; update_professor &287f 20 c3 2a JSR &2ac3 ; update_fire_door ; leave &2882 60 RTS ; write_if_player_is_wet &2883 ad 2e 12 LDA &122e ; player_is_wet # Positive if player is not wet &2886 10 fa BPL &2882 ; leave &2888 a2 11 LDX #&11 ; string_211: "You are dripping wet. " ; to_write_string_from_table_two &288a 20 e7 ff JSR &ffe7 ; OSNEWL &288d 4c 14 1b JMP &1b14 ; write_string_from_table_two ; update_coin &2890 ad 1a 11 LDA &111a ; object_locations + &0a (OBJECT_COIN) &2893 c9 cc CMP #&cc ; ROOM_OBJECTS + OBJECT_TELEPHONE &2895 d0 eb BNE &2882 ; leave &2897 a9 fd LDA #&fd ; ROOM_DESTROYED &2899 8d 1a 11 STA &111a ; object_locations + &0a (OBJECT_COIN) &289c ce 2f 12 DEC &122f ; coin_state # Set to positive to indicate telephone has credit ; leave &289f 60 RTS ; update_helicopter &28a0 ee 32 12 INC &1232 ; helicopter_state &28a3 ad 21 12 LDA &1221 ; player_room &28a6 c9 09 CMP #&09 ; ROOM_09 ; "a cave" &28a8 f0 f5 BEQ &289f ; leave &28aa c9 0c CMP #&0c ; ROOM_0c ; "the hut" &28ac f0 f1 BEQ &289f ; leave &28ae c9 19 CMP #&19 ; ROOM_19 ; "the telephone box" &28b0 f0 ed BEQ &289f ; leave &28b2 c9 1c CMP #&1c ; ROOM_1c ; "a bend in the road" &28b4 90 0a BCC &28c0 ; write_helicopter_state &28b6 c9 6f CMP #&6f ; ROOM_6f ; "a rough piece of ground" &28b8 90 e5 BCC &289f ; leave &28ba c9 76 CMP #&76 ; ROOM_76 ; "the castle" &28bc 90 12 BCC &28d0 ; consider_deadly_helicopter &28be b0 df BCS &289f ; leave ; write_helicopter_state &28c0 ad 32 12 LDA &1232 ; helicopter_state &28c3 29 07 AND #&07 &28c5 c9 03 CMP #&03 &28c7 b0 d6 BCS &289f ; leave &28c9 18 CLC &28ca 69 18 ADC #&18 ; string_218 : "The sound of a helicopter drifts in from the distance. " &28cc aa TAX &28cd 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; consider_deadly_helicopter &28d0 ad 3d 12 LDA &123d ; helicopter_hostile # Negative if helicopter not hostile &28d3 30 ca BMI &289f ; leave &28d5 20 c0 28 JSR &28c0 ; write_helicopter_state &28d8 e0 19 CPX #&19 ; string_219 : "The helicopter thunders overhead and you feel a rush of cold air from its spinning blades! " &28da d0 c3 BNE &289f ; leave &28dc ee 36 12 INC &1236 ; helicopter_attack_timer &28df ad 36 12 LDA &1236 ; helicopter_attack_timer &28e2 c9 03 CMP #&03 &28e4 d0 05 BNE &28eb ; skip_manhole &28e6 a9 02 LDA #&02 ; &77 - &75 : string_177 : "the dust has been moved by a gust of wind from the helicopter blades revealing a manhole which is closed" &28e8 8d cb 11 STA &11cb ; room_states + &73 ; skip_manhole &28eb c9 04 CMP #&04 &28ed 90 b0 BCC &289f ; leave &28ef a2 44 LDX #&44 ; string_244 : "the helicopter swoops from the sky, guns blazing! You dive too late and blood soon pours from your bullet ridden corpse! " &28f1 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; update_guardpost_guard &28f4 ad 21 12 LDA &1221 ; player_room &28f7 c9 1a CMP #&1a ; ROOM_1a ; "a road by a guard post" &28f9 f0 05 BEQ &2900 ; is_at_guardpost &28fb c9 1b CMP #&1b ; ROOM_1b ; "a road by a guard post" &28fd f0 01 BEQ &2900 ; is_at_guardpost ; leave &28ff 60 RTS ; is_at_guardpost &2900 a0 02 LDY #&02 &2902 a2 1b LDX #&1b ; string_21b : "The guard peers at you suspiciously as she strokes her rocket launcher! " &2904 20 e7 ff JSR &ffe7 ; OSNEWL &2907 20 2b 1b JSR &1b2b ; write_string &290a ad 2e 12 LDA &122e ; player_is_wet # Negative if player is wet &290d 30 24 BMI &2933 ; swimming_is_illegal &290f a2 06 LDX #&06 ; OBJECT_DIVING_SUIT &2911 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2914 90 1d BCC &2933 ; swimming_is_illegal &2916 e8 INX ; OBJECT_FLIPPERS &2917 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &291a 90 17 BCC &2933 ; swimming_is_illegal &291c ad 1c 11 LDA &111c ; object_locations + &0c (OBJECT_OVERALLS) &291f c9 fe CMP #&fe ; ROOM_WEARING &2921 d0 19 BNE &293c ; romping_around_starkers_is_improper &2923 ad 31 12 LDA &1231 ; beach_pass_given_to_guard # Negative if beach pass not given to guard &2926 30 06 BMI &292e ; guard_needs_beach_pass &2928 20 e7 ff JSR &ffe7 ; OSNEWL &292b 4c ff 28 JMP &28ff ; leave ; guard_needs_beach_pass &292e a2 1d LDX #&1d ; string_21d : ""I'll need your Beach Pass to let you through", she says, menacingly! " &2930 4c 14 1b JMP &1b14 ; write_string_from_table_two ; swimming_is_illegal &2933 a2 1c LDX #&1c ; string_21c : ""You've been swimming! That's illegal", she shouts, and ignoring your protestations, fires her rocket launcher at you! " ; kill_player_and_write_string_from_table_two &2935 a9 03 LDA #&03 ; PLAYER_DEAD &2937 85 7e STA &7e ; player_state &2939 4c 14 1b JMP &1b14 ; write_string_from_table_two ; romping_around_starkers_is_improper &293c a2 20 LDX #&20 ; string_220 : "she politely informs you that it is improper for you to "romp around starkers" and shoots you with her rocket launcher! " &293e 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; update_dog &2941 ae 21 12 LDX &1221 ; player_room &2944 e0 20 CPX #&20 ; ROOM_20 ; "a side street" &2946 d0 b7 BNE &28ff ; leave &2948 ad 33 12 LDA &1233 ; dog_state # Positive if dog has taken rabbit &294b 10 b2 BPL &28ff ; leave &294d ad 78 11 LDA &1178 ; room_states + &20 &2950 c9 03 CMP #&03 ; &2b - &28 : string_12b : "a path leads north, through an open gateway, to a pretty cottage" &2952 d0 ab BNE &28ff ; leave &2954 ad 20 11 LDA &1120 ; object_locations + &10 (OBJECT_RABBIT) &2957 cd 21 12 CMP &1221 ; player_room &295a f0 0e BEQ &296a ; rabbit_is_in_room &295c c9 ff CMP #&ff ; ROOM_CARRYING &295e f0 05 BEQ &2965 ; player_is_carrying_rabbit &2960 a2 22 LDX #&22 ; string_222 : "An enormous black dog, wild eyed and drooling, lunges towards you and sinks its glistening teeth into your throat! " &2962 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; player_is_carrying_rabbit &2965 a2 23 LDX #&23 ; string_223 : "A huge dog springs towards the rabbit to feed. Unfortunately, you are still holding it and in the confusion, the wild creature eats quite a lot of you as well! " &2967 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; rabbit_is_in_room &296a a9 fd LDA #&fd ; ROOM_DESTROYED &296c 8d 20 11 STA &1120 ; object_locations + &10 (OBJECT_RABBIT) &296f ce 33 12 DEC &1233 ; dog_state # Set to positive to indicate dog has taken rabbit &2972 a2 24 LDX #&24 ; string_224 : "A ferocious black dog of mammoth proportions charges from the cottage, picks up the rabbit and lumbers off to feed somewhere! " &2974 4c 14 1b JMP &1b14 ; write_string_from_table_two ; update_carnation_man &2977 ad 21 12 LDA &1221 ; player_room &297a c9 3b CMP #&3b ; ROOM_3b ; "a statue" &297c f0 01 BEQ &297f ; is_in_room_3b ; leave &297e 60 RTS ; is_in_room_3b &297f ad 1d 11 LDA &111d ; object_locations + &0d (OBJECT_NEWSPAPER) &2982 c9 fc CMP #&fc ; ROOM_HIDDEN &2984 d0 f8 BNE &297e ; leave &2986 ad 3f 12 LDA &123f ; telephone_message_played # Negative if telephone message has not been played &2989 30 f3 BMI &297e ; leave &298b ad 1e 11 LDA &111e ; object_locations + &0e (OBJECT_CARNATION) &298e c9 fe CMP #&fe ; ROOM_WEARING &2990 f0 08 BEQ &299a ; is_wearing_carnation &2992 ee 1d 11 INC &111d ; object_locations + &0d (OBJECT_NEWSPAPER) &2995 a2 25 LDX #&25 ; string_225 : "A shady looking character wearing a pink carnation peers at you from under the brim of his trilby. He glances at his watch, sighs and leaves the park. " &2997 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; is_wearing_carnation &299a a9 db LDA #&db ; ROOM_OBJECTS + OBJECT_LITTER_BIN &299c 8d 1d 11 STA &111d ; object_locations + &0d (OBJECT_NEWSPAPER) &299f a2 26 LDX #&26 ; string_226 : "A man in a suit adorned with a pink carnation stares at you, sees that you, too, are wearing a pink carnation and touches the brim of his trilby in acknowledgment. He walks over to the bin, disposes of his newspaper and then leaves the park! " &29a1 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; update_naked_timer &29a4 ad 21 12 LDA &1221 ; player_room &29a7 c9 25 CMP #&25 ; ROOM_25 ; "a village street" &29a9 90 27 BCC &29d2 ; leave &29ab c9 31 CMP #&31 ; ROOM_31 ; "a gravel drive" &29ad b0 23 BCS &29d2 ; leave &29af ad 1c 11 LDA &111c ; object_locations + &0c (OBJECT_OVERALLS) &29b2 c9 fe CMP #&fe ; ROOM_WEARING &29b4 f0 1c BEQ &29d2 ; leave &29b6 ee 35 12 INC &1235 ; naked_timer &29b9 ad 35 12 LDA &1235 ; naked_timer &29bc 18 CLC &29bd 69 26 ADC #&26 ; &27 - 1 : string_227 : "A woman peers from an upstairs window and recoils when she sees you naked! " &29bf aa TAX &29c0 20 8a 28 JSR &288a ; to_write_string_from_table_two &29c3 ad 35 12 LDA &1235 ; naked_timer &29c6 c9 03 CMP #&03 ; &29 - &26 : string_229 : ""Right, I warned you", yells the villager, and throws a spanner at you! It narrowly misses and lands with a clank at your feet! " &29c8 f0 09 BEQ &29d3 ; villager_throws_spanner &29ca c9 05 CMP #&05 ; &2b - &26 : string_22b : ""'Ello, 'ello, 'ello! What's all this then? Paradin' nude, scarin' 'umble village folk? We can't 'ave that", says a local Law Enforcement Officer, and promptly kills you! " &29cc d0 04 BNE &29d2 ; leave &29ce a9 03 LDA #&03 ; PLAYER_DEAD &29d0 85 7e STA &7e ; player_state ; leave &29d2 60 RTS ; villager_throws_spanner &29d3 ad 21 12 LDA &1221 ; player_room &29d6 8d 25 11 STA &1125 ; object_locations + &15 (OBJECT_SPANNER) &29d9 60 RTS ; update_boar &29da ad 21 12 LDA &1221 ; player_room &29dd c9 4e CMP #&4e ; ROOM_4e ; "a forest" &29df 90 f1 BCC &29d2 ; leave &29e1 c9 57 CMP #&57 ; ROOM_57 : "a rocky ledge" &29e3 b0 ed BCS &29d2 ; leave &29e5 ce 34 12 DEC &1234 ; boar_timer &29e8 30 05 BMI &29ef ; boar_charges &29ea a2 2c LDX #&2c ; string_22c : "A wild boar charges through the woods towards you, veering at the last moment and disappearing into the undergrowth! " &29ec 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; boar_charges &29ef a2 2d LDX #&2d ; string_22d : "The boar makes its final charge and forces you against the nearest tree! " ; to_kill_player_and_write_string_from_table_two &29f1 20 e7 ff JSR &ffe7 ; OSNEWL &29f4 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; update_mining_helmet &29f7 ad 26 11 LDA &1126 ; object_locations + &16 (OBJECT_BATTERY) &29fa c9 e1 CMP #&e1 ; ROOM_OBJECTS + OBJECT_MINING_HELMET &29fc f0 05 BEQ &2a03 ; leave &29fe a9 00 LDA #&00 ; &59 - &59 : string_159 : "The helmet is made from hard, white plastic and has a lamp set into the front. The lamp is off. " &2a00 8d 4c 11 STA &114c ; object_states + &18 (OBJECT_MINING_HELMET) ; leave &2a03 60 RTS ; write_if_sheet_present &2a04 a2 34 LDX #&34 ; string_234 : "A sheet hangs down from the branch. " &2a06 ad 21 12 LDA &1221 ; player_room &2a09 cd 39 12 CMP &1239 ; sheet_tied_room &2a0c f0 06 BEQ &2a14 ; to_to_write_string_from_table_two &2a0e cd 3a 12 CMP &123a ; sheet_exit_room &2a11 d0 f0 BNE &2a03 ; leave &2a13 ca DEX ; string_233 : "A sheet dangles from the branch above you. " ; to_to_write_string_from_table_two &2a14 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; update_bees &2a17 ad 3d 12 LDA &123d ; helicopter_hostile # Positive if helicopter hostile &2a1a 10 e7 BPL &2a03 ; leave &2a1c ad 37 12 LDA &1237 ; bees_timer &2a1f ae 21 12 LDX &1221 ; player_room &2a22 e0 7c CPX #&7c ; ROOM_7c : "a trough" &2a24 f0 dd BEQ &2a03 ; leave &2a26 e0 6f CPX #&6f ; ROOM_6f ; "a rough piece of ground" &2a28 d0 09 BNE &2a33 ; skip_resetting_bees &2a2a c9 03 CMP #&03 &2a2c 90 05 BCC &2a33 ; skip_resetting_bees &2a2e a9 03 LDA #&03 &2a30 8d 37 12 STA &1237 ; bees_timer ; skip_resetting_bees &2a33 c9 04 CMP #&04 &2a35 b0 cc BCS &2a03 ; leave &2a37 c9 00 CMP #&00 &2a39 f0 0c BEQ &2a47 ; bees_sting_player &2a3b c9 03 CMP #&03 &2a3d f0 0d BEQ &2a4c ; player_disturbs_bees &2a3f a2 42 LDX #&42 ; string_242 : "An angry swarm of bees is following you! " ; decrease_bees_timer_and_write_string_from_table_two &2a41 ce 37 12 DEC &1237 ; bees_timer &2a44 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; bees_sting_player &2a47 a2 43 LDX #&43 ; string_243 : "The swarm surrounds you, stinging you viciously! " &2a49 4c f1 29 JMP &29f1 ; to_kill_player_and_write_string_from_table_two ; player_disturbs_bees &2a4c a2 41 LDX #&41 ; string_241 : "In your descent from the tree you have disturbed a swarm of bees! " &2a4e 4c 41 2a JMP &2a41 ; decrease_bees_timer_and_write_string_from_table_two ; update_trough &2a51 ad 21 12 LDA &1221 ; player_room &2a54 c9 7c CMP #&7c ; ROOM_7c ; "a trough" &2a56 d0 ab BNE &2a03 ; leave &2a58 a9 00 LDA #&00 # Set to positive to indicate helicopter is hostile &2a5a 8d 3d 12 STA &123d ; helicopter_hostile &2a5d a2 18 LDX #&18 ; OBJECT_MINING_HELMET &2a5f 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2a62 b0 03 BCS &2a67 ; skip_ruining_lamp &2a64 8e 38 12 STX &1238 ; lamp_state # Set to positive to indicate lamp ruined ; skip_ruining_lamp &2a67 ad 3c 12 LDA &123c ; trough_timer &2a6a c9 02 CMP #&02 &2a6c d0 04 BNE &2a72 ; not_out_of_breath &2a6e a2 03 LDX #&03 ; PLAYER_DEAD &2a70 86 7e STX &7e ; player_state ; not_out_of_breath &2a72 18 CLC &2a73 69 3c ADC #&3c ; string_23c : "You are holding your breath. " &2a75 aa TAX &2a76 ee 3c 12 INC &123c ; trough_timer &2a79 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; update_password_timer &2a7c ad 21 12 LDA &1221 ; player_room &2a7f c9 a6 CMP #&a6 ; ROOM_a6 ; "an alcove" &2a81 d0 0c BNE &2a8f ; leave &2a83 ad 3e 12 LDA &123e ; password_timer &2a86 f0 08 BEQ &2a90 ; display_password &2a88 c9 ff CMP #&ff # Negative if password has been displayed &2a8a f0 03 BEQ &2a8f ; leave ; decrease_password_timer &2a8c ce 3e 12 DEC &123e ; password_timer ; leave &2a8f 60 RTS ; display_password &2a90 a2 b9 LDX #&b9 ; string_1b9 : "A man arrives and types: "attacon" into the computer. He opens the door and enters, closing the door behind him. " &2a92 20 8c 2a JSR &2a8c ; decrease_password_timer &2a95 20 e7 ff JSR &ffe7 ; OSNEWL &2a98 4c 0f 1b JMP &1b0f ; write_string_from_table_one ; update_professor &2a9b ad 21 12 LDA &1221 ; player_room &2a9e c9 ae CMP #&ae ; ROOM_ae ; "the inner laboratory" &2aa0 d0 ed BNE &2a8f ; leave &2aa2 ad 30 11 LDA &1130 ; object_locations + &20 (OBJECT_PROFESSOR) &2aa5 c9 fc CMP #&fc ; ROOM_HIDDEN &2aa7 d0 e6 BNE &2a8f ; leave &2aa9 a2 49 LDX #&49 ; string_249 : "A professor stands in the room with his back turned. " &2aab 20 8a 28 JSR &288a ; to_write_string_from_table_two &2aae ad 51 12 LDA &1251 ; professor_timer &2ab1 10 04 BPL &2ab7 ; professor_kills_player &2ab3 ce 51 12 DEC &1251 ; professor_timer ; leave &2ab6 60 RTS ; professor_kills_player &2ab7 a2 4a LDX #&4a &2ab9 a0 02 LDY #&02 ; string_24a : "he suddenly faces you, " &2abb 20 2b 1b JSR &1b2b ; write_string &2abe a2 4f LDX #&4f ; string_24f : "draws a pistol and fires! " &2ac0 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; update_fire_door &2ac3 ad 21 12 LDA &1221 ; player_room &2ac6 c9 af CMP #&af ; ROOM_af ; "a fire door" &2ac8 d0 ec BNE &2ab6 ; leave &2aca ad 07 12 LDA &1207 ; room_states + &af &2acd c9 03 CMP #&03 ; &d1 - &ce : string_1d1 : "open" &2acf d0 e5 BNE &2ab6 ; leave &2ad1 ad 4f 12 LDA &124f ; lever_state # Zero if lever has been pulled &2ad4 f0 e0 BEQ &2ab6 ; leave &2ad6 a2 4d LDX #&4d ; string_24d : "An alarm sounds and an electric charge pulses through your body! " &2ad8 4c f1 29 JMP &29f1 ; to_kill_player_and_write_string_from_table_two ; set_previous_player_room &2adb ad 21 12 LDA &1221 ; player_room &2ade 8d 53 12 STA &1253 ; previous_player_room ; leave &2ae1 60 RTS ; update_chasing_guards &2ae2 ad 50 12 LDA &1250 ; guards_chasing # Negative if guards with dogs are not chasing player &2ae5 30 fa BMI &2ae1 ; leave &2ae7 ad 21 12 LDA &1221 ; player_room &2aea cd 53 12 CMP &1253 ; previous_player_room &2aed f0 05 BEQ &2af4 ; the_guards_close_in &2aef a2 51 LDX #&51 ; string_251 : "Guards with ferocious dogs are chasing you! " &2af1 4c 8a 28 JMP &288a ; to_write_string_from_table_two ; the_guards_close_in &2af4 a2 52 LDX #&52 ; string_252 : "The guards close in and set the dogs on you! " &2af6 4c f1 29 JMP &29f1 ; to_kill_player_and_write_string_from_table_two ; update_trellis_objects &2af9 a2 83 LDX #&83 ; ROOM_83 ; "a trellis" &2afb a0 7f LDY #&7f ; ROOM_7f ; "a courtyard" &2afd 4c af 22 JMP &22af ; change_object_locations ; check_light_from_mining_helmet &2b00 a2 18 LDX #&18 ; OBJECT_MINING_HELMET &2b02 20 22 23 JSR &2322 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2b05 b0 da BCS &2ae1 ; leave &2b07 ad 4c 11 LDA &114c ; object_states + &18 (OBJECT_MINING_HELMET) &2b0a c9 01 CMP #&01 ; &5a - &59 : string_15a : "The lamp on the helmet is on. " &2b0c d0 d3 BNE &2ae1 ; leave &2b0e ad 21 12 LDA &1221 ; player_room &2b11 c9 7b CMP #&7b ; ROOM_7b ; "a dark tunnel" &2b13 f0 0d BEQ &2b22 ; check_manhole &2b15 c9 7d CMP #&7d ; ROOM_7d ; "a courtyard" &2b17 90 c8 BCC &2ae1 ; leave &2b19 c9 89 CMP #&89 ; ROOM_89 ; "the entrance step" &2b1b b0 c4 BCS &2ae1 ; leave &2b1d a2 56 LDX #&56 ; string_256 : "A guard sees the light from your helmet and shoots you! " &2b1f 4c f1 29 JMP &29f1 ; to_kill_player_and_write_string_from_table_two ; check_manhole &2b22 ad d3 11 LDA &11d3 ; room_states + &7b &2b25 c9 03 CMP #&03 ; &81 - &7e : string_181 : "the manhole above you is open" &2b27 d0 b8 BNE &2ae1 ; leave &2b29 a2 55 LDX #&55 ; string_255 : "A guard sees your lamp shining through the open manhole and shoots you! " &2b2b 4c f1 29 JMP &29f1 ; to_kill_player_and_write_string_from_table_two ; rooms_with_exit_handlers &2b2e 0e ; ROOM_0e ; "a twisting path" &2b2f 19 ; ROOM_19 ; "the telephone box" &2b30 1a ; ROOM_1a ; "a road by a guard post" &2b31 1b ; ROOM_1b ; "a road by a guard post" &2b32 1e ; ROOM_1e ; "the outskirts of Witherton" &2b33 20 ; ROOM_20 ; "a side street" &2b34 22 ; ROOM_22 ; "the cottage path" &2b35 43 ; ROOM_43 ; "a style which crosses the hedge" &2b36 52 ; ROOM_52 ; "a forest" &2b37 60 ; ROOM_60 ; "a narrow footpath" &2b38 9e ; ROOM_9e ; "a corridor" &2b39 7c ; ROOM_7c : "a trough" &2b3a 73 ; ROOM_73 ; "some dusty ground" &2b3b 78 ; ROOM_78 ; "a dark tunnel" &2b3c 7b ; ROOM_7b ; "a dark tunnel" &2b3d 7d ; ROOM_7d ; "a courtyard" &2b3e 84 ; ROOM_84 ; "a window ledge" &2b3f 8b ; ROOM_8b ; "a disused room" &2b40 96 ; ROOM_96 ; "a dumbwaiter" &2b41 a7 ; ROOM_a7 ; "a corridor" &2b42 a8 ; ROOM_a8 ; "a corridor" &2b43 ac ; ROOM_ac ; "a corridor" &2b44 ad ; ROOM_ad ; "a corridor" &2b45 af ; ROOM_af ; "a fire door" &2b46 b0 ; ROOM_b0 ; "a platform" &2b47 a5 ; ROOM_a5 ; "a corridor" &2b48 b6 ; ROOM_b6 ; "a path" ; room_exit_handler_addresses &2b49 7f 2b ; &2b7f = handle_room_0e_exit &2b4b 96 2b ; &2b96 = handle_room_19_exit &2b4d a6 2b ; &2ba6 = handle_room_1a_exit &2b4f b9 2b ; &2bb9 = handle_room_1b_exit &2b51 c9 2b ; &2bc9 = handle_room_1e_exit &2b53 e8 2b ; &2be8 = handle_room_20_exit &2b55 fb 2b ; &2bfb = handle_room_22_exit &2b57 1e 2c ; &2c1e = handle_room_43_exit &2b59 36 2c ; &2c36 = handle_room_52_exit &2b5b d8 2b ; &2bd8 = handle_room_60_exit &2b5d e0 2b ; &2be0 = handle_room_9e_exit &2b5f 4e 2c ; &2c4e = handle_room_7c_exit &2b61 00 2c ; &2c00 = handle_room_73_exit &2b63 05 2c ; &2c05 = handle_room_78_exit &2b65 05 2c ; &2c05 = handle_room_7b_exit &2b67 00 2c ; &2c00 = handle_room_7d_exit &2b69 0a 2c ; &2c0a = handle_room_84_exit &2b6b 0f 2c ; &2c0f = handle_room_8b_exit &2b6d 70 2c ; &2c70 = handle_room_96_exit &2b6f fb 2b ; &2bfb = handle_room_a7_exit &2b71 e8 2b ; &2be8 = handle_room_a8_exit &2b73 fb 2b ; &2bfb = handle_room_ac_exit &2b75 e8 2b ; &2be8 = handle_room_ad_exit &2b77 19 2c ; &2c19 = handle_room_af_exit &2b79 14 2c ; &2c14 = handle_room_b0_exit &2b7b 7c 2c ; &2c7c = handle_room_a5_exit &2b7d 8f 2c ; &2c8f = handle_room_b6_exit ; handle_room_0e_exit # "a twisting path" &2b7f c0 00 CPY #&00 ; DIRECTION_NORTH &2b81 f0 03 BEQ &2b86 ; check_for_flippers ; to_use_room_exit_Y &2b83 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; check_for_flippers &2b86 ad 17 11 LDA &1117 ; object_locations + &07 (OBJECT_FLIPPERS) &2b89 c9 fe CMP #&fe ; ROOM_WEARING &2b8b d0 f6 BNE &2b83 ; to_use_room_exit_Y &2b8d a9 03 LDA #&03 ; PLAYER_DEAD &2b8f 85 7e STA &7e ; player_state &2b91 a2 14 LDX #&14 ; string_214 : "The cumbersome flippers cause you to trip and you plunge to the beach far below! " &2b93 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_room_19_exit # "the telephone box" &2b96 c0 0b CPY #&0b ; DIRECTION_OUT &2b98 d0 e9 BNE &2b83 ; to_use_room_exit_Y &2b9a ad 14 11 LDA &1114 ; object_locations + &04 (OBJECT_RECEIVER) &2b9d c9 ff CMP #&ff ; ROOM_CARRYING &2b9f d0 e2 BNE &2b83 ; to_use_room_exit_Y &2ba1 a2 0d LDX #&0d ; string_20d : "You're still holding the receiver! " &2ba3 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_room_1a_exit # "a road by a guard post" &2ba6 c0 02 CPY #&02 ; DIRECTION_EAST &2ba8 f0 0a BEQ &2bb4 ; guard_shouts &2baa c0 03 CPY #&03 ; DIRECTION_WEST &2bac d0 d5 BNE &2b83 ; to_use_room_exit_Y &2bae ad 31 12 LDA &1231 ; beach_pass_given_to_guard # Positive if beach pass given to guard &2bb1 10 d0 BPL &2b83 ; to_use_room_exit_Y &2bb3 60 RTS ; guard_shouts &2bb4 a2 1e LDX #&1e ; string_21e : ""Where do you think you're going? I'm talking to you", she shouts. " &2bb6 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_room_1b_exit # "a road by a guard post" &2bb9 c0 02 CPY #&02 ; DIRECTION_EAST &2bbb d0 c6 BNE &2b83 ; to_use_room_exit_Y &2bbd a2 1b LDX #&1b &2bbf a0 02 LDY #&02 ; string_21b : "The guard peers at you suspiciously as she strokes her rocket launcher! " &2bc1 20 2b 1b JSR &1b2b ; write_string &2bc4 a2 1d LDX #&1d ; string_21d : ""I'll need your Beach Pass to let you through", she says, menacingly! " &2bc6 4c 14 1b JMP &1b14 ; write_string_from_table_two ; handle_room_1e_exit # "the outskirts of Witherton" &2bc9 98 TYA &2bca a2 20 LDX #&20 ; ROOM_20 ; "a side street" &2bcc a0 21 LDY #&21 ; string_221 : "The sign says: "Beware of the dog"! " ; update_sign &2bce 8e 12 11 STX &1112 ; object_locations + &02 (OBJECT_SIGN) &2bd1 8c 09 11 STY &1109 ; readable_object_string_ids + 1 &2bd4 a8 TAY ; to_use_room_exit_Y &2bd5 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; handle_room_60_exit # "a narrow footpath" &2bd8 98 TYA &2bd9 a2 61 LDX #&61 ; ROOM_61 ; "a narrow footpath" &2bdb a0 30 LDY #&30 ; string_230 : "Two arrows have been painted on the sign. One points northwest to "Fencraft Mine", the other south to "The Miner's Cabin". " &2bdd 4c ce 2b JMP &2bce ; update_sign ; handle_room_9e_exit # "a corridor" &2be0 98 TYA &2be1 a2 a4 LDX #&a4 ; ROOM_a4 ; "a corridor" &2be3 a0 31 LDY #&31 ; string_231 : "The sign says: "No unauthorised personnel"! " &2be5 4c ce 2b JMP &2bce ; update_sign ; handle_room_20_exit # "a side street" ; handle_room_a8_exit # "a corridor" ; handle_room_ad_exit # "a corridor" &2be8 c0 00 CPY #&00 ; DIRECTION_NORTH ; check_for_closed_door_in_direction &2bea d0 e9 BNE &2bd5 ; to_use_room_exit_Y &2bec ae 21 12 LDX &1221 ; player_room &2bef bd 58 11 LDA &1158,X ; room_states &2bf2 c9 03 CMP #&03 ; DOOR_OPEN &2bf4 f0 df BEQ &2bd5 ; to_use_room_exit_Y &2bf6 a2 2c LDX #&2c ; string_02c : "Ouch! " &2bf8 4c 05 1b JMP &1b05 ; write_string_from_table_zero ; handle_room_22_exit # "the cottage path" ; handle_room_a7_exit # "a corridor" ; handle_room_ac_exit # "a corridor" &2bfb c0 01 CPY #&01 ; DIRECTION_SOUTH &2bfd 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_73_exit # "some dusty ground" ; handle_room_7d_exit # "a courtyard" &2c00 c0 09 CPY #&09 ; DIRECTION_DOWN &2c02 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_78_exit # "a dark tunnel" ; handle_room_7b_exit # "a dark tunnel" &2c05 c0 08 CPY #&08 ; DIRECTION_UP &2c07 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_84_exit # "a window ledge" &2c0a c0 0a CPY #&0a ; DIRECTION_IN &2c0c 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_8b_exit # "a disused room" &2c0f c0 0b CPY #&0b ; DIRECTION_OUT &2c11 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_b0_exit # "a platform" &2c14 c0 02 CPY #&02 ; DIRECTION_EAST &2c16 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_af_exit # "a fire door" &2c19 c0 03 CPY #&03 ; DIRECTION_WEST &2c1b 4c ea 2b JMP &2bea ; check_for_closed_door_in_direction ; handle_room_43_exit # "a style which crosses the hedge" &2c1e ad 21 11 LDA &1121 ; object_locations + &11 (OBJECT_SNARE) &2c21 c9 44 CMP #&44 ; ROOM_44 ; "a field" &2c23 90 0e BCC &2c33 ; to_use_room_exit_Y &2c25 c9 48 CMP #&48 ; ROOM_48 ; "some rough ground" &2c27 b0 0a BCS &2c33 ; to_use_room_exit_Y &2c29 ae 20 11 LDX &1120 ; object_locations + &10 (OBJECT_RABBIT) &2c2c e0 fc CPX #&fc ; ROOM_HIDDEN &2c2e d0 03 BNE &2c33 ; to_use_room_exit_Y &2c30 8d 20 11 STA &1120 ; object_locations + &10 (OBJECT_RABBIT) ; to_use_room_exit_Y &2c33 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; handle_room_52_exit # "a forest" &2c36 c0 05 CPY #&05 ; DIRECTION_NORTHWEST &2c38 d0 f9 BNE &2c33 ; to_use_room_exit_Y &2c3a ad 1d 11 LDA &111d ; object_locations + &0d (OBJECT_NEWSPAPER) &2c3d c9 fc CMP #&fc ; ROOM_HIDDEN &2c3f f0 04 BEQ &2c45 ; set_northwest_exit &2c41 c9 fd CMP #&fd ; ROOM_DESTROYED &2c43 d0 ee BNE &2c33 ; to_use_room_exit_Y ; set_northwest_exit &2c45 ad 21 12 LDA &1221 ; player_room &2c48 8d 27 12 STA &1227 ; room_exits + &5 (DIRECTION_NORTHWEST) &2c4b 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; handle_room_7c_exit # "a trough" &2c4e 98 TYA &2c4f 48 PHA &2c50 a9 00 LDA #&00 # Set to zero to reset air &2c52 8d 3c 12 STA &123c ; trough_timer &2c55 ad 37 12 LDA &1237 ; bees_timer # Negative if bees have gone &2c58 c9 ff CMP #&ff &2c5a f0 05 BEQ &2c61 ; skip_bees &2c5c a2 3f LDX #&3f ; string_23f : "When you leave the trough the swarm has gone. " &2c5e 20 14 1b JSR &1b14 ; write_string_from_table_two ; skip_bees &2c61 a2 40 LDX #&40 ; string_240 : "You settle down for a while to dry out under the hot sun. " &2c63 20 14 1b JSR &1b14 ; write_string_from_table_two &2c66 a9 ff LDA #&ff # Set to negative to indicate bees have gone &2c68 8d 37 12 STA &1237 ; bees_timer &2c6b 68 PLA &2c6c a8 TAY &2c6d 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; handle_room_96_exit # "a dumbwaiter" &2c70 ae 40 12 LDX &1240 ; dumbwaiter_state &2c73 bd 31 27 LDA &2731,X ; dumbwaiter_exits &2c76 8d 2d 12 STA &122d ; rooms_exits + &b (DIRECTION_OUT) ; to_use_room_exit_Y &2c79 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; handle_room_a5_exit # "a corridor" &2c7c ad 2a 11 LDA &112a ; object_locations + &1a (OBJECT_LAB_COAT) &2c7f c9 fe CMP #&fe ; ROOM_WEARING &2c81 d0 07 BNE &2c8a ; a_guard_enters_the_room_and_kills_you &2c83 ad 2c 11 LDA &112c ; object_locations + &1c (OBJECT_MASK) &2c86 c9 fe CMP #&fe ; ROOM_WEARING &2c88 f0 ef BEQ &2c79 ; to_use_room_exit_Y ; a_guard_enters_the_room_and_kills_you &2c8a a2 46 LDX #&46 ; string_247 : "A guard enters the room and seeing that you are not a scientist, kills you! " &2c8c 4c 35 29 JMP &2935 ; kill_player_and_write_string_from_table_two ; handle_room_b6_exit # "a path" &2c8f 98 TYA &2c90 48 PHA &2c91 ad 50 12 LDA &1250 ; guards_chasing # Positive if guards with dogs are chasing player &2c94 10 12 BPL &2ca8 ; to_use_room_exit_Y_after_pla &2c96 ad 1f 12 LDA &121f ; room_states + &c7 &2c99 c9 01 CMP #&01 ; room_states + &c7 ; &d4 - &d3 : string_1d4 : ". A motor boat floats on the sea below" &2c9b d0 0b BNE &2ca8 ; to_use_room_exit_Y_after_pla &2c9d a2 50 LDX #&50 ; string_250 : "A guard has spotted your signal! " &2c9f 8e 50 12 STX &1250 ; guards_chasing # Set to positive to indicate guards chasing player &2ca2 20 14 1b JSR &1b14 ; write_string_from_table_two &2ca5 20 e7 ff JSR &ffe7 ; OSNEWL ; to_use_room_exit_Y_after_pla &2ca8 68 PLA &2ca9 a8 TAY &2caa 4c 0d 1f JMP &1f0d ; use_room_exit_Y ; ADCODE2 ; 002efa 002efa 003006 ; string_table_two ; string_200 &2efa fd 45 fb 8d 3c e7 78 79 f8 45 fb 70 79 3c e1 65 ; "You can't leave! You haven't finished your mission! " &2f0a 85 69 5c 45 5f e8 85 ee 58 f8 db ; string_201 &2f15 fd 45 fb df 85 de 33 fb aa 64 55 f6 db ; "You discover nothing. " ; string_202 &2f22 fd 45 fb 8b e2 fb d4 fb 5d de 69 74 f8 db ; "You dig up a chest! " ; string_203 &2f30 fd 3a 9d 71 e9 5c e4 60 7e ea fb e3 6a 5c 84 5f ; "The ground is too hard for you to dig. " &2f40 45 fb 47 8b e2 f6 db ; string_204 &2f47 fd 3a 8c e2 5a ab f4 ee fa ff fd b8 e4 e8 e8 55 ; "The sign says: "Swimming in the cove is illegal"! " &2f57 fb 48 3a 7a f1 59 e4 60 a3 7f e2 83 ff f8 db ; string_205 &2f66 fd 90 e1 5b 67 de b4 f1 66 f9 65 ee 66 5b 7a 48 ; "Lift receiver, insert coin into slot and dial number. Make call &2f76 65 47 ee 99 5b 3b 8b 83 fb e9 95 dd 66 f6 81 e6 ; then place receiver on telephone. " &2f86 59 de 83 e7 fb 4c 5a eb 87 de 59 67 de b4 79 5f &2f96 4a 6d 7f c5 6f e0 f6 db ; string_206 &2f9e fd f2 e4 4c ed ef 4a 01 fb bd 7f f6 db ; "Witherton 1 mile. " ; string_207 &2fab fd 3a 84 93 ce 55 fb 6d 7f c5 6f 59 e9 95 dd 66 ; "The following telephone numbers are listed: " &2fbb 60 51 fb e7 85 6d df fa db ; string_208 &2fc4 fd dc f6 27 fb 04 03 09 db ; "A. Short 439" ; string_209 &2fcd fd de f6 27 fb 08 07 04 db ; "C. Short 874" ; string_20a &2fd6 fd e3 f6 27 fb 02 06 05 db ; "H. Short 265" ; string_20b &2fdf fd f2 f6 27 fb 06 04 00 db ; "W. Short 640" ; string_20c &2fe8 fd f5 f6 27 fb 05 03 01 db ; "Z. Short 531" ; string_20d &2ff1 fd 45 fc ed 59 ee 6c 93 fb a9 e7 df 55 fb 3a 67 ; "You're still holding the receiver! " &3001 de b4 f1 66 f8 db ; string_20e &3007 fd 3a fc c5 6f 59 ed 55 60 84 5f dc e2 73 f9 d6 ; "The 'phone rings for ages, but there is no answer. " &3017 5b 4c ed 59 e4 60 aa fb 68 b8 66 f6 db ; string_20f &3024 fd 5d 67 de 75 7b 5c e8 73 ab e2 59 e4 60 eb 87 ; "A recorded message is played to you: "Hello Rick, this is K. Make &3034 f4 e0 5c 47 45 fa ff fd 69 93 ea fb fd ed e4 ad ; your way to Witherton, a small village west of here, and meet your &3044 f9 22 e4 60 fd e6 f6 81 e6 59 45 5f 4b fb 47 fd ; contact by the statue in the park there. He'll be wearing a pink &3054 f2 e4 4c ed ef 6f f9 5d 12 f1 a3 87 e2 59 29 fb ; carnation and you must do the same. Good luck"! " &3064 49 e3 66 e0 f9 3b ae e0 5b 45 5f de 6f 88 de 5b &3074 dd 5e 3a 74 6e f0 59 48 3a eb 6a e6 fb 4c 67 f6 &3084 69 fc 93 fb dd 59 c1 6a 55 fb 5d eb 65 e6 fb de &3094 6a 9f 6c 4a 3b 45 fb e8 cd 5b 7d fb 3a ee 92 e0 &30a4 f6 e2 9e 5c e7 f0 ad ff f8 db ; string_210 &30ae fd 67 dc 5c 3a aa 6c de e0 f8 db ; "Read the notice! " ; string_211 &30b9 fd 45 fb 51 fb c9 e4 a7 55 fb c1 ef f6 db ; "You are dripping wet. " ; string_212 &30c7 fd 45 fb 51 fb ee 6c 93 fb c1 6a 55 fb ee a1 e0 ; "You are still wearing something. " &30d7 64 55 f6 db ; string_213 &30db fd 45 fb c9 5e 45 ed 82 e7 e1 fb 7a a4 7f 6d e7 ; "You dry yourself completely. " &30eb f4 f6 db ; string_214 &30ee fd 3a de 95 dd 66 ee a1 59 e1 90 a7 66 60 8d cd ; "The cumbersome flippers cause you to trip and you plunge to the &30fe 59 45 fb 47 c3 e4 eb fb 3b 45 fb cf 8e e2 59 47 ; beach far below! " &310e 3a dd 78 8f fb e1 dc 5f 25 f8 db ; string_215 &3119 fd e6 dc 91 a1 f8 3a de 69 ee 5b b5 eb 99 df 73 ; "Kaboom! The chest explodes! " &3129 f8 db ; string_216 &312b fd de 90 ad f8 3a de 69 ee 5b ee 94 55 60 2e f6 ; "Click! The chest springs open. " &313b db ; string_217 &313c fd 6b ef 66 88 65 e8 6b ef f6 3a fd 70 f4 ed e4 ; "Entertainment. The Hayrick Cinema: "Forest Road End" 15. Times of &314c ad fb fd de 65 e0 81 fa ff fd 84 67 ee 5b fd 36 ; showing: noon, quarter past three and nine o'clock. " &315c fb fd 6b df ff fb 01 05 f6 6c ae 60 49 ee a9 f2 &316c 55 fa aa 6f f9 ac 6a 6d 5f eb c6 5b 64 67 59 3b &317c e9 65 59 ea fc de 99 ad f6 db ; string_218 &3186 fd 3a ee 71 e9 5c 49 5d 69 90 7a eb 6d 5f c9 e4 ; "The sound of a helicopter drifts in from the distance. " &3196 e1 ef 60 48 19 3a 8b 74 68 de e0 f6 db ; string_219 &31a3 fd 3a 69 90 7a eb 6d 5f 64 23 60 33 69 dc 5c 3b ; "The helicopter thunders overhead and you feel a rush of cold air &31b3 45 fb e1 e0 89 fb 5d d2 ca fb 49 7a e7 5c b0 5f ; from its spinning blades! " &31c3 19 72 60 ee eb 65 e9 55 fb dd 87 df 73 f8 db ; string_21a &31d2 fd 3a 69 90 7a eb 6d 5f e3 33 60 84 5f 5d f2 77 ; "The helicopter hovers for a while, then disappears beyond the &31e2 7f f9 4c 5a df 85 dc eb a6 6a 60 c4 f4 6f 5c 3a ; horizon. " &31f2 e3 75 e4 f5 6f f6 db ; string_21b &31f9 fd 3a e2 f0 6a 5c a6 66 60 4f 45 fb ee cd a8 de ; "The guard peers at you suspiciously as she strokes her rocket &3209 e4 57 e7 5e dc 60 ca 59 74 9b e6 e0 60 69 5f 9b ; launcher! " &3219 ad e0 5b 87 8e 8f 66 f8 db ; string_21c &3222 ff fd 45 fc f1 59 c4 e0 5a b8 e4 e8 e8 55 f8 64 ; ""You've been swimming! That's illegal", she shouts, and ignoring &3232 6e fc 60 a3 7f e2 83 ff f9 ca 59 ca 50 ee f9 3b ; your protestations, fires her rocket launcher at you! " &3242 d3 e9 75 55 fb 45 5f 94 ea 6d 74 6e 58 ee f9 e1 &3252 e4 67 60 69 5f 9b ad e0 5b 87 8e de 69 5f 4f 45 &3262 f8 db ; string_21d &3264 ff fd e4 fc 93 fb 86 e0 5c 45 5f fd dd 78 8f fb ; ""I'll need your Beach Pass to let you through", she says, &3274 fd eb c6 60 47 7f 5b 45 fb 64 ed 71 9a ff f9 ca ; menacingly! " &3284 59 ab f4 ee f9 e8 6b b2 55 e7 f4 f8 db ; string_21e &3291 ff fd 10 7d fb 45 fb 64 65 e6 fb 45 fc ed 59 b1 ; ""Where do you think you're going? I'm talking to you", she shouts. &32a1 55 f7 e4 fc 63 ef 83 e6 55 fb 47 45 ff f9 ca 59 ; " &32b1 ca 50 ee f6 db ; string_21f &32b6 ff fd ea e6 da f9 ea e6 da f9 98 5b dc 24 aa f2 ; ""Okay, okay, get along now", says the guard. " &32c6 ff f9 ab f4 60 3a e2 f0 6a df f6 db ; string_220 &32d2 ca 59 97 90 6d e7 5e 65 3e 60 45 fb 1e e4 5b e4 ; "she politely informs you that it is improper for you to "romp &32e2 60 e4 e8 94 ea a6 5f 84 5f 45 fb 47 ff 9b a4 fb ; around starkers" and shoots you with her rocket launcher! " &32f2 6a 71 e9 5c 74 6a e6 66 ee ff fb 3b ca 9e ef 60 &3302 45 fb 18 69 5f 9b ad e0 5b 87 8e 8f 66 f8 db ; string_221 &3311 fd 3a 8c e2 5a ab f4 ee fa ff fd c4 f2 51 fb 49 ; "The sign says: "Beware of the dog"! " &3321 3a 7d e2 ff f8 db ; string_222 &3327 fd dc 5a 6b 75 e8 57 fb dd 87 ad fb 7d e2 f9 f2 ; "An enormous black dog, wild eyed and drooling, lunges towards you &3337 a3 5c e0 f4 e0 5c 3b df 9b ea e7 55 f9 e7 8e 98 ; and sinks its glistening teeth into your throat! " &3347 60 7e f2 6a df 60 45 fb 3b ee 65 e6 60 72 60 e2 &3357 90 74 6b 55 fb 6d e0 64 fb 65 47 45 5f 64 9b 6e &3367 f8 db ; string_223 &3369 fd 5d a5 e2 59 7d e2 fb ee 94 55 60 7e f2 6a df ; "A huge dog springs towards the rabbit to feed. Unfortunately, you &3379 60 3a 7c dd d5 5b 47 e1 e0 9c f6 8e e1 75 ef 8e ; are still holding it and in the confusion, the wild creature eats &3389 dc 6d e7 f4 f9 45 fb 51 fb ee 6c 93 fb a9 e7 df ; quite a lot of you as well! " &3399 55 fb e4 5b 3b 48 3a de 6f e1 cd 58 f9 3a f2 a3 &33a9 5c de 67 6e f0 ed 59 e0 6e 60 ac 72 59 5d 99 5b &33b9 49 45 fb dc 60 f2 89 e7 f8 db ; string_224 &33c3 fd 5d e1 66 ea de e4 57 fb dd 87 ad fb 7d e2 fb ; "A ferocious black dog of mammoth proportions charges from the &33d3 49 81 e8 bc 64 fb 94 ea eb 75 ef 58 60 8f 6a 98 ; cottage, picks up the rabbit and lumbers off to feed somewhere! " &33e3 60 19 3a 7a ef 88 98 f9 a8 ad 60 d4 fb 3a 7c dd &33f3 d5 5b 3b e7 95 dd 66 60 ea e1 e1 fb 47 e1 c7 5c &3403 ee a1 e0 cb 66 e0 f8 db ; string_225 &340b fd 5d ee 70 df 5e 34 55 fb 8f 6a b2 6d 5f c1 6a ; "A shady looking character wearing a pink carnation peers at you &341b 55 fb 5d eb 65 e6 fb de 6a 9f 6c 4a a6 66 60 4f ; from under the brim of his trilby. He glances at his watch, sighs &342b 45 fb 19 23 fb 3a d7 e4 63 49 77 60 c3 a3 dd f4 ; and leaves the park. " &343b f6 e3 59 e2 e7 68 de e0 60 4f 77 60 f2 6e 8f f9 &344b 8c 9a 60 3b e7 78 79 60 3a eb 6a e6 f6 db ; string_226 &3459 fd 5d 81 5a 48 5d ee f0 e4 5b b9 75 86 5c 18 5d ; "A man in a suit adorned with a pink carnation stares at you, sees &3469 eb 65 e6 fb de 6a 9f 6c 4a 74 51 60 4f 45 f9 46 ; that you, too, are wearing a pink carnation and touches the brim &3479 60 1e 45 f9 7e ea f9 51 fb c1 6a 55 fb 5d eb 65 ; of his trilby in acknowledgment. He walks over to the bin, &3489 e6 fb de 6a 9f 6c 4a 3b ef 71 de 69 60 3a d7 e4 ; disposes of his newspaper and then leaves the park! " &3499 63 49 77 60 c3 a3 dd 5e 48 dc ad aa f2 7f df e2 &34a9 e8 6b ef f6 e3 59 f2 83 e6 60 33 fb 47 3a dd 65 &34b9 f9 df 85 97 82 60 49 77 60 86 f2 ee d9 a6 5f 3b &34c9 4c 5a e7 78 79 60 3a eb 6a e6 f8 db ; string_227 &34d5 fd 5d f2 ea 81 5a a6 66 60 19 dc 5a d4 1d 60 2c ; "A woman peers from an upstairs window and recoils when she sees &34e5 ea 62 3b 67 7a a3 60 f2 69 5a ca 59 46 60 45 fb ; you naked! " &34f5 9f e6 9c f8 db ; string_228 &34fa ff fd eb f0 5b ee a1 59 de 99 4c 60 4a c4 e1 75 ; ""Put some clothes on before I cave your head in with a spanner", &350a 59 fd 61 8d f1 59 45 5f 69 dc 5c 48 18 5d ee eb ; shouts an angry looking man from his bedroom window! " &351a 68 e9 66 ff f9 ca 50 60 dc 5a 68 9d 5e 34 55 fb &352a 81 5a 19 77 60 dd 9c 2f fb 2c ce f8 db ; string_229 &3537 ff fd ed e4 56 f9 fd 61 f2 6a 86 5c 45 ff f9 f4 ; ""Right, I warned you", yells the villager, and throws a spanner at &3547 89 e7 60 3a f1 a3 87 e2 66 f9 3b 64 9b f2 60 5d ; you! It narrowly misses and lands with a clank at your feet! " &3557 ee eb 68 86 5f 4f 45 f8 e4 5b e9 6a 9b f2 e7 5e &3567 e8 85 82 60 3b e7 4d 60 18 5d de e7 68 e6 fb 4f &3577 45 5f e1 c7 ef f8 db ; string_22a &357e fd a6 ea cf 59 de 9b f2 5c 3a 0f 60 dc 60 86 f2 ; "People crowd the streets as news of your streak spreads through &358e 60 49 45 5f 74 67 bb fb ee eb 67 b9 60 64 ed 71 ; Witherton! " &359e 9a fb fd f2 e4 4c ed ef 6f f8 db ; string_22b &35a9 ff fc fd 89 99 f9 fc 89 99 f9 fc 89 99 f8 cb 6e ; ""'Ello, 'ello, 'ello! What's all this then? Paradin' nude, scarin' &35b9 fc 60 83 e7 fb 22 4c e9 f7 eb 6a b9 65 fc fb e9 ; 'umble village folk? We can't 'ave that", says a local Law &35c9 f0 7b f9 ee de 6a 65 fc fb fc 95 96 59 f1 a3 87 ; Enforcement Officer, and promptly kills you! " &35d9 e2 59 84 e7 e6 f7 f2 59 8d 3c fc dc f1 59 64 6e &35e9 ff f9 ab f4 60 5d 99 de 83 fb fd 87 62 fd 6b e1 &35f9 75 de a2 6b 5b fd ea e1 e1 e4 de 66 f9 3b 94 a1 &3609 eb ef e7 5e e6 e4 93 60 45 f8 db ; string_22c &3614 fd 5d f2 a3 5c 91 dc 5f 8f 6a 98 60 64 ed 71 9a ; "A wild boar charges through the woods towards you, veering at the &3624 fb 3a 42 60 7e f2 6a df 60 45 f9 79 66 55 fb 4f ; last moment and disappearing into the undergrowth! " &3634 3a 87 ee 5b e8 a1 6b 5b 3b df 85 dc eb a6 6a 55 &3644 fb 65 47 3a 23 e2 9b f2 64 f8 db ; string_22d &364f fd 3a 91 dc 5f 81 e6 e0 60 72 60 e1 65 83 fb 8f ; "The boar makes its final charge and forces you against the nearest &365f 6a e2 59 3b e1 75 de e0 60 45 fb dc e2 dc 65 ee ; tree! " &366f 5b 3a 86 51 ee 5b 40 f8 db ; string_22e &3678 fd 3a 81 eb fb 65 8b 8d 6d 60 5d 31 fb 64 ed 71 ; "The map indicates a path through a mine field! Arrows point south, &3688 9a fb 5d e8 65 59 1a f8 6a 9b f2 60 97 65 5b 16 ; east, southwest, north, north, northeast and east. " &3698 f9 28 f9 16 29 f9 15 f9 15 f9 15 28 fb 3b 28 f6 &36a8 db ; string_22f &36a9 fd 45 fb e1 dc a3 fb 47 23 74 3b 68 f4 64 55 f8 ; "You fail to understand anything! " &36b9 db ; string_230 &36ba fd ef f2 ea fb 6a 9b f2 60 70 f1 59 c4 e0 5a d9 ; "Two arrows have been painted on the sign. One points northwest to &36ca 65 6d 5c 4a 3a 8c e2 e9 f6 6f 59 97 65 ef 60 15 ; "Fencraft Mine", the other south to "The Miner's Cabin". " &36da 29 fb 47 ff fd e1 6b de 7c e1 5b fd e8 65 e0 ff &36ea f9 3a ea 4c 5f 16 fb 47 ff fd 3a fd e8 65 66 fc &36fa 60 fd 8d dd 65 ff f6 db ; string_231 &3702 fd 3a 8c e2 5a ab f4 ee fa ff fd aa fb 8e dc f0 ; "The sign says: "No unauthorised personnel"! " &3712 64 75 e4 82 5c eb 66 ee 6f 86 e7 ff f8 db ; string_232 &3720 fd 4c 67 fc 60 aa fb 97 65 ef f6 db ; "There's no point. " ; string_233 &372c fd 5d ee 69 e0 5b df 68 e2 7f 60 19 3a d7 68 8f ; "A sheet dangles from the branch above you. " &373c fb 26 fb 45 f6 db ; string_234 &3742 fd 5d ee 69 e0 5b e3 68 e2 60 2d fb 19 3a d7 68 ; "A sheet hangs down from the branch. " &3752 8f f6 db ; string_235 &3755 fd 3a 86 51 ee 5b d7 68 8f fb e4 60 50 fb 49 67 ; "The nearest branch is out of reach. " &3765 dc 8f f6 db ; string_236 &3769 fd 45 fb 6c 59 3a ee 69 e0 5b 47 3a d7 68 8f fb ; "You tie the sheet to the branch on which you stand. " &3779 4a 14 45 fb 74 4d f6 db ; string_237 &3781 fd 45 fb 8e 6c 59 3a ee 69 e0 ef f6 db ; "You untie the sheet. " ; string_238 &378e fd e4 5b e4 60 eb 72 8f fb 30 f6 db ; "It is pitch dark. " ; string_239 &379a fd 45 fb 74 95 96 59 48 3a 30 e9 73 60 3b dd 67 ; "You stumble in the darkness and break your neck! " &37aa bb fb 45 5f 86 ad f8 db ; string_23a &37b2 ff fd d5 93 f4 ff f6 db ; ""Billy". " ; string_23b &37ba fd 45 5f 6e 6d a4 ef 60 4f 81 e6 55 fb 5d ee e9 ; "Your attempts at making a snare are very clumsy and you eventually &37ca 51 fb 51 fb f1 66 5e de e7 95 ee 5e 3b 45 fb c8 ; give up. " &37da 6b ef f0 83 e7 5e c2 f1 59 d4 f6 db ; string_23c &37e6 fd 45 fb 51 fb a9 e7 df 55 fb 45 5f dd 67 dc 64 ; "You are holding your breath. " &37f6 f6 db ; string_23d &37f8 fd 45 fb 8d 3c a9 e7 5c 45 5f dd 67 dc 64 fb e8 ; "You can't hold your breath much longer! " &3808 f0 8f fb e7 6f e2 66 f8 db ; string_23e &3811 fd 45 5f e8 50 e3 fb 2e ee f9 e2 f0 e7 eb 55 fb ; "Your mouth opens, gulping for air, but it is too late and you &3821 84 5f b0 ed f9 d6 5b e4 5b e4 60 7e ea fb e7 6e ; slump into the trough. " &3831 59 3b 45 fb ba 95 eb fb 65 47 3a c3 71 9a f6 db ; string_23f &3841 fd f2 69 5a 45 fb e7 78 f1 59 3a c3 71 9a fb 3a ; "When you leave the trough the swarm has gone. " &3851 b8 6a 63 70 60 e2 6f e0 f6 db ; string_240 &385b fd 45 fb 82 ef ef e7 59 2d fb 84 5f 5d f2 77 e7 ; "You settle down for a while to dry out under the hot sun. " &386b 59 47 c9 5e 50 fb 23 fb 3a a9 5b ee 8e f6 db ; string_241 &387a fd 48 45 5f df 73 de 6b 5b 19 3a 40 fb 45 fb 70 ; "In your descent from the tree you have disturbed a swarm of bees! &388a f1 59 8b 74 f0 ed c4 5c 5d b8 6a 63 49 c4 73 f8 ; " &389a db ; string_242 &389b fd dc 5a 68 9d 5e b8 6a 63 49 c4 e0 60 e4 60 84 ; "An angry swarm of bees is following you! " &38ab 93 ce 55 fb 45 f8 db ; string_243 &38b2 fd 3a b8 6a 63 ee f0 ed ed 71 80 60 45 f9 74 55 ; "The swarm surrounds you, stinging you viciously! " &38c2 55 fb 45 fb f1 e4 de e4 57 e7 f4 f8 db ; string_244 &38cf 3a 69 90 7a eb 6d 5f b8 9e eb 60 19 3a ee e6 f4 ; "the helicopter swoops from the sky, guns blazing! You dive too &38df f9 e2 8e 60 dd 87 f5 55 f8 45 fb 8b f1 59 7e ea ; late and blood soon pours from your bullet ridden corpse! " &38ef fb e7 6e 59 3b 96 9e 5c bf 4a eb 53 60 19 45 5f &38ff d6 e7 7f 5b ed e4 df 7b 5a de 75 eb 82 f8 db ; string_245 &390e fd e4 5b e4 60 82 de f0 52 fb dd 5e 5d 13 91 e7 ; "It is secured by a large bolt. " &391e ef f6 db ; string_246 &3921 fd 5d e2 f0 6a 5c 6b ef 66 60 3a 2f fb 3b 46 55 ; "A guard enters the room and seeing that you are not a scientist, &3931 fb 1e 45 fb 51 fb aa 5b 5d ee de e4 6b 6c 74 f9 ; kills you! " &3941 e6 e4 93 60 45 f8 db ; string_247 &3948 fd 45 fb 99 ea 82 5a 3a 91 e7 5b 18 3a db ; "You loosen the bolt with the " ; string_248 &3956 fd 45 fb 74 3b 4a 3a ee de 83 73 f6 4c 5e a2 e4 ; "You stand on the scales. They emit a high pitched hum as well as &3966 5b 5d 77 9a fb eb 72 de 69 5c a5 63 dc 60 f2 89 ; informing you of your weight! " &3976 e7 fb dc 60 65 3e 55 fb 45 fb 49 45 5f f2 b4 56 &3986 f8 db ; string_249 &3988 fd 5d 94 ea e1 73 bf 5f 74 4d 60 48 3a 2f fb 18 ; "A professor stands in the room with his back turned. " &3998 77 60 20 ef f0 ed 86 df f6 db ; string_24a &39a2 e3 59 ee f0 df df 6b e7 5e e1 b2 e0 60 45 f9 db ; "he suddenly faces you, " ; string_24b &39b2 3a ee e9 51 fb de b6 60 65 47 45 5f e3 4d 60 3b ; "the snare cuts into your hands and in the struggle the professor " &39c2 48 3a 74 d2 e2 e2 e7 59 3a 94 ea e1 73 bf 5f db ; string_24c &39d2 bf 6f f9 e3 59 ba 95 eb 60 47 3a 21 f9 df 78 df ; "soon, he slumps to the floor, dead! " &39e2 f8 db ; string_24d &39e4 fd dc 5a 83 6a 63 ee 71 80 60 3b dc 5a e0 7f de ; "An alarm sounds and an electric charge pulses through your body! " &39f4 c3 e4 de fb 8f 6a e2 59 eb f0 e7 82 60 64 ed 71 &3a04 9a fb 45 5f 91 df f4 f8 db ; string_24e &3a0d fd 45 fb 6e 6d a4 5b 47 74 ed 68 e2 e7 59 3a 94 ; "You attempt to strangle the professor! " &3a1d ea e1 73 ee 75 f8 db ; string_24f &3a24 df 7c f2 60 5d a8 74 ea e7 fb 3b e1 e4 67 ee f8 ; "draws a pistol and fires! " &3a34 db ; string_250 &3a35 fd 5d e2 f0 6a 5c 70 60 ee 97 ef 6d 5c 45 5f 8c ; "A guard has spotted your signal! " &3a45 e2 e9 83 f8 db ; string_251 &3a4a fd e2 f0 6a df 60 18 e1 66 ea de e4 57 fb 7d e2 ; "Guards with ferocious dogs are chasing you! " &3a5a 60 51 fb de 70 ee 55 fb 45 f8 db ; string_252 &3a65 fd 3a e2 f0 6a df 60 17 fb 48 3b 82 5b 3a 7d e2 ; "The guards close in and set the dogs on you! " &3a75 60 4a 45 f8 db ; string_253 &3a7a fd 45 fb e7 78 eb fb 65 47 3a bc 7e 5f 91 6e f6 ; "You leap into the motor boat. Agent Redhouse looks at you in &3a8a fd dc e2 6b 5b fd 52 1c fb 34 60 4f 45 fb 48 dc ; amazement. "Where are the plans? ! Ahhhh", he shouts and throws &3a9a 81 f5 a2 6b ef f6 ff fd 10 51 fb 3a cf 68 ee f7 ; you overboard to the sharks! " &3aaa f8 dc e3 e3 e3 e3 ff f9 e3 59 ca 50 60 3b 64 9b &3aba f2 60 45 fb 33 91 6a 5c 47 3a ca 6a e6 ee f8 db ; string_254 &3aca fd 45 fb 8c e2 e9 83 fb 3a ee f0 dd e8 6a 65 59 ; "You signal the submarine with the lamp on your helmet. " &3ada 18 3a 87 a4 fb 4a 45 5f 69 e7 ae ef f6 db ; string_255 &3ae8 fd 5d e2 f0 6a 5c 46 60 45 5f 87 a4 fb ca 65 55 ; "A guard sees your lamp shining through the open manhole and shoots &3af8 fb 64 ed 71 9a fb 3a 2e fb e8 68 a9 e7 59 3b ca ; you! " &3b08 9e ef 60 45 f8 db ; string_256 &3b0e fd 5d e2 f0 6a 5c 46 60 3a 90 56 fb 19 45 5f 69 ; "A guard sees the light from your helmet and shoots you! " &3b1e e7 ae 5b 3b ca 9e ef 60 45 f8 db ; string_table_one ; string_100 &3b29 3a dd 78 8f fb dd 5e 3a ee 78 db ; "the beach by the sea" ; string_101 &3b34 74 4d 55 fb 4a 3a df 92 eb f9 ee 4d 5e dd 78 8f ; "standing on the damp, sandy beach of "Fisherman's Cove". The icy &3b44 fb 49 ff fd e1 85 e3 66 e8 68 fc 60 fd 7a 79 ff ; waters of the sea to the south lap coldly at your feet. " &3b54 f6 3a e4 de 5e f2 6e 66 60 49 3a 82 5d 47 3a 16 &3b64 fb 87 eb fb 7a e7 df e7 5e 4f 45 5f e1 c7 ef f6 &3b74 db ; string_102 &3b75 e1 dc 5f 47 3a 15 f9 28 fb 3b 29 f9 77 9a fb 1b ; "far to the north, east and west, high cliffs cast dark shadows &3b85 60 8d ee 5b 30 fb ee 70 7d f2 60 b2 9b ee 60 3a ; across the sand" &3b95 ee 4d db ; string_103 &3b98 3a bd df df e7 59 dd 78 8f db ; "the middle beach" ; string_104 &3ba2 4a 3a dd 78 8f fb 4f ff fd e1 85 e3 66 e8 68 fc ; "on the beach at "Fisherman's Cove". The rolling sound of the sea &3bb2 60 fd 7a 79 ff f6 3a 9b 93 55 fb ee 71 e9 5c 49 ; is punctuated, now and then, by the call of gulls which soar &3bc2 3a 82 5d e4 60 eb 8e de ef f0 dc 6d df f9 aa 62 ; majestically overhead. " &3bd2 3b 4c e9 f9 dd 5e 3a de 83 e7 fb 49 e2 f0 93 60 &3be2 14 bf dc 5f 81 e5 73 6c de 83 e7 5e 33 69 b9 f6 &3bf2 db ; string_105 &3bf3 45 fb 8d 5a 46 fb 1b 60 48 3a 8b 74 68 de e0 db ; "you can see cliffs in the distance" ; string_106 &3c03 47 3a 29 fb 5d 0e 31 fb 2c 60 72 60 4b fb d4 fb ; "to the west a narrow path winds its way up the cliff" &3c13 3a 1b db ; string_107 &3c16 5d 77 9a f9 ee 69 e0 5f 1b fb 99 a1 60 a1 65 57 ; "a high, sheer cliff looms ominously on your eastern flank" &3c26 e7 5e 4a 45 5f 28 66 5a cc 68 e6 db ; string_108 &3c32 3a a6 dd 96 59 dd 78 8f db ; "the pebble beach" ; string_109 &3c3b 4f 3a 15 66 5a 6b 5c 49 3a dd 78 8f f6 3a ee 3b ; "at the northern end of the beach. The sand is dotted with pebbles, &3c4b e4 60 7d ef 6d 5c 18 a6 dd 96 73 f9 e3 66 e0 f9 ; here, and the sound of the gulls, nesting on the cliff ledges high &3c5b 3b 3a ee 71 e9 5c 49 3a e2 f0 93 ee f9 e9 73 ef ; above you, is very loud. Far to the south the cold, grey sea laps &3c6b 55 fb 4a 3a 1b fb 7f df 98 60 77 9a fb 26 fb 45 ; against the shore. " &3c7b f9 e4 60 f1 66 5e e7 71 df f6 e1 dc 5f 47 3a 16 &3c8b fb 3a 7a e7 df f9 e2 67 5e 82 5d 87 eb 60 dc e2 &3c9b dc 65 ee 5b 3a ee a9 67 f6 db ; string_10a &3ca5 5d f1 66 6c de 83 fb 1b fb ea dd 74 d2 de ef 60 ; "a vertical cliff obstructs your path to the west" &3cb5 45 5f 31 fb 47 3a 29 db ; string_10b &3cbd 5d 3d fb 35 31 fb 39 60 47 3a 15 28 db ; "a wide footpath leads to the northeast" ; string_10c &3cca 47 3a 15 fb e4 60 3a 0e 0a 47 5d 8d 79 db ; "to the north is the narrow entrance to a cave" ; string_10d &3cd8 5d ef f2 e4 74 55 fb 31 db ; "a twisting path" ; string_10e &3ce1 de ed 71 de 69 5c 4a 5d 0e 7f df e2 59 14 2c 60 ; "crouched on a narrow ledge which winds a tortuous pathway up and &3cf1 5d ef 75 ef f0 57 fb 31 4b fb d4 fb 3b 2d fb 3a ; down the cliffside. There are few footholds and loose fragments of &3d01 1b 32 f6 4c ed 59 51 fb e1 e0 62 35 a9 e7 df 60 ; rock are scattered before you" &3d11 3b 99 ea ee 59 e1 7c e2 e8 6b ef 60 49 9b ad fb &3d21 51 fb ee de 6e 6d 52 fb c4 e1 75 59 45 db ; string_10f &3d2f 5d 7a dd dd 7f 5c 31 db ; "a cobbled path" ; string_110 &3d37 f2 83 e6 55 fb dc 24 5d 3d f9 7a dd dd 7f 5c 31 ; "walking along a wide, cobbled path which leads from the cove to a &3d47 fb 14 39 60 19 3a 7a f1 59 47 5d dd 78 8f fb a5 ; beach hut. Smooth, granite walls run either side of you" &3d57 ef f6 a0 9e 64 f9 9d 68 72 59 2a 60 4e fb b4 4c &3d67 5f 32 fb 49 45 db ; string_111 &3d6d 3a 6b 5c 49 3a 31 db ; "the end of the path" ; string_112 &3d74 4f 3a e1 dc 5f 6b 5c 49 3a 7a dd dd 7f 5c 31 f9 ; "at the far end of the cobbled path, standing outside a small, &3d84 74 4d 55 fb 50 32 fb 5d ee 81 93 f9 d7 e4 56 e7 ; brightly painted beach hut which is crudely constructed from &3d94 5e d9 65 6d 5c dd 78 8f fb a5 5b 14 e4 60 de d2 ; wooden planks" &3da4 7b e7 5e de 6f 74 d2 de 6d 5c 19 42 e0 5a cf 68 &3db4 e6 ee db ; string_113 &3db7 3a a5 ef db ; "the hut" ; string_114 &3dbb 65 32 fb 5d ee 81 93 f9 42 e0 5a dd 78 8f fb a5 ; "inside a small, wooden beach hut which is dimly illuminated by the &3dcb 5b 14 e4 60 8b e8 e7 5e e4 93 95 65 dc 6d 5c dd ; sallow light creeping through the doorway" &3ddb 5e 3a ee 83 99 62 90 56 fb de 67 c0 55 fb 64 ed &3deb 71 9a fb 3a 44 4b db ; string_115 &3df2 5d 8d 79 db ; "a cave" ; string_116 &3df6 a5 df df 7f 5c 48 5d 12 8d f1 59 14 70 60 5d 99 ; "huddled in a small cave which has a low, craggy ceiling and rough, &3e06 f2 f9 de 7c e2 e2 5e de e0 a3 55 fb 3b ed 71 9a ; curved walls. The floor is moist, soft and sandy" &3e16 f9 de f0 ed 79 5c 2a ee f6 3a 21 fb e4 60 bc e4 &3e26 74 f9 bf e1 5b 3b ee 4d f4 db ; string_117 &3e30 5d 24 36 db ; "a long road" ; string_118 &3e34 4a 5d 24 7a dc 74 83 fb 36 fb 14 e4 60 3d fb 3b ; "on a long coastal road which is wide and straight and runs for &3e44 74 7c e4 56 fb 3b 4e 60 84 5f ee a1 59 4b fb 65 ; some way into the distance east and west. Far below you, to the &3e54 47 3a 8b 74 68 de 59 28 fb 3b 29 f6 e1 dc 5f 25 ; south, is "Fisherman's Cove"" &3e64 fb 45 f9 47 3a 16 f9 e4 60 ff fd e1 85 e3 66 e8 &3e74 68 fc 60 fd 7a 79 ff db ; string_119 &3e7c 5d eb 6a e6 55 fb eb 87 de e0 db ; "a parking place" ; string_11a &3e87 48 5d eb 6a e6 55 fb eb 87 de 59 4f 3a 28 66 5a ; "in a parking place at the eastern end of the long coastal road. &3e97 6b 5c 49 3a 24 7a dc 74 83 fb 36 f6 e1 dc 5f 25 ; Far below you, the rough sea crashes against the rocks, sending up &3ea7 fb 45 f9 3a ed 71 9a fb 82 5d de 7c ee 69 60 dc ; a mist of white spray. A telephone box is set on the grassy verge &3eb7 e2 dc 65 ee 5b 3a 9b ad ee f9 ee 6b df 55 fb d4 ; close by" &3ec7 fb 5d e8 85 5b 49 cb 72 59 ee eb 7c f4 f6 5d 6d &3ed7 7f c5 6f 59 91 f3 fb e4 60 82 5b 4a 3a e2 7c ee &3ee7 ee 5e f1 66 e2 59 17 fb dd f4 db ; string_11b &3ef2 3a 6d 7f c5 6f 59 91 f3 db ; "the telephone box" ; string_11c &3efb 48 5d ee 81 93 f9 42 e0 5a 6d 7f c5 6f 59 91 f3 ; "in a small, wooden telephone box, brightly lit by a bulb set into &3f0b f9 d7 e4 56 e7 5e 90 5b dd 5e 5d d6 e7 dd fb 82 ; the ceiling. The muffled voice of the sea echoes all around" &3f1b 5b 65 47 3a de e0 a3 55 f6 3a e8 f0 e1 e1 7f 5c &3f2b f1 ea e4 de 59 49 3a 82 5d e0 8f ea e0 60 83 e7 &3f3b fb 6a 71 80 db ; string_11d &3f40 5d 36 fb dd 5e 5d e2 f0 6a 5c 97 74 db ; "a road by a guard post" ; string_11e &3f4d 4a 3a 7a dc 74 83 fb 36 f6 17 fb dd 5e e4 60 5d ; "on the coastal road. Close by is a white, wooden building upon &3f5d f2 77 6d f9 42 e0 5a d6 a3 df 55 fb d4 4a 14 e3 ; which hangs a large, circular sign marked "Halt". A guard stands &3f6d 68 e2 60 5d e7 6a 98 f9 de be de f0 87 5f 8c e2 ; to the " &3f7d 5a e8 6a e6 e0 5c ff fd 70 e7 ef ff f6 5d e2 f0 &3f8d 6a 5c 74 4d 60 47 3a db ; string_11f &3f95 29 db ; "west" ; string_120 &3f97 28 db ; "east" ; string_121 &3f99 5d dd 6b 5c 48 3a 36 db ; "a bend in the road" ; string_122 &3fa1 74 4d 55 fb 4a 5d e7 6f e2 f9 ee 70 93 ea 62 dd ; "standing on a long, shallow bend of the coastal road which arcs &3fb1 6b 5c 49 3a 7a dc 74 83 fb 36 fb 14 6a de 60 ed ; round towards the village of Witherton" &3fc1 71 e9 5c 7e f2 6a df 60 3a f1 a3 87 e2 59 49 fd &3fd1 f2 e4 4c ed ef 6f db ; string_123 &3fd8 3a 50 ee e6 be ef 60 49 fd f2 e4 4c ed ef 6f db ; "the outskirts of Witherton" ; string_124 &3fe8 4a 3a 50 ee e6 be ef 60 49 fd f2 e4 4c ed ef 6f ; "on the outskirts of Witherton, a small, ramshackle village of tiny &3ff8 f9 5d ee 81 93 f9 7c e8 ee 70 ad e7 59 f1 a3 87 ; houses which are linked by a confusing network of twisting, narrow &4008 e2 59 49 ef 65 5e 1c 60 14 51 fb e7 65 e6 e0 5c ; streets" &4018 dd 5e 5d de 6f e1 cd 55 fb 86 ef f2 75 e6 fb 49 &4028 ef f2 e4 74 55 f9 0e 0f ee db ; string_125 &4032 5d f1 a3 87 e2 59 0f db ; "a village street" ; string_126 &403a 48 3a 69 6a 5b 49 fd f2 e4 4c ed ef 6f f6 83 e7 ; "in the heart of Witherton. All around you are small, irregular &404a fb 6a 71 e9 5c 45 fb 51 fb ee 81 93 f9 be 67 e2 ; houses, roughly built from old stone, their slate rooftops sloping &405a f0 87 5f 1c ee f9 ed 71 9a e7 5e d6 a3 5b 19 ea ; steeply to the heavens. Narrow streets make their convoluted way &406a e7 5c 74 6f e0 f9 4c e4 5f ba 6e 59 9b ea e1 7e ; between the houses" &407a eb 60 41 55 fb ee 6d c0 e7 5e 47 3a 69 dc f1 6b &408a ee f6 0e 0f 60 81 e6 59 4c e4 5f de 6f f1 ea e7 &409a f0 6d 5c 4b fb c4 ef c1 e0 5a 3a 1c ee db ; string_127 &40a8 5d 32 fb 0f db ; "a side street" ; string_128 &40ad 74 9b 93 55 fb dc 24 5d 3d fb f1 a3 87 e2 59 32 ; "strolling along a wide village side street. Either side of you, &40bd fb 0f f6 b4 4c 5f 32 fb 49 45 f9 ed e4 ad e0 ef ; rickety wooden fencing stretches into the distance. " &40cd 5e 42 e0 5a e1 6b de 55 fb 74 67 ef de 69 60 65 &40dd 47 3a 8b 74 68 de e0 f6 db ; string_129 &40e6 3a e1 6b de 59 70 60 c4 e0 5a e1 67 ca e7 5e d9 ; "the fence has been freshly painted with a coat of white gloss" &40f6 65 6d 5c 18 5d 7a 4f 49 cb 72 59 e2 99 ee ee db ; string_12a &4106 5d e2 6e 59 39 60 15 fb 47 5d eb 67 ef ef 5e 7a ; "a gate leads north to a pretty cottage. The gate is closed" &4116 ef 88 98 f6 3a e2 6e 59 e4 60 17 df db ; string_12b &4123 5d 31 fb 39 60 15 f9 64 ed 71 9a fb dc 5a 2e fb ; "a path leads north, through an open gateway, to a pretty cottage" &4133 e2 dc 6d 4b f9 47 5d eb 67 ef ef 5e 7a ef 88 98 &4143 db ; string_12c &4144 3a 7a ef 88 e2 59 31 db ; "the cottage path" ; string_12d &414c 4a 5d d9 79 5c 31 4b fb 14 39 60 6a 71 e9 5c 3a ; "on a paved pathway which leads around the pretty cottage. Low, &415c eb 67 ef ef 5e 7a ef 88 98 f6 99 f2 f9 bc ee 60 ; moss covered walls run the length of the path. " &416c de 33 e0 5c 2a 60 4e fb 3a e7 6b e2 64 fb 49 3a &417c 31 f6 db ; string_12e &417f 34 55 fb 33 fb 3a 2a 60 45 fb 8d 5a 46 fb 5d e2 ; "looking over the walls you can see a garden far below" &418f 6a 7b 5a e1 dc 5f 25 db ; string_12f &4197 0d 45 f9 47 3a 16 f9 e4 60 5d 17 5c e2 dc 6d db ; "behind you, to the south, is a closed gate" ; string_130 &41a7 0d 45 f9 47 3a 16 f9 3a e2 6e 59 47 3a 32 fb 0f ; "behind you, to the south, the gate to the side street is open" &41b7 fb e4 60 2e db ; string_131 &41bc 5d e1 99 c1 5f dd 9c db ; "a flower bed" ; string_132 &41c4 74 4d 55 fb 48 5d e7 6f e2 f9 f2 89 e7 fb ef 6b ; "standing in a long, well tended flower bed, wide and free of &41d4 7b 5c e1 99 c1 5f dd 9c f9 3d fb 3b e1 67 59 49 ; weeds. The lawn is behind you" &41e4 c1 9c ee f6 3a 87 f2 5a e4 60 0d 45 db ; string_133 &41f1 5d 87 f2 e9 db ; "a lawn" ; string_134 &41f6 48 3a bd df df e7 59 49 5d e7 6a 98 f9 cc 4f 87 ; "in the middle of a large, flat lawn, carefully mown and surrounded &4206 f2 e9 f9 de 51 e1 f0 93 5e bc f2 5a 3b ee f0 ed ; on all sides by beautifully kept flower beds. Stone steps lead up &4216 ed 71 e9 7b 5c 4a 83 e7 fb 32 60 dd 5e dd 78 f0 ; to the cottage" &4226 6c e1 f0 93 5e e6 c0 5b e1 99 c1 5f dd 9c ee f6 &4236 74 6f 59 37 60 39 fb d4 fb 47 3a 7a ef 88 98 db ; string_135 &4246 ee a1 59 37 ee db ; "some steps" ; string_136 &424c 4a 5d 11 fb 49 a0 9e 64 fb 74 6f 59 37 60 14 33 ; "on a flight of smooth stone steps which overlook the cottage &425c 34 fb 3a 7a ef 88 e2 59 e2 6a df 6b db ; garden" ; string_137 &4269 ee a1 59 ed 71 9a fb 9d 71 80 db ; "some rough ground" ; string_138 &4274 74 4d 55 fb 4a 5d a8 e0 de 59 49 e3 6a df f9 ed ; "standing on a piece of hard, rough ground amidst scattered rubbish &4284 71 9a fb 9d 71 e9 5c 92 e4 df ee 5b ee de 6e 6d ; which rustles and creaks with every gust of wind" &4294 52 fb d2 dd dd 85 e3 fb 14 d2 74 7f 60 3b de 67 &42a4 bb 60 18 c8 66 5e e2 cd 5b 49 2c db ; string_139 &42b0 5d 84 67 74 db ; "a forest" ; string_13a &42b5 f2 83 e6 55 fb 64 ed 71 9a fb 5d 84 67 ee 5b 49 ; "walking through a forest of tall fir trees, dimly illuminated by &42c5 ef 83 e7 fb e1 e4 5f 40 ee f9 8b e8 e7 5e e4 93 ; the sunlight which filters through from above. The shadow cloaked &42d5 95 65 dc 6d 5c dd 5e 3a ee 8e 90 56 fb 14 e1 a3 ; floor is covered with a carpet of brown, decaying pine needles" &42e5 ef 66 60 64 ed 71 9a fb 19 26 f6 3a ee 70 7d 62 &42f5 de 99 bb e0 5c 21 fb e4 60 de 33 e0 5c 18 5d de &4305 6a a6 5b 49 dd 9b f2 e9 f9 7b 8d f4 55 fb eb 65 &4315 59 86 9c e7 73 db ; string_13b &431b 3a 84 67 ee 5b 36 db ; "the forest road" ; string_13c &4322 4a 5d 3d f9 d7 e4 56 e7 5e 90 5b 36 fb 14 ef 7c ; "on a wide, brightly lit road which travels along the south side of &4332 79 e7 60 dc 24 3a 16 fb 32 fb 49 5d 13 eb 65 59 ; a large pine forest" &4342 84 67 74 db ; string_13d &4346 5d de 71 76 ed 5e e7 68 e0 db ; "a country lane" ; string_13e &4350 48 5d eb 78 de e0 e1 f0 e7 fb de 71 76 ed 5e e7 ; "in a peaceful country lane which runs along the outskirts of &4360 68 59 14 4e 60 dc 24 3a 50 ee e6 be ef 60 49 fd ; Witherton. Thick hedges wall you in on either side and the air is &4370 f2 e4 4c ed ef 6f f6 64 e4 ad fb 69 df 98 60 2a ; filled with birdsong" &4380 fb 45 fb 48 4a b4 4c 5f 32 fb 3b 3a b0 5f e4 60 &4390 e1 a3 7f 5c 18 dd be df ee 6f e2 db ; string_13f &439c 5d 74 f4 e7 59 14 de 9b ee 82 60 3a 69 df 98 db ; "a style which crosses the hedge" ; string_140 &43ac 74 7c df df e7 55 fb 5d 74 f0 ed df f4 f9 42 e0 ; "straddling a sturdy, wooden style which crosses the hedge" &43bc 5a 74 f4 e7 59 14 de 9b ee 82 60 3a 69 df 98 db ; string_141 &43cc 5d 1a db ; "a field" ; string_142 &43cf 74 4d 55 fb 48 5d e7 6a 98 f9 e2 7c ee ee 5e 1a ; "standing in a large, grassy field, the edge of which is bounded by &43df f9 3a 9c e2 59 49 14 e4 60 dd 71 e9 7b 5c dd 5e ; a thick hedgerow. The ground is very uneven and the grass has been &43ef 5d 64 e4 ad fb 69 df e2 66 ce f6 3a 9d 71 e9 5c ; cropped short by rabbits" &43ff e4 60 f1 66 5e f0 86 79 5a 3b 3a e2 7c ee 60 70 &440f 60 c4 e0 5a de 9b eb a6 5c 27 fb dd 5e 7c dd dd &441f 72 ee db ; string_143 &4422 5d 9b ad 5e 7f df 98 db ; "a rocky ledge" ; string_144 &442a eb 66 de 69 5c 4a 5d 9b ad 5e 7f df e2 59 14 33 ; "perched on a rocky ledge which overlooks a grassy bank a short &443a 34 60 5d e2 7c ee ee 5e dd 68 e6 fb 5d 27 fb 8b ; distance below" &444a 74 68 de 59 25 db ; string_145 &4450 5d 11 fb 49 37 ee db ; "a flight of steps" ; string_146 &4457 4a 5d 11 fb 49 de 6a 79 df f9 e8 6a 96 59 37 60 ; "on a flight of carved, marble steps which lead from the driveway &4467 14 39 fb 19 3a c9 e4 79 4b fb 47 3a eb 6a e6 db ; to the park" ; string_147 &4477 5d e2 7c 79 e7 fb c9 e4 79 db ; "a gravel drive" ; string_148 &4481 74 4d 55 fb 4a 5d 3d fb c9 e4 79 4b f9 ee f0 ed ; "standing on a wide driveway, surfaced with white gravel, which &4491 e1 b2 e0 5c 18 cb 72 59 e2 7c 79 e7 f9 14 39 60 ; leads from the village to the park. Mature trees lining the drive &44a1 19 3a f1 a3 87 e2 59 47 3a eb 6a e6 f6 e8 6e f0 ; cast a pleasant shade over you and the gravel crunches with your &44b1 ed 59 40 60 e7 65 55 fb 3a c9 e4 f1 59 8d ee 5b ; every footstep" &44c1 5d cf 78 ee 68 5b ee 70 df 59 33 fb 45 fb 3b 3a &44d1 e2 7c 79 e7 fb de 4e de 69 60 18 45 5f c8 66 5e &44e1 35 37 db ; string_149 &44e4 5d d9 79 5c f2 83 e6 4b db ; "a paved walkway" ; string_14a &44ed 4a 5d d9 79 5c f2 83 e6 4b fb 14 4e 60 6a 71 e9 ; "on a paved walkway which runs around Witherton Park and overlooks &44fd 5c fd f2 e4 4c ed ef 4a fd eb 6a e6 fb 3b 33 34 ; the ramshackle village below" &450d 60 3a 7c e8 ee 70 ad e7 59 f1 a3 87 e2 59 25 db ; string_14b &451d 5d 74 6e f0 e0 db ; "a statue" ; string_14c &4523 48 3a de 6b ef 7c e7 fb 51 5d 49 3a eb 6a e6 fb ; "in the central area of the park close to a large statue, &4533 17 fb 47 5d 13 74 6e f0 e0 f9 b5 ac 85 e4 6d e7 ; exquisitely sculpted from pure, white marble. Trimmed hedges block &4543 5e ee de f0 e7 eb 6d 5c 19 eb f0 67 f9 cb 72 59 ; your passage in every direction except back the way you came" &4553 e8 6a dd 7f f6 c3 e4 e8 ae 5c 69 df 98 60 96 ea &4563 ad fb 45 5f eb c6 ab e2 59 48 c8 66 5e 8b 67 de &4573 6c 4a b5 de c0 5b 20 3a 4b fb 45 fb 8d ae db ; string_14d &4582 5d e2 7c ee ee 5e dd 68 e6 db ; "a grassy bank" ; string_14e &458c 74 4d 55 fb 4a 5d e2 7c ee ee 5e dd 68 e6 fb dd ; "standing on a grassy bank beneath a sheer wall of rock too high to &459c 6b 78 64 fb 5d ee 69 e0 5f 2a fb 49 9b ad fb 7e ; climb. Below you, a narrow footpath is visible running beside a &45ac ea fb 77 9a fb 47 de 90 e8 dd f6 25 fb 45 f9 5d ; huge wall" &45bc 0e 35 31 fb e4 60 f1 85 e4 96 59 4e e9 55 fb c4 &45cc 32 fb 5d a5 e2 59 2a db ; string_14f &45d4 5d 0e 35 31 db ; "a narrow footpath" ; string_150 &45d9 f2 4d 66 55 fb dc 24 5d 0e 35 31 f9 3a bf e1 ef ; "wandering along a narrow footpath, the soft, short grass &45e9 f9 27 fb e2 7c ee 60 de f0 ca 58 55 fb 45 5f 35 ; cushioning your footsteps. A massive stone wall, draped with &45f9 37 ee f6 5d 81 ee 8c f1 59 74 6f 59 2a f9 df 7c ; coiled barbed wire, prevents your passage further north. " &4609 a6 5c 18 7a e4 7f 5c dd 6a c4 5c f2 e4 67 f9 eb &4619 67 f1 6b ef 60 45 5f eb c6 ab e2 59 e1 f0 ed 4c &4629 5f 15 f6 db ; string_151 &462d 0d 45 fb e4 60 3a ee 70 93 ea 62 ed 85 59 49 5d ; "behind you is the shallow rise of a grassy bank" &463d e2 7c ee ee 5e dd 68 e6 db ; string_152 &4646 dc 5a 68 de e4 6b 5b ea bb fb 40 fb 74 4d 60 47 ; "an ancient oak tree stands to the east, its branches spreading in &4656 3a 28 f9 72 60 d7 68 de 69 60 ee eb 67 b9 55 fb ; many directions" &4666 48 e8 68 5e 8b 67 de ef 58 ee db ; string_153 &4671 3a 31 fb e1 75 e6 60 6a 71 e9 5c 5d 8c e2 e9 97 ; "the path forks around a signpost" &4681 74 db ; string_154 &4683 dc 5a 33 e2 9b f2 5a ef 43 db ; "an overgrown trail" ; string_155 &468d 4a dc 5a 33 e2 9b f2 5a ef 43 fb 14 4e 60 19 15 ; "on an overgrown trail which runs from north to south. Thick bushes &469d fb 47 16 f6 64 e4 ad fb dd cd 69 60 49 dd 7c e8 ; of brambles and nettles are either side of you" &46ad dd 7f 60 3b 86 ef ef 7f 60 51 fb b4 4c 5f 32 fb &46bd 49 45 db ; string_156 &46c0 3a 6b 5c 49 3a ef 43 db ; "the end of the trail" ; string_157 &46c8 74 4d 55 fb 50 32 fb 5d e8 65 66 fc 60 8d dd 48 ; "standing outside a miner's cabin in a clearing in the undergrowth" &46d8 48 5d de 7f 6a 55 fb 48 3a 23 e2 9b f2 64 db ; string_158 &46e7 5d e8 65 66 fc 60 8d dd 65 db ; "a miner's cabin" ; string_159 &46f1 65 32 fb 3a e8 65 66 fc 60 8d dd 65 f6 dc 5a ea ; "inside the miner's cabin. An old bed has been pushed into the &4701 e7 5c c4 5c 70 60 c4 e0 5a eb cd 69 5c 65 47 3a ; corner of the room" &4711 de 75 86 5f 49 3a 2f db ; string_15a &4719 5d 74 6f 5e 31 db ; "a stony path" ; string_15b &471f 4a 5d 74 6f 5e 31 fb 14 de f0 ed 79 60 19 3a 16 ; "on a stony path which curves from the southeast to the north" &472f 28 fb 47 3a 15 db ; string_15c &4735 3a e8 65 59 6b c3 68 de e0 db ; "the mine entrance" ; string_15d &473f 4f 3a 0a 47 dc 5a ea e7 df f9 df 73 66 6d 5c e8 ; "at the entrance to an old, deserted mine shaft, standing close to &474f 65 59 ee 70 e1 ef f9 74 4d 55 fb 17 fb 47 5d d2 ; a rusty ladder which leads downwards into the ground" &475f 74 5e 87 df 7b 5f 14 39 60 2d f2 6a df 60 65 47 &476f 3a 9d 71 80 db ; string_15e &4774 3a e8 65 59 ee 70 e1 ef db ; "the mine shaft" ; string_15f &477d 74 4d 55 fb 4f 3a 35 fb 49 5d d2 74 5e 87 df 7b ; "standing at the foot of a rusty ladder at the bottom of an old &478d 5f 4f 3a 91 ef 7e 63 49 dc 5a ea e7 5c e8 65 59 ; mine shaft. Light streams in from above revealing a low tunnel, &479d ee 70 e1 ef f6 90 56 fb 74 67 92 60 48 19 26 fb ; just visible amongst the shadows of the north wall" &47ad 67 f1 78 e7 55 fb 5d 99 62 ef 8e 86 e7 f9 e5 cd &47bd 5b f1 85 e4 96 59 92 6f e2 ee 5b 3a ee 70 7d f2 &47cd 60 49 3a 15 fb 2a db ; string_160 &47d4 5d ef 8e 86 e7 db ; "a tunnel" ; string_161 &47da a5 df df 7f 5c 48 5d 99 f2 f9 de 7c a4 e0 5c ef ; "huddled in a low, cramped tunnel, illuminated by the light pouring &47ea 8e 86 e7 f9 e4 93 95 65 dc 6d 5c dd 5e 3a 90 56 ; down the shaft to the south. A rock fall blocks the tunnel to the &47fa fb eb 53 55 fb 2d fb 3a ee 70 e1 5b 47 3a 16 f6 ; north" &480a 5d 9b ad fb e1 83 e7 fb 96 ea ad 60 3a ef 8e 86 &481a e7 fb 47 3a 15 db ; string_162 &4820 45 fb 51 fb eb 67 ee 82 5c 17 fb 47 3a 2a db ; "you are pressed close to the wall" ; string_163 &482f 3a 99 29 fb d7 68 8f db ; "the lowest branch" ; string_164 &4837 eb 66 de 69 5c 4a 3a 99 29 fb d7 68 8f fb 49 3a ; "perched on the lowest branch of the tree" &4847 40 db ; string_165 &4849 5d d7 68 8f db ; "a branch" ; string_166 &484e de e7 55 55 fb 47 5d d7 68 8f fb 14 33 e3 68 e2 ; "clinging to a branch which overhangs the wall. Below you is the &485e 60 3a 2a f6 25 fb 45 fb e4 60 3a 7a e4 7f 5c dd ; coiled barbed wire" &486e 6a c4 5c f2 e4 67 db ; string_167 &4875 3a 40 fb ef 4e e6 db ; "the tree trunk" ; string_168 &487c 74 4d 55 fb 4a 5d 74 f0 ed df 5e d7 68 8f f9 7f ; "standing on a sturdy branch, leaning against the thick trunk of &488c 68 55 fb dc e2 dc 65 ee 5b 3a 64 e4 ad fb ef 4e ; the ancient oak tree" &489c e6 fb 49 3a 68 de e4 6b 5b ea bb fb 40 db ; string_169 &48aa 3a 7e eb bc ee 5b d7 68 8f db ; "the topmost branch" ; string_16a &48b4 dd 83 68 de e0 5c 4a 3a 7e eb bc ee 5b d7 68 8f ; "balanced on the topmost branch of the oak tree which overhangs a &48c4 fb 49 3a ea bb fb 40 fb 14 33 e3 68 e2 60 5d ed ; rough piece of ground to the north of the massive wall. The ground &48d4 71 9a fb a8 e0 de 59 49 9d 71 e9 5c 47 3a 15 fb ; is far below" &48e4 49 3a 81 ee 8c f1 59 2a f6 3a 9d 71 e9 5c e4 60 &48f4 e1 dc 5f 25 db ; string_16b &48f9 5d ed 71 9a fb a8 e0 de 59 49 9d 71 80 db ; "a rough piece of ground" ; string_16c &4907 4a 5d ed 71 9a fb a8 e0 de 59 49 9d 71 80 f9 33 ; "on a rough piece of ground, overgrown with nettles and brambles. &4917 e2 9b f2 5a 18 86 ef ef 7f 60 3b dd 7c e8 96 73 ; In the distance to the north a huge castle rises from a &4927 f6 48 3a 8b 74 68 de 59 47 3a 15 fb 5d a5 e2 59 ; mountaintop, dominating the landscape. The high wall blocks your &4937 8d 74 e7 59 ed e4 82 60 19 5d 0b 7e eb f9 7d e8 ; way south" &4947 65 6e 55 fb 3a e7 4d ee 8d a6 f6 3a 77 9a fb 2a &4957 fb 96 ea ad 60 45 5f 4b fb 16 db ; string_16d &4962 3a 35 fb 49 3a 0b db ; "the foot of the mountain" ; string_16e &4969 4a 5d 3d fb 36 fb 4f 3a 35 fb 49 3a 0b f6 3a 36 ; "on a wide road at the foot of the mountain. The road continues to &4979 fb de 6f ef 65 f0 e0 60 47 3a 15 29 f9 2c 55 fb ; the northwest, winding up the hillside until it meets the cold, &4989 d4 fb 3a 77 93 32 fb 8e 6c e7 fb e4 5b ae e0 ef ; black walls of a castle, looming into the sky" &4999 60 3a 7a e7 df f9 dd 87 ad fb 2a 60 49 5d 8d 74 &49a9 7f f9 99 a1 55 fb 65 47 3a ee e6 f4 db ; string_16f &49b6 ee a1 59 e2 7c ee ba 4d db ; "some grassland" ; string_170 &49bf 48 5d 12 51 5d 49 cc 4f e2 7c ee ba 4d f6 3a e2 ; "in a small area of flat grassland. The grass is yellow and &49cf 7c ee 60 e4 60 f4 89 99 62 3b d7 72 ef 7f f9 c9 ; brittle, dried by the sun which beats down strongly from above. &49df e4 e0 5c dd 5e 3a ee f0 5a 14 c4 6e 60 2d fb 74 ; Close to you is a large water trough" &49ef ed 6f e2 e7 5e 19 26 f6 17 fb 47 45 fb e4 60 5d &49ff 13 f2 dc 6d 5f c3 71 9a db ; string_171 &4a08 5d c3 71 9a db ; "a trough" ; string_172 &4a0d ee f0 dd e8 66 98 5c 48 3a cf 78 ee 68 ef e7 5e ; "submerged in the pleasantly warm water of a zinc plated drinking &4a1d f2 6a 63 f2 dc 6d 5f 49 5d f5 65 de fb eb 87 6d ; trough" &4a2d 5c c9 65 e6 55 fb c3 71 9a db ; string_173 &4a37 92 6f e2 ee 5b 3a 7a a3 60 49 64 e4 ad fb dd 6a ; "amongst the coils of thick barbed wire. The barbs have pierced &4a47 c4 5c f2 e4 67 f6 3a dd 6a dd 60 70 f1 59 a8 66 ; your flesh in many places and your blood drips to the floor below" &4a57 de e0 5c 45 5f cc 73 e3 fb 48 e8 68 5e eb 87 de &4a67 e0 60 3b 45 5f 96 9e 5c c9 e4 eb 60 47 3a 21 fb &4a77 25 db ; string_174 &4a79 ee a1 59 d0 74 5e 9d 71 80 db ; "some dusty ground" ; string_175 &4a83 74 4d 55 fb 4a 5d cc 6e f9 6a e4 5c eb 87 65 f9 ; "standing on a flat, arid plain, baked by the hot sun which blazes &4a93 dd bb e0 5c dd 5e 3a a9 5b ee f0 5a 14 dd 87 f5 ; in the cloudless sky above. " &4aa3 e0 60 48 3a de e7 71 df 38 fb ee e6 5e 26 f6 db ; string_176 &4ab3 5d 64 e4 ad fb 87 f4 e0 5f 49 df cd 5b de 33 60 ; "a thick layer of dust covers the ground" &4ac3 3a 9d 71 80 db ; string_177 &4ac8 3a df cd 5b 70 60 c4 e0 5a bc 79 5c dd 5e 5d e2 ; "the dust has been moved by a gust of wind from the helicopter &4ad8 cd 5b 49 2c fb 19 3a 69 90 7a eb 6d 5f dd 87 7b ; blades revealing a manhole which is closed" &4ae8 60 67 f1 78 e7 55 fb 5d e8 68 a9 e7 59 14 e4 60 &4af8 17 df db ; string_178 &4afb dc 5a 2e fb e8 68 a9 7f f9 ee f0 ed ed 71 e9 7b ; "an open manhole, surrounded by piles of dust, lies before you" &4b0b 5c dd 5e a8 7f 60 49 d0 74 f9 90 e0 60 c4 e1 75 &4b1b 59 45 db ; string_179 &4b1e 5d 3d fb 36 db ; "a wide road" ; string_17a &4b23 4a 5d 3d fb 36 fb 14 2c 60 d4 fb 3a 0b 32 fb 47 ; "on a wide road which winds up the mountainside to the castle" &4b33 3a 8d 74 7f db ; string_17b &4b38 3a 8d 74 7f db ; "the castle" ; string_17c &4b3d 4f 3a 0a e2 6e 59 47 3a 8d 74 7f f6 4c ed 59 e4 ; "at the entrance gate to the castle. There is a shout from above &4b4d 60 5d ca 50 fb 19 26 fb 3b c4 e1 75 59 45 fb 8d ; and before you can look up a bullet tears into your chest, sending &4b5d 5a 34 fb d4 fb 5d d6 e7 7f 5b 6d 6a 60 65 47 45 ; you sprawling to the floor" &4b6d 5f de 69 74 f9 ee 6b df 55 fb 45 fb ee eb 7c f2 &4b7d e7 55 fb 47 3a 21 db ; string_17d &4b84 5d 30 fb ef 8e 86 e7 db ; "a dark tunnel" ; string_17e &4b8c de 7c f2 e7 55 fb 64 ed 71 9a fb 5d 99 f2 f9 de ; "crawling through a low, cylindrical tunnel: damp, narrow and &4b9c f4 e7 65 c9 e4 de 83 fb ef 8e 86 e7 fa df 92 eb ; uncomfortable! The walls are coated with slime and small, stagnant &4bac f9 0e 3b 8e 7a e8 e1 75 88 dd 7f f8 3a 2a 60 51 ; pools cover much of the floor. " &4bbc fb 7a dc 6d 5c 18 ee 90 e8 59 3b ee 81 93 f9 74 &4bcc dc e2 e9 68 5b 97 ea e7 60 de 33 fb e8 f0 8f fb &4bdc 49 3a 21 f6 db ; string_17f &4be1 5d 8c ad 6b 55 fb 74 6b 8f fb eb 66 f1 dc 7b 60 ; "a sickening stench pervades the atmosphere" &4bf1 3a 6e bc ee c5 66 e0 db ; string_180 &4bf9 4c ed 59 e4 60 5d 17 5c e8 68 a9 e7 59 26 fb 45 ; "there is a closed manhole above you" &4c09 db ; string_181 &4c0a 3a e8 68 a9 e7 59 26 fb 45 fb e4 60 2e db ; "the manhole above you is open" ; string_182 &4c18 5d de 53 af 6a df db ; "a courtyard" ; string_183 &4c1f 48 3a f1 dc 74 f9 67 de ef 68 e2 f0 87 5f de 53 ; "in the vast, rectangular courtyard of the castle. The floor is &4c2f af 6a 5c 49 3a 8d 74 7f f6 3a 21 fb e4 60 d9 79 ; paved with stone slabs and high walls rear up on all sides. " &4c3f 5c 18 74 6f 59 ee 87 dd 60 3b 77 9a fb 2a 60 67 &4c4f dc 5f d4 fb 4a 83 e7 fb 32 ee f6 db ; string_184 &4c5b f0 e2 e7 5e e2 6a b1 f4 e7 59 69 b9 60 e5 f0 5b ; "ugly gargoyle heads jut from the walls" &4c6b 19 3a 2a ee db ; string_185 &4c70 5d 17 5c e8 68 a9 e7 59 e4 60 82 5b 65 47 3a 21 ; "a closed manhole is set into the floor" &4c80 db ; string_186 &4c81 dc 5a 2e fb e8 68 a9 e7 59 39 60 2d fb 65 47 3a ; "an open manhole leads down into the floor" &4c91 21 db ; string_187 &4c93 5d 11 fb 49 1d 60 39 60 d4 fb 47 3a 81 48 6b c3 ; "a flight of stairs leads up to the main entrance" &4ca3 68 de e0 db ; string_188 &4ca7 5d 74 ed 6f e2 fb ef 67 e7 90 60 e4 60 e1 e4 f3 ; "a strong trellis is fixed to a wall close by" &4cb7 e0 5c 47 5d 2a fb 17 fb dd f4 db ; string_189 &4cc2 dc 5a 83 7a 79 db ; "an alcove" ; string_18a &4cc8 a5 df df 7f 5c 48 3a ee 70 7d f2 5e 67 de 73 60 ; "huddled in the shadowy recess of a small alcove in the castle" &4cd8 49 5d 12 83 7a f1 59 48 3a 8d 74 7f db ; string_18b &4ce5 5d 11 fb 49 1d ee db ; "a flight of stairs" ; string_18c &4cec c4 ef c1 e0 5a ef f2 ea fb 82 ef 60 49 be 4a 43 ; "between two sets of iron railings on a short flight of stone &4cfc 55 60 4a 5d 27 fb 11 fb 49 74 6f 59 1d ee db ; stairs" ; string_18d &4d0b 3a 0a 37 db ; "the entrance step" ; string_18e &4d0f 74 4d 55 fb 4a 3a 0a 37 fb 49 3a 8d 74 7f db ; "standing on the entrance step of the castle" ; string_18f &4d1e 3a 0a 70 93 db ; "the entrance hall" ; string_190 &4d23 48 3a 6b 75 e8 57 fb 0a 70 93 fb 49 3a 8d 74 7f ; "in the enormous entrance hall of the castle. There is a shout and &4d33 f6 4c ed 59 e4 60 5d ca 50 fb 3b e2 f0 6a df 60 ; guards rush in from all directions, firing automatic weapons" &4d43 d2 ca fb 48 19 83 e7 fb 8b 67 de ef 58 ee f9 e1 &4d53 be 55 fb dc f0 7e 81 6c de fb f2 78 eb 6f ee db ; string_191 &4d63 5d ef 67 93 85 db ; "a trellis" ; string_192 &4d69 77 df 7b 5a 92 6f e2 ee 5b 84 90 dc 98 f9 de e7 ; "hidden amongst foliage, clinging to a sturdy piece of trellis &4d79 55 55 fb 47 5d 74 f0 ed df 5e a8 e0 de 59 49 ef ; which is attached to the west wall of the courtyard" &4d89 67 e7 90 60 14 e4 60 6e 88 de 69 5c 47 3a 29 fb &4d99 2a fb 49 3a de 53 af 6a df db ; string_193 &4da3 5d 2c ea 62 7f df 98 db ; "a window ledge" ; string_194 &4dab 4a 5d 0e 2c ea 62 7f df 98 f9 77 9a fb 26 fb 3a ; "on a narrow window ledge, high above the courtyard. Before you is &4dbb de 53 af 6a df f6 c4 e1 75 59 45 fb e4 60 5d e1 ; a filthy window which is " &4dcb a3 64 5e 2c ea 62 14 e4 60 db ; string_195 &4dd5 fd 45 fb e7 78 eb fb 19 3a e5 e0 ef ef 5e 3b e7 ; "You leap from the jetty and land in the motor boat waiting for &4de5 3b 48 3a bc 7e 5f 91 4f f2 dc 72 55 fb 84 5f 45 ; you! Agent Redhouse throws a hand grenade onto the jetty, slams &4df5 f8 dc e2 6b 5b fd 52 1c fb 64 9b f2 60 5d e3 3b ; the boat into gear and roars away as the grenade explodes behind &4e05 e2 67 9f df 59 6f 47 3a e5 e0 ef af f9 ee 87 e8 ; you! " &4e15 60 3a 91 4f 65 47 e2 78 5f 3b 9b 6a 60 dc 4b fb &4e25 dc 60 3a e2 67 9f df 59 b5 eb 99 7b 60 0d 45 f8 &4e35 db ; string_196 &4e36 17 df db ; "closed" ; string_197 &4e39 2e db ; "open" ; string_198 &4e3b 5d df 85 f0 82 5c 2f db ; "a disused room" ; string_199 &4e43 74 4d 55 fb 48 5d ee 81 93 f9 9d e4 e8 5e 2f fb ; "standing in a small, grimy room with yellowing walls and a cracked &4e53 18 f4 89 99 f2 55 fb 2a 60 3b 5d de 7c ad e0 5c ; ceiling. The filthy window, set into the wall behind you, is " &4e63 de e0 a3 55 f6 3a e1 a3 64 5e 2c ce f9 82 5b 65 &4e73 47 3a 2a fb 0d 45 f9 e4 60 db ; string_19a &4e7d fd 45 fb e7 78 eb fb 19 3a e5 e0 ef ef 5e 65 47 ; "You leap from the jetty into the gaping jaws of a shark! " &4e8d 3a e2 dc eb 55 fb e5 dc f2 60 49 5d ca 6a e6 f8 &4e9d db ; string_19b &4e9e 17 df db ; "closed" ; string_19c &4ea1 2e db ; "open" ; string_19d &4ea3 5d 0c db ; "a corridor" ; string_19e &4ea6 48 5d 3d f9 cb 72 59 d9 65 6d 5c 0c f9 f2 89 e7 ; "in a wide, white painted corridor, well illuminated by strip &4eb6 fb e4 93 95 65 dc 6d 5c dd 5e 74 ed e4 eb fb 90 ; lights which run the length of the ceiling" &4ec6 56 60 14 4e fb 3a e7 6b e2 64 fb 49 3a de e0 a3 &4ed6 55 db ; string_19f &4ed8 5d 74 ea 67 2f db ; "a storeroom" ; string_1a0 &4ede 48 5d ee 81 93 f9 d7 e4 56 e7 5e 90 5b 74 ea 67 ; "in a small, brightly lit storeroom in the castle. The walls are &4eee 2f fb 48 3a 8d 74 7f f6 3a 2a 60 51 fb e7 65 e0 ; lined with shelves" &4efe 5c 18 ee 69 e7 f1 73 db ; string_1a1 &4f06 5d 11 fb 49 1d ee db ; "a flight of stairs" ; string_1a2 &4f0d 4a 5d 27 fb 11 fb 49 74 6f 59 1d ee f9 7b c0 fb ; "on a short flight of stone stairs, deep within the castle" &4f1d f2 e4 64 48 3a 8d 74 7f db ; string_1a3 &4f26 3a df 65 55 fb 2f db ; "the dining room" ; string_1a4 &4f2d 74 4d 55 fb 48 3a e2 67 4f df 65 55 fb 2f fb 49 ; "standing in the great dining room of the castle. A long, oak table &4f3d 3a 8d 74 7f f6 5d e7 6f e2 f9 ea bb fb 88 96 59 ; fills the centre of the room" &4f4d e1 e4 93 60 3a de 6b c3 59 49 3a 2f db ; string_1a5 &4f5a 5d ee 66 f1 55 fb cf 6e 3e db ; "a serving platform" ; string_1a6 &4f64 eb 66 de 69 5c 4a 5d 12 ae ef 83 fb ee 66 f1 55 ; "perched on a small metal serving platform which creaks alarmingly &4f74 fb cf 6e 3e fb 14 de 67 bb 60 83 6a e8 55 e7 5e ; under your weight! " &4f84 23 fb 45 5f f2 b4 56 f8 db ; string_1a7 &4f8d 5d df 95 dd f2 dc 72 66 db ; "a dumbwaiter" ; string_1a8 &4f96 de ed 71 de 69 5c 48 3a de 6f e1 65 e0 5c ee eb ; "crouched in the confined space of a tiny, wooden dumbwaiter" &4fa6 b2 59 49 5d ef 65 f4 f9 42 e0 5a df 95 dd f2 dc &4fb6 72 66 db ; string_1a9 &4fb9 5d 67 ee 5b 2f db ; "a rest room" ; string_1aa &4fbf 74 4d 55 fb 4a 3a cf f0 ca f9 52 fb de 6a a6 5b ; "standing on the plush, red carpet of a large, comfortable rest &4fcf 49 5d e7 6a 98 f9 7a e8 e1 75 88 96 59 67 ee 5b ; room in the castle. Armchairs run the length of the west wall" &4fdf 2f fb 48 3a 8d 74 7f f6 6a e8 de 70 be 60 4e fb &4fef 3a e7 6b e2 64 fb 49 3a 29 fb 2a db ; string_1ab &4ffb fb 3b 82 5b 65 47 3a 15 fb 2a f9 26 fb 5d ee 66 ; " and set into the north wall, above a serving platform, is a &500b f1 55 fb cf 6e 3e f9 e4 60 5d df 95 dd f2 dc 72 ; dumbwaiter" &501b 66 db ; string_1ac &501d 25 fb 45 fb e4 60 3a df 65 55 fb 2f db ; "below you is the dining room" ; string_1ad &502a 45 fb 70 f1 59 74 95 dd 7f 5c 65 47 3a bd df df ; "you have stumbled into the middle of a conference. A security &503a e7 59 49 5d de 6f e1 66 6b de e0 f6 5d 82 de f0 ; guard shoots you and you fall from the platform" &504a ed 72 5e e2 f0 6a 5c ca 9e ef 60 45 fb 3b 45 fb &505a e1 83 e7 fb 19 3a cf 6e 3e db ; string_1ae &5064 45 fb 34 fb 50 fb 47 5d 13 e6 72 de 69 e9 f6 3a ; "you look out to a large kitchen. The chef sees you and flings a &5074 de 69 e1 fb 46 60 45 fb 3b cc 55 60 5d ae 4f de ; meat cleaver at you" &5084 e7 78 79 5f 4f 45 db ; string_1af &508b 25 fb 45 fb e4 60 5d 67 ee 5b 2f db ; "below you is a rest room" ; string_1b0 &5097 3a 82 de f0 ed 72 5e ea e1 e1 e4 de e0 db ; "the security office" ; string_1b1 &50a5 48 3a 82 de f0 ed 72 5e ea e1 e1 e4 de 59 49 3a ; "in the security office of the castle. It is unusually quiet. A map &50b5 8d 74 7f f6 e4 5b e4 60 8e cd f0 83 e7 5e ac e4 ; hangs from the south wall" &50c5 e0 ef f6 5d 81 eb fb e3 68 e2 60 19 3a 16 fb 2a &50d5 db ; string_1b2 &50d6 5d 0c db ; "a corridor" ; string_1b3 &50d9 48 5d f2 89 e7 fb 90 5b 0c fb 48 3a 8d 74 7f f6 ; "in a well lit corridor in the castle. A sliding door is to the &50e9 5d ee 90 df 55 fb 44 fb e4 60 47 3a 16 f6 3a 44 ; south. The door is " &50f9 fb e4 60 db ; string_1b4 &50fd 99 ad 9c db ; "locked" ; string_1b5 &5101 17 df db ; "closed" ; string_1b6 &5104 2e db ; "open" ; string_1b7 &5106 5d 0c db ; "a corridor" ; string_1b8 &5109 48 5d d7 e4 56 e7 5e e4 93 95 65 dc 6d 5c 0c f9 ; "in a brightly illuminated corridor, to the south of a white &5119 47 3a 16 fb 49 5d cb 72 59 ee 90 df 55 fb 44 fb ; sliding door which is " &5129 14 e4 60 db ; string_1b9 &512d fd 5d 81 5a 6a ed e4 79 60 3b af eb 73 fa ff 6e ; "A man arrives and types: "attacon" into the computer. He opens the &513d 88 de 6f ff fb 65 47 3a 7a a4 b6 66 f6 e3 59 2e ; door and enters, closing the door behind him. " &514d 60 3a 44 fb 3b 6b ef 66 ee f9 de 99 ee 55 fb 3a &515d 44 fb 0d 77 e8 f6 db ; string_1ba &5164 17 df db ; "closed" ; string_1bb &5167 2e db ; "open" ; string_1bc &5169 5d 87 dd 75 6e 75 f4 db ; "a laboratory" ; string_1bd &5171 48 3a 50 e0 5f 87 dd 75 6e 75 5e 49 3a 8d 74 7f ; "in the outer laboratory of the castle. Scientific equipment lies &5181 f6 ee de e4 6b 6c e1 e4 de fb e0 ac e4 eb e8 6b ; on the various benches which fill the room" &5191 5b 90 e0 60 4a 3a f1 6a e4 57 fb dd 6b de 69 60 &51a1 14 e1 e4 93 fb 3a 2f db ; string_1be &51a9 3a 65 86 5f 87 dd 75 6e 75 f4 db ; "the inner laboratory" ; string_1bf &51b4 74 4d 55 fb 48 3a 65 86 5f 87 dd 75 6e 75 f4 db ; "standing in the inner laboratory" ; string_1c0 &51c4 5d cf 6e 3e db ; "a platform" ; string_1c1 &51c9 74 4d 55 fb 4a 3a 7e eb fb cf 6e 3e fb 49 5d e1 ; "standing on the top platform of a fire escape. " &51d9 be 59 73 8d a6 f6 db ; string_1c2 &51e0 e1 dc 5f 25 fb e4 60 5d f1 c6 5b dd 78 8f db ; "far below is a vast beach" ; string_1c3 &51ef 5d 17 5c e1 be 59 44 fb e4 60 47 3a 28 db ; "a closed fire door is to the east" ; string_1c4 &51fd dc 5a 2e fb e1 be 59 44 fb e4 60 47 3a 28 db ; "an open fire door is to the east" ; string_1c5 &520c 5d 11 fb 49 37 ee db ; "a flight of steps" ; string_1c6 &5213 4a 5d 24 11 fb 49 e1 be 59 73 8d eb 59 37 ee db ; "on a long flight of fire escape steps" ; string_1c7 &5223 5d 31 db ; "a path" ; string_1c8 &5226 74 4d 55 fb 4a 5d 9b ad 5e 31 f6 48 3a 8b 74 68 ; "standing on a rocky path. In the distance to the west is the sea" &5236 de 59 47 3a 29 fb e4 60 3a ee 78 db ; string_1c9 &5242 3a dd 78 8f db ; "the beach" ; string_1ca &5247 f2 4d 66 55 fb 4a 3a cc 6e f9 c9 5e ee 4d 60 49 ; "wandering on the flat, dry sands of an enormous beach. No gulls &5257 dc 5a 6b 75 e8 57 fb dd 78 8f f6 aa fb e2 f0 93 ; can be heard, the only sound being that of the sea washing to &5267 60 8d 5a dd 59 69 6a df f9 3a 1f ee 71 e9 5c c4 ; shore. " &5277 55 fb 1e 49 3a 82 5d f2 c6 e3 55 fb 47 ee a9 67 &5287 f6 db ; string_1cb &5289 30 fb de e7 71 df 60 99 ea 63 a1 65 57 e7 5e 48 ; "dark clouds loom ominously in the sky" &5299 3a ee e6 f4 db ; string_1cc &529e 45 fb e1 dc a3 fb 47 aa 6c de 59 5d 12 a8 e0 de ; "you fail to notice a small piece of metal protruding from the &52ae 59 49 ae ef 83 fb 94 ea c3 f0 df 55 fb 19 3a dd ; beach. Your foot touches it and voomph. . " &52be 78 8f f6 45 5f 35 fb ef 71 de 69 60 e4 5b 3b f1 &52ce 9e a4 e3 f6 f6 db ; string_1cd &52d4 5d e1 be 59 44 db ; "a fire door" ; string_1ce &52da 74 4d 55 fb 47 3a 28 fb 49 5d 74 ed 6f e2 fb e1 ; "standing to the east of a strong fire door in the corner of the &52ea be 59 44 fb 48 3a de 75 86 5f 49 3a 87 dd 75 6e ; laboratory. The door is " &52fa 75 f4 f6 3a 44 fb e4 60 db ; string_1cf &5303 fd aa 64 55 fb 70 a7 6b ee f6 db ; "Nothing happens. " ; string_1d0 &530e 17 df db ; "closed" ; string_1d1 &5311 2e db ; "open" ; string_1d2 &5313 5d e5 e0 ef af db ; "a jetty" ; string_1d3 &5319 4a 5d 24 e5 e0 ef ef 5e 14 ef 7c 79 e7 60 50 fb ; "on a long jetty which travels out from the beach to the sea" &5329 19 3a dd 78 8f fb 47 3a ee 78 db ; string_1d4 &5334 f6 5d bc 7e 5f 91 4f e1 99 6e 60 4a 3a 82 5d 25 ; ". A motor boat floats on the sea below" &5344 db ; string_1d5 &5345 5d 9b ad 5e eb 65 9f de 7f db ; "a rocky pinnacle" ; string_1d6 &534f 4a 5d 9b ad 5e eb 65 9f de 7f f9 77 9a fb 26 fb ; "on a rocky pinnacle, high above the sea. Looking down, you can &535f 3a ee 78 f6 34 55 fb 2d f9 45 fb 8d 5a e5 cd 5b ; just discern the form of a periscope peeping from the waters &536f df 85 de 66 5a 3a 3e fb 49 5d eb 66 85 7a eb 59 ; below" &537f a6 c0 55 fb 19 3a f2 6e 66 60 25 db ; string_table_zero ; string_000 &538b fd eb 67 ee 60 3a ee eb b2 59 dd 6a f6 db ; "Press the space bar. " ; string_001 &5399 fd 45 fb 51 fb df 78 df f8 db ; "You are dead! " ; string_002 &53a3 fd 45 fb 70 f1 59 f2 6f f8 db ; "You have won! " ; string_003 &53ad fd dc e2 dc 65 fa db ; "Again: " ; string_004 &53b4 fd 61 7d 3c 23 74 3b 64 6e f6 db ; "I don't understand that. " ; string_005 &53bf fd 61 8d 3c 81 e6 59 69 dc 5c aa 5f 88 a3 fb 49 ; "I can't make head nor tail of that! " &53cf 64 6e f8 db ; string_006 &53d3 fd eb 6a df 6f f7 db ; "Pardon? " ; string_007 &53da fd 61 86 e0 5c e8 75 59 65 3e 6e 58 f6 db ; "I need more information. " ; string_008 &53e8 fd 45 fb 8d 3c 7d fb 64 6e f6 db ; "You can't do that. " ; string_009 &53f3 fd 6c e8 59 eb c6 ee 73 f6 f6 f6 db ; "Time passes. . . " ; string_00a &53ff 15 db ; "north" ; string_00b &5401 16 db ; "south" ; string_00c &5403 28 db ; "east" ; string_00d &5405 29 db ; "west" ; string_00e &5407 15 28 db ; "northeast" ; string_00f &540a 15 29 db ; "northwest" ; string_010 &540d 16 28 db ; "southeast" ; string_011 &5410 16 29 db ; "southwest" ; string_012 &5413 d4 db ; "up" ; string_013 &5415 2d db ; "down" ; string_014 &5417 65 db ; "in" ; string_015 &5419 50 db ; "out" ; string_016 &541b fb 3b db ; " and " ; string_017 &541e fd 45 fb 51 fb 8e dc 96 59 47 bc f1 59 3a db ; "You are unable to move the " ; string_018 &542d fd 45 fb e1 65 5c db ; "You find " ; string_019 &5434 fd 45 fb 51 fb c1 6a 55 fb db ; "You are wearing " ; string_01a &543e fd 45 fb 51 fb de 6a ed f4 55 fb db ; "You are carrying " ; string_01b &544a fd 3a 1f 2b fb 45 fb 8d 5a 46 fb e4 60 db ; "The only exit you can see is " ; string_01c &5458 fd 4c ed 59 51 fb f1 85 e4 96 59 2b 60 db ; "There are visible exits " ; string_01d &5466 fd 4c ed 59 e4 60 aa fb 2b fb db ; "There is no exit " ; string_01e &5471 aa 64 55 db ; "nothing" ; string_01f &5475 5d db ; "a " ; string_020 &5477 fd 45 fb 51 fb db ; "You are " ; string_021 &547d fd 45 fc ed 59 db ; "You're " ; string_022 &5483 ff fd 94 ea e5 e0 de 5b fd 4c 8c f0 60 fe fd ed ; ""Project Thesius (Rick Hanson 2)". By Robert and Mike O'Leary. &5493 e4 ad fb fd e3 68 ee 4a 02 fe ff f6 dd 5e fd 9b ; Programmed by Robert O'Leary using "Midge, The Message Compression &54a3 dd 66 5b 3b fd bd e6 59 fd ea fc fd 7f 6a f4 f6 ; System". Copyright (c) 1986. " &54b3 94 b7 7c e8 ae 5c dd 5e fd 9b dd 66 5b fd ea fc &54c3 fd 7f 6a 5e cd 55 fb ff fd bd df 98 f9 fd 3a fd &54d3 e8 73 ab e2 59 fd 7a a4 67 ee 8c 4a fd ee f4 ee &54e3 6d e8 ff f6 7a eb f4 ed e4 56 fb fe de fe fb 01 &54f3 09 08 06 f6 db ; string_023 &54f8 fd ea e6 da f6 db ; "Okay. " ; string_024 &54fe fd 45 fb 8d 3c f2 78 5f 3a db ; "You can't wear the " ; string_025 &5508 fd 45 fb 70 f1 59 3a db ; "You have the " ; string_026 &5510 fd 45 fb f2 78 5f 3a db ; "You wear the " ; string_027 &5518 fd 45 fb df 9b eb fb 3a db ; "You drop the " ; string_028 &5521 fd 45 fb 51 fb 83 67 b9 5e a9 e7 df 55 fb 3a db ; "You are already holding the " ; string_029 &5531 fd 45 fb 51 fb 83 67 b9 5e c1 6a 55 fb 3a db ; "You are already wearing the " ; string_02a &5540 fd 45 fb 8b df 3c 88 e6 59 68 f4 64 55 f8 db ; "You didn't take anything! " ; string_02b &554f fd 45 fb 8b df 3c df 9b eb fb 68 f4 64 55 f8 db ; "You didn't drop anything! " ; string_02c &555f fd 71 8f f8 db ; "Ouch! " ; string_02d &5564 fd 45 fb 46 fb aa 64 55 fb 14 65 ef 66 73 ef 60 ; "You see nothing which interests you. " &5574 45 f6 db ; string_02e &5577 fd 51 fb 45 fb ee f0 67 f7 db ; "Are you sure? " ; string_02f &5581 fd ab 79 db ; "Save" ; string_030 &5585 fd 99 dc 5c eb 67 f1 e4 57 db ; "Load previous" ; string_031 &558f fb e2 92 59 97 ee 72 58 fa af eb 59 e1 a3 59 e9 ; " game position: type file name or Return Key to abort. " &559f 92 59 ea 5f fd 67 ef f0 ed 5a fd e6 e0 5e 47 dc &55af dd 75 ef f6 db ; string_032 &55b4 7e f2 89 db ; "towel" ; string_033 &55b8 fd 72 fc 60 5d e9 75 81 e7 fb dd 78 8f fb 7e f2 ; "It's a normal beach towel. " &55c8 89 f6 db ; string_034 &55cb aa 6c de e0 db ; "notice" ; string_035 &55d0 fd 45 fb 8d 5a 46 fb f2 ed 72 55 f6 db ; "You can see writing. " ; string_036 &55dd 8c e2 e9 db ; "sign" ; string_037 &55e1 6d 7f c5 6f e0 db ; "telephone" ; string_038 &55e7 fd 3a 6d 7f c5 6f 59 e4 60 ea e7 df f9 d6 5b 48 ; "The telephone is old, but in good working order. It has a dial. " &55f7 e2 9e 5c f2 75 e6 55 fb 75 df 66 f6 e4 5b 70 60 &5607 5d 8b 83 f6 db ; string_039 &560c 67 de b4 f1 66 db ; "receiver" ; string_03a &5612 d9 e2 59 ef 75 5a 19 5d 6d 7f c5 6f 59 8b 67 de ; "page torn from a telephone directory" &5622 ef 75 f4 db ; string_03b &5626 13 de 69 74 db ; "large chest" ; string_03c &562b fd 3a de 69 ee 5b e4 60 99 ad 9c f6 5d e9 95 66 ; "The chest is locked. A numeric keypad is set into the lid close to &563b e4 de fb e6 e0 f4 d9 5c e4 60 82 5b 65 47 3a 90 ; which is inscribed the word "Danger"! " &564b 5c 17 fb 47 14 e4 60 65 ee de ed e4 c4 5c 3a f2 &565b 75 5c ff fd df 68 e2 66 ff f8 db ; string_03d &5666 fd 3a de 69 ee 5b e4 60 2e f6 db ; "The chest is open. " ; string_03e &5671 8b f1 55 fb ee f0 72 db ; "diving suit" ; string_03f &5679 eb b0 5f 49 e1 90 a7 66 ee db ; "pair of flippers" ; string_040 &5683 e8 a3 73 ef 6f 59 14 97 65 ef 60 47 3a 29 db ; "milestone which points to the west" ; string_041 &5692 fb 47 db ; " to " ; string_042 &5695 e7 6b e2 64 fb 49 de 69 73 59 f2 e4 67 db ; "length of cheese wire" ; string_043 &56a3 fd 3a 67 de b4 79 5f e4 60 6e 88 de 69 5c 47 3a ; "The receiver is attached to the telephone by a coiled wire. " &56b3 6d 7f c5 6f 59 dd 5e 5d 7a e4 7f 5c f2 e4 67 f6 &56c3 db ; string_044 &56c4 7a 65 db ; "coin" ; string_045 &56c7 fd 3a 7a 48 e4 60 81 df 59 49 7a a7 66 f6 db ; "The coin is made of copper. " ; string_046 &56d6 eb b0 5f 49 ee a9 73 db ; "pair of shoes" ; string_047 &56de eb b0 5f 49 33 83 e7 ee db ; "pair of overalls" ; string_048 &56e7 fd dd 78 8f fb fd eb c6 ee db ; "Beach Pass" ; string_049 &56f1 86 f2 ee d9 eb 66 db ; "newspaper" ; string_04a &56f8 eb 65 e6 fb de 6a e9 6e 58 db ; "pink carnation" ; string_04b &5702 fd 3a fd dd 78 8f fb fd eb c6 60 70 60 45 5f a8 ; "The Beach Pass has your picture attached to it and is stamped &5712 de ef f0 ed 59 6e 88 de 69 5c 47 e4 5b 3b e4 60 ; "Official" in red ink. " &5722 74 92 a6 5c ff fd ea e1 e1 e4 de e4 83 ff fb 48 &5732 52 fb 65 e6 f6 db ; string_04c &5738 fd 5d e8 73 ab e2 59 e4 60 de be de 7f 5c 48 3a ; "A message is circled in the Entertainments Column of the &5748 fd 6b ef 66 88 65 e8 6b ef 60 fd 7a e7 95 5a 49 ; newspaper! " &5758 3a 86 f2 ee d9 eb 66 f8 db ; string_04d &5761 ee e9 51 5c 7c dd dd 72 db ; "snared rabbit" ; string_04e &576a fd 3a 7c dd d5 5b 70 60 c4 e0 5a b5 eb 66 ef e7 ; "The rabbit has been expertly killed. " &577a 5e e6 a3 7f df f6 db ; string_04f &5781 ee e9 51 db ; "snare" ; string_050 &5785 e7 72 6d 5f dd 65 db ; "litter bin" ; string_051 &578c fd 3a e7 72 6d 5f dd 48 e4 60 81 df 59 19 f4 89 ; "The litter bin is made from yellow plastic. " &579c 99 62 eb 87 ee 6c de f6 db ; string_052 &57a5 74 6e f0 e0 db ; "statue" ; string_053 &57aa ee eb 68 e9 66 db ; "spanner" ; string_054 &57b0 fd 3a ee eb 68 86 5f e4 60 81 df 59 49 ef 71 e2 ; "The spanner is made of toughened steel and can loosen large bolts! &57c0 69 86 5c ee 6d 89 fb 3b 8d 5a 99 ea 82 5a 13 91 ; " &57d0 e7 ef ee f8 db ; string_055 &57d5 dd 6e ef 66 f4 db ; "battery" ; string_056 &57db dd 9c db ; "bed" ; string_057 &57de fd 3a c4 5c e4 60 ea e7 5c 3b e7 6a 98 f6 db ; "The bed is old and large. " ; string_058 &57ed e8 65 55 fb 69 e7 ae ef db ; "mining helmet" ; string_059 &57f6 fd 3a 69 e7 ae 5b e4 60 81 df 59 19 e3 6a df f9 ; "The helmet is made from hard, white plastic and has a lamp set &5806 cb 72 59 eb 87 ee 6c de fb 3b 70 60 5d 87 a4 fb ; into the front. The lamp is off. " &5816 82 5b 65 47 3a d8 6f ef f6 3a 87 a4 fb e4 60 ea &5826 e1 e1 f6 db ; string_05a &582a fd 3a 87 a4 fb 4a 3a 69 e7 ae 5b e4 60 6f f6 db ; "The lamp on the helmet is on. " ; string_05b &583a ee 69 e0 ef db ; "sheet" ; string_05c &583f fd 72 fc 60 5d e6 55 8c f5 59 c4 5c ee 69 e0 ef ; "It's a kingsize bed sheet. " &584f f6 db ; string_05d &5851 87 dd fb 7a 6e db ; "lab coat" ; string_05e &5857 dd dc 64 2f fb f2 b4 9a 55 fb ee de 83 73 db ; "bathroom weighing scales" ; string_05f &5866 fd 5d 12 90 56 fb a2 72 ef 55 fb 8b ea df 59 e4 ; "A small light emitting diode is set into the upper surface. " &5876 60 82 5b 65 47 3a d4 a6 5f ee f0 ed e1 b2 e0 f6 &5886 db ; string_060 &5887 e1 b2 59 81 ee e6 db ; "face mask" ; string_061 &588e 81 eb db ; "map" ; string_062 &5891 82 5b 49 cf 68 ee db ; "set of plans" ; string_063 &5898 fd 4c ee 59 51 fb 3a e6 e0 5e 47 fd 94 ea e5 e0 ; "These are the key to Project Thesius! " &58a8 de 5b fd 4c 8c cd f8 db ; string_064 &58b0 fd 3a e1 b2 59 81 ee e6 fb e4 60 81 df 59 19 5d ; "The face mask is made from a thin, green material. " &58c0 64 65 f9 e2 67 e0 5a e8 6e 66 e4 83 f6 db ; string_065 &58ce fd 3a 69 e7 ae 5b 86 9c 60 5d 97 c1 5f ee 53 de ; "The helmet needs a power source before the lamp can be switched &58de 59 c4 e1 75 59 3a 87 a4 fb 8d 5a dd 59 b8 72 de ; on. " &58ee 69 5c 6f f6 db ; string_066 &58f3 fd f2 dc 6d 5f 19 3a c3 71 9a fb 70 60 d2 65 e0 ; "Water from the trough has ruined the lamp. " &5903 5c 3a 87 a4 f6 db ; string_067 &5909 eb b0 5f 49 e7 78 4c 5f e2 99 f1 73 db ; "pair of leather gloves" ; string_068 &5916 e9 92 59 88 e2 db ; "name tag" ; string_069 &591c de 75 eb 82 db ; "corpse" ; string_06a &5921 fd 3a df 78 5c 91 df 5e 49 3a 94 ea e1 73 bf 5f ; "The dead body of the professor lies before you. " &5931 90 e0 60 c4 e1 75 59 45 f6 db ; string_06b &593b 7a a4 b6 66 db ; "computer" ; string_06c &5940 fd e4 5b 70 60 5d e6 e0 f4 91 6a df f6 db ; "It has a keyboard. " ; string_06d &594e 7f f1 66 db ; "lever" ; string_06e &5952 fd 45 fb b5 92 65 59 3a db ; "You examine the " ; string_table_addresses_low &595b 8b 53 ; &538b = string_table_zero &595d 29 3b ; &3b29 = string_table_one &595f fa 2e ; &2efa = string_table_two ; string_table_lengths ; 0 1 2 &5961 6e d6 56 ; string_ending &5964 00 ; text_colour &5965 20 ; delay_length &5966 00 ; bracket &5967 29 ; ")" ; letter_byte_offset &5968 7b ; line_length ; fragment_id &5969 00 ; string_table_id &596a 00 ; string_id &596b 00 ; move_to_next_byte_of_text &596c a9 01 LDA #&01 &596e 18 CLC &596f 65 70 ADC &70 ; text_address_low &5971 85 70 STA &70 ; text_address_low &5973 90 02 BCC &5977 ; leave &5975 e6 71 INC &71 ; text_address_high ; leave &5977 60 RTS ; write_packed_string &5978 8d 65 59 STA &5965 ; text_colour &597b 8e 6b 59 STX &596b ; string_id &597e 8c 6a 59 STY &596a ; string_table_id &5981 c0 03 CPY #&03 &5983 90 12 BCC &5997 ; is_valid_table &5985 00 BRK &5986 2d 42 61 74 63 68 20 65 72 72 6f 72 20 28 59 29 ; "-Batch error (Y)" &5996 00 ; is_valid_table &5997 ad 6b 59 LDA &596b ; string_id &599a d9 61 59 CMP &5961,Y ; string_table_lengths &599d f0 18 BEQ &59b7 ; is_valid_string &599f 90 16 BCC &59b7 ; is_valid_string &59a1 00 BRK &59a2 2e 4e 6f 20 73 75 63 68 20 6d 65 73 73 61 67 65 ; "No such message (X)" &59b2 20 28 58 29 00 ; is_valid_string &59b7 ad 6a 59 LDA &596a ; string_table_id &59ba 0a ASL A &59bb a8 TAY &59bc b9 5b 59 LDA &595b,Y ; string_table_addresses_low &59bf 85 70 STA &70 ; text_address_low &59c1 b9 5c 59 LDA &595c,Y ; string_table_addresses_high &59c4 85 71 STA &71 ; text_address_high &59c6 a0 00 LDY #&00 &59c8 e0 00 CPX #&00 &59ca f0 18 BEQ &59e4 ; skip_finding_string &59cc a2 00 LDX #&00 ; find_string_loop &59ce 20 6c 59 JSR &596c ; move_to_next_byte_of_text &59d1 b1 70 LDA (&70),Y ; text_address &59d3 c9 db CMP #&db ; TEXT_SEPARATOR &59d5 d0 f7 BNE &59ce ; find_string_loop &59d7 e8 INX &59d8 ec 6b 59 CPX &596b ; string_id &59db d0 f1 BNE &59ce ; find_string_loop &59dd 20 6c 59 JSR &596c ; move_to_next_byte_of_text &59e0 a2 00 LDX #&00 &59e2 a0 00 LDY #&00 ; skip_finding_string ; add_string_to_buffer_loop &59e4 b1 70 LDA (&70),Y ; text_address &59e6 c9 db CMP #&db ; TEXT_SEPARATOR &59e8 d0 03 BNE &59ed &59ea 4c 83 5a JMP &5a83 ; end_string ; not_separator &59ed b0 03 BCS &59f2 ; not_fragment &59ef 4c 79 5a JMP &5a79 ; is_fragment ; not_fragment &59f2 c9 f6 CMP #&f6 ; TEXT_PERIOD_AND_SPACE # &dc - &f5 are letters A - Z &59f4 90 33 BCC &5a29 ; is_letter &59f6 f0 38 BEQ &5a30 ; is_period_and_space # &f6 is ". " &59f8 c9 f7 CMP #&f7 ; TEXT_QUESTION_MARK_AND_SPACE # &f7 is "? " &59fa f0 45 BEQ &5a41 ; is_question_mark_and_space &59fc c9 f8 CMP #&f8 ; TEXT_EXCLAMATION_MARK_AND_SPACE # &f8 is "! " &59fe f0 51 BEQ &5a51 ; is_exclamation_mark_and_space &5a00 c9 f9 CMP #&f9 ; TEXT_COMMA_AND_SPACE # &f9 is ", " &5a02 f0 37 BEQ &5a3b ; is_comma_and_space &5a04 c9 fa CMP #&fa ; TEXT_COLON_AND_SPACE # &fa is ": " &5a06 f0 41 BEQ &5a49 ; is_colon_and_space &5a08 c9 fb CMP #&fb ; TEXT_SPACE # &fb is " " &5a0a f0 4a BEQ &5a56 ; is_space &5a0c c9 fc CMP #&fc ; TEXT_APOSTROPHE # &fc is "'" &5a0e f0 4b BEQ &5a5b ; is_apostrophe &5a10 c9 fd CMP #&fd ; TEXT_UPPERCASE # &fd makes next word start with uppercase letter &5a12 f0 4c BEQ &5a60 ; is_uppercase &5a14 c9 ff CMP #&ff ; TEXT_QUOTE # &ff is """ &5a16 f0 51 BEQ &5a69 ; is_quote &5a18 c9 fe CMP #&fe ; TEXT_BRACKET # &fe is "(" or ")" &5a1a f0 52 BEQ &5a6e; is_bracket ; add_character_to_buffer &5a1c 9d 00 5f STA &5f00,X ; text_buffer &5a1f a9 7b LDA #&7b ; OFFSET_LOWERCASE # Subsequent characters are lowercase &5a21 8d 68 59 STA &5968 ; letter_byte_offset ; next_character &5a24 e8 INX &5a25 c8 INY &5a26 4c e4 59 JMP &59e4 ; add_string_to_buffer_loop ; is_letter &5a29 38 SEC # Convert &dc - &f5 to &61 - &7a ("a" - "z") if &7b &5a2a ed 68 59 SBC &5968 ; letter_byte_offset # or &41 - &5a ("A" - "Z") if &9b &5a2d 4c 1c 5a JMP &5a1c ; add_character_to_buffer ; is_period_and_space &5a30 20 b2 5a JSR &5ab2 ; add_period_and_space_to_buffer ; start_new_sentence &5a33 a9 9b LDA #&9b; OFFSET_UPPERCASE &5a35 8d 68 59 STA &5968 ; letter_byte_offset &5a38 4c 24 5a JMP &5a24 ; next_character ; is_comma_and_space &5a3b 20 be 5a JSR &5abe ; add_comma_and_space_to_buffer &5a3e 4c 24 5a JMP &5a24 ; next_character ; is_question_mark_and_space &5a41 a9 3f LDA #&3f ; "?" ; add_character_and_space_then_start_new_sentence &5a43 20 b4 5a JSR &5ab4 ; add_character_and_space_to_buffer &5a46 4c 33 5a JMP &5a33 ; start_new_sentence ; is_colon_and_space &5a49 a9 3a LDA #&3a ; ":" &5a4b 20 b4 5a JSR &5ab4 ; add_character_and_space_to_buffer &5a4e 4c 24 5a JMP &5a24 ; next_character ; is_exclamation_mark_and_space &5a51 a9 21 LDA #&21 ; "!" &5a53 4c 43 5a JMP &5a43 ; add_character_and_space_then_start_new_sentence ; is_space &5a56 a9 20 LDA #&20 ; " " &5a58 4c 1c 5a JMP &5a1c ; add_character_to_buffer ; is_apostrophe &5a5b a9 27 LDA #&27 ; "'" &5a5d 4c 1c 5a JMP &5a1c ; add_character_to_buffer ; is_uppercase &5a60 a9 9b LDA #&9b ; OFFSET_UPPERCASE &5a62 8d 68 59 STA &5968 ; letter_byte_offset &5a65 ca DEX &5a66 4c 24 5a JMP &5a24 ; next_character ; is_quote &5a69 a9 22 LDA #&22 ; """ &5a6b 4c 1c 5a JMP &5a1c ; add_character_to_buffer ; is_bracket &5a6e ad 67 59 LDA &5967 ; bracket &5a71 49 01 EOR #&01 &5a73 8d 67 59 STA &5967 ; bracket &5a76 4c 1c 5a JMP &5a1c ; add_character_to_buffer ; is_fragment &5a79 20 1e 5b JSR &5b1e ; add_fragment_to_buffer &5a7c 4c 24 5a JMP &5a24 ; next_character ; end_without_punctuation &5a7f ca DEX &5a80 4c 95 5a JMP &5a95 ; end_of_string ; end_string &5a83 ad 64 59 LDA &5964 ; string_ending &5a86 f0 f7 BEQ &5a7f ; end_without_punctuation &5a88 c9 01 CMP #&01 ; TEXT_END_COMMA &5a8a f0 06 BEQ &5a92 ; end_with_comma ; end_with_period &5a8c 20 b2 5a JSR &5ab2 ; add_period_and_space_to_buffer &5a8f 4c 95 5a JMP &5a95 ; end_of_string &5a92 20 be 5a JSR &5abe ; add_comma_and_space_to_buffer ; end_of_string &5a95 a9 0d LDA #&0d ; CR # End buffer with carriage return &5a97 9d 01 5f STA &5f01,X ; text_buffer + 1 &5a9a 20 c3 5a JSR &5ac3 ; write_buffer &5a9d ae 6b 59 LDX &596b ; string_id &5aa0 ac 6a 59 LDY &596a ; string_table_id &5aa3 ad 65 59 LDA &5965 ; text_colour &5aa6 60 RTS ; get_cursor_position &5aa7 a9 86 LDA #&86 ; Get text cursor position &5aa9 4c f4 ff JMP &fff4 ; OSBYTE # Leaves with cursor position in X and Y ; set_line_colour &5aac ad 65 59 LDA &5965 ; text_colour &5aaf 4c ee ff JMP &ffee ; OSWRCH ; add_period_and_space_to_buffer &5ab2 a9 2e LDA #&2e ; "." ; add_character_and_space_to_buffer &5ab4 9d 00 5f STA &5f00,X ; text_buffer &5ab7 e8 INX &5ab8 a9 20 LDA #&20 ; " " &5aba 9d 00 5f STA &5f00,X ; text_buffer &5abd 60 RTS ; add_comma_and_space_to_buffer &5abe a9 2c LDA #&2c ; "," &5ac0 4c b4 5a JMP &5ab4 ; add_character_and_space_to_buffer ; write_buffer &5ac3 20 a7 5a JSR &5aa7 ; ; get_cursor_position &5ac6 e0 00 CPX #&00 &5ac8 d0 03 BNE &5acd ; skip_colour &5aca 20 ac 5a JSR &5aac ; set_line_colour ; skip_colour &5acd a0 00 LDY #&00 &5acf a2 00 LDX #&00 ; write_buffer_loop &5ad1 a9 00 LDA #&00 &5ad3 8d 69 59 STA &5969 ; line_length ; find_end_of_word_loop &5ad6 b9 00 5f LDA &5f00,Y ; text_buffer &5ad9 c9 0d CMP #&0d ; CR &5adb f0 0e BEQ &5aeb ; found_end_of_word &5add c9 20 CMP #&20 ; " " &5adf f0 0a BEQ &5aeb ; found_end_of_word &5ae1 ee 69 59 INC &5969 ; line_length &5ae4 c8 INY &5ae5 4c d6 5a JMP &5ad6 ; find_end_of_word_loop ; leave_after_pla &5ae8 68 PLA &5ae9 a8 TAY &5aea 60 RTS ; found_end_of_word &5aeb 98 TYA &5aec 48 PHA &5aed 8a TXA &5aee 48 PHA &5aef 20 a7 5a JSR &5aa7 ; get_cursor_position &5af2 8a TXA &5af3 18 CLC &5af4 6d 69 59 ADC &5969 ; line_length &5af7 c9 27 CMP #&27 ; 39 # actually CMP screen_width &5af9 b0 1a BCS &5b15 ; line_is_too_long ; write_word &5afb 68 PLA &5afc aa TAX ; write_word_loop &5afd bd 00 5f LDA &5f00,X ; text_buffer &5b00 c9 0d CMP #&0d :CR &5b02 f0 e4 BEQ &5ae8 ; leave_after_pla &5b04 20 ee ff JSR &ffee ; OSWRCH &5b07 20 7a 5b JSR &5b7a ; delay &5b0a e8 INX &5b0b c9 20 CMP #&20 ; " " &5b0d d0 ee BNE &5afd ; write_word_loop &5b0f 68 PLA &5b10 a8 TAY &5b11 c8 INY &5b12 4c d1 5a JMP &5ad1 ; write_buffer_loop ; start_new_line &5b15 20 e7 ff JSR &ffe7 ; OSNEWL &5b18 20 ac 5a JSR &5aac ; set_line_colour &5b1b 4c fb 5a JMP &5afb ; write_word ; add_fragment_to_buffer &5b1e 8d 69 59 STA &5969 ; fragment_id &5b21 98 TYA &5b22 48 PHA &5b23 8a TXA &5b24 48 PHA &5b25 a9 bd LDA #&bd &5b27 85 72 STA &72 ; fragments_address_low &5b29 a9 5b LDA #&5b ; &5bbd = fragments &5b2b 85 73 STA &73 ; fragments_address_high &5b2d a0 00 LDY #&00 &5b2f a2 00 LDX #&00 &5b31 ad 69 59 LDA &5969 ; fragment_id &5b34 f0 1e BEQ &5b54 ; skip_finding_fragment ; find_fragment_in_list_loop &5b36 b1 72 LDA (&72),Y ; fragment_address &5b38 c9 40 CMP #&40 ; "@" &5b3a f0 0e BEQ &5b4a ; end_of_fragment ; move_forward_a_byte_in_list &5b3c a9 01 LDA #&01 &5b3e 18 CLC &5b3f 65 72 ADC &72 ; fragments_address_low &5b41 85 72 STA &72 ; fragments_address_low &5b43 90 f1 BCC &5b36 ; find_fragment_in_list_loop &5b45 e6 73 INC &73 ; fragments_address_high &5b47 4c 36 5b JMP &5b36 ; find_fragment_in_list_loop ; end_of_fragment &5b4a e8 INX &5b4b ec 69 59 CPX &5969 ; fragment_id &5b4e f0 03 BEQ &5b53 ; found_fragment &5b50 4c 3c 5b JMP &5b3c ; move_forward_a_byte_in_list ; found_fragment &5b53 c8 INY ; skip_finding_fragment &5b54 68 PLA &5b55 aa TAX ; add_fragment_loop &5b56 b1 72 LDA (&72),Y ; fragment_address &5b58 c9 40 CMP #&40 ; "@" &5b5a f0 1a BEQ &5b76 ; finished_adding_fragment &5b5c 48 PHA &5b5d ad 68 59 LDA &5968 ; letter_byte_offset &5b60 c9 9b CMP #&9b ; OFFSET_UPPERCASE &5b62 f0 04 BEQ &5b68 ; skip_lowercasing &5b64 68 PLA &5b65 09 20 ORA #&20 &5b67 48 PHA ; skip_lowercasing &5b68 68 PLA &5b69 9d 00 5f STA &5f00,X ; text_buffer &5b6c c8 INY &5b6d e8 INX &5b6e a9 7b LDA #&7b ; OFFSET_LOWERCASE &5b70 8d 68 59 STA &5968 ; letter_byte_offset &5b73 4c 56 5b JMP &5b56 ; add_fragment_loop ; finished_adding_fragment &5b76 68 PLA &5b77 a8 TAY &5b78 ca DEX &5b79 60 RTS ; delay &5b7a 48 PHA &5b7b ad 66 59 LDA &5966 ; delay_length &5b7e f0 17 BEQ &5b97 ; leave &5b80 48 PHA &5b81 8a TXA &5b82 48 PHA &5b83 98 TYA &5b84 48 PHA ; delay_loop &5b85 a9 13 LDA #&13 ; Wait for Vertical Retrace &5b87 20 f4 ff JSR &fff4 ; OSBYTE &5b8a ce 66 59 DEC &5966 ; delay_length &5b8d d0 f6 BNE &5b85 ; delay_loop &5b8f 68 PLA &5b90 a8 TAY &5b91 68 PLA &5b92 aa TAX &5b93 68 PLA &5b94 8d 66 59 STA &5966 ; delay_length ; leave &5b97 68 PLA &5b98 60 RTS ; set_screen_width # Unused code &5b99 8d f8 5a STA &5af8 ; screen_width &5b9c 60 RTS ; set_delay_length &5b9d 8d 66 59 STA &5966 ; delay_length &5ba0 60 RTS ; unused &5ba1 00 ; unused &5ba2 2f 42 79 20 52 2e 20 4d 2e 20 4f 27 4c 65 61 72 ; "/By R. M. O'Leary (c) 1986" &5bb2 79 20 28 63 29 20 31 39 38 36 00 ; fragments &5bbd 30 40 ; &00 : "0@" &5bbf 31 40 ; &01 : "1@" &5bc1 32 40 ; &02 : "2@" &5bc3 33 40 ; &03 : "3@" &5bc5 34 40 ; &04 : "4@" &5bc7 35 40 ; &05 : "5@" &5bc9 36 40 ; &06 : "6@" &5bcb 37 40 ; &07 : "7@" &5bcd 38 40 ; &08 : "8@" &5bcf 39 40 ; &09 : "9@" &5bd1 45 4e 54 52 41 4e 43 45 20 40 ; &0a : "ENTRANCE @" &5bdb 4d 4f 55 4e 54 41 49 4e 40 ; &0b : "MOUNTAIN@" &5be4 43 4f 52 52 49 44 4f 52 40 ; &0c : "CORRIDOR@" &5bed 42 45 48 49 4e 44 20 40 ; &0d : "BEHIND @" &5bf5 4e 41 52 52 4f 57 20 40 ; &0e : "NARROW @" &5bfd 53 54 52 45 45 54 40 ; &0f : "STREET@" &5c04 57 48 45 52 45 20 40 ; &10 : "WHERE @" &5c0b 46 4c 49 47 48 54 40 ; &11 : "FLIGHT@" &5c12 53 4d 41 4c 4c 20 40 ; &12 : "SMALL @" &5c19 4c 41 52 47 45 20 40 ; &13 : "LARGE @" &5c20 57 48 49 43 48 20 40 ; &14 : "WHICH @" &5c27 4e 4f 52 54 48 40 ; &15 : "NORTH@" &5c2d 53 4f 55 54 48 40 ; &16 : "SOUTH@" &5c33 43 4c 4f 53 45 40 ; &17 : "CLOSE@" &5c39 57 49 54 48 20 40 ; &18 : "WITH @" &5c3f 46 52 4f 4d 20 40 ; &19 : "FROM @" &5c45 46 49 45 4c 44 40 ; &1a : "FIELD@" &5c4b 43 4c 49 46 46 40 ; &1b : "CLIFF@" &5c51 48 4f 55 53 45 40 ; &1c : "HOUSE@" &5c57 53 54 41 49 52 40 ; &1d : "STAIR@" &5c5d 54 48 41 54 20 40 ; &1e : "THAT @" &5c63 4f 4e 4c 59 20 40 ; &1f : "ONLY @" &5c69 42 41 43 4b 20 40 ; &20 : "BACK @" &5c6f 46 4c 4f 4f 52 40 ; &21 : "FLOOR@" &5c75 54 48 49 53 20 40 ; &22 : "THIS @" &5c7b 55 4e 44 45 52 40 ; &23 : "UNDER@" &5c81 4c 4f 4e 47 20 40 ; &24 : "LONG @" &5c87 42 45 4c 4f 57 40 ; &25 : "BELOW@" &5c8d 41 42 4f 56 45 40 ; &26 : "ABOVE@" &5c93 53 48 4f 52 54 40 ; &27 : "SHORT@" &5c99 45 41 53 54 40 ; &28 : "EAST@" &5c9e 57 45 53 54 40 ; &29 : "WEST@" &5ca3 57 41 4c 4c 40 ; &2a : "WALL@" &5ca8 45 58 49 54 40 ; &2b : "EXIT@" &5cad 57 49 4e 44 40 ; &2c : "WIND@" &5cb2 44 4f 57 4e 40 ; &2d : "DOWN@" &5cb7 4f 50 45 4e 40 ; &2e : "OPEN@" &5cbc 52 4f 4f 4d 40 ; &2f : "ROOM@" &5cc1 44 41 52 4b 40 ; &30 : "DARK@" &5cc6 50 41 54 48 40 ; &31 : "PATH@" &5ccb 53 49 44 45 40 ; &32 : "SIDE@" &5cd0 4f 56 45 52 40 ; &33 : "OVER@" &5cd5 4c 4f 4f 4b 40 ; &34 : "LOOK@" &5cda 46 4f 4f 54 40 ; &35 : "FOOT@" &5cdf 52 4f 41 44 40 ; &36 : "ROAD@" &5ce4 53 54 45 50 40 ; &37 : "STEP@" &5ce9 4c 45 53 53 40 ; &38 : "LESS@" &5cee 4c 45 41 44 40 ; &39 : "LEAD@" &5cf3 54 48 45 20 40 ; &3a : "THE @" &5cf8 41 4e 44 20 40 ; &3b : "AND @" &5cfd 4e 27 54 20 40 ; &3c : "N'T @" &5d02 57 49 44 45 40 ; &3d : "WIDE@" &5d07 46 4f 52 4d 40 ; &3e : "FORM@" &5d0c 42 41 53 45 40 ; &3f : "BASE@" &5d11 54 52 45 45 40 ; &40 : "TREE@" &5d16 53 4c 4f 50 40 ; &41 : "SLOP@" &5d1b 57 4f 4f 44 40 ; &42 : "WOOD@" &5d20 52 41 49 4c 40 ; &43 : "RAIL@" &5d25 44 4f 4f 52 40 ; &44 : "DOOR@" &5d2a 59 4f 55 40 ; &45 : "YOU@" &5d2e 53 45 45 40 ; &46 : "SEE@" &5d32 54 4f 20 40 ; &47 : "TO @" &5d36 49 4e 20 40 ; &48 : "IN @" &5d3a 4f 46 20 40 ; &49 : "OF @" &5d3e 4f 4e 20 40 ; &4a : "ON @" &5d42 57 41 59 40 ; &4b : "WAY@" &5d46 54 48 45 40 ; &4c : "THE@" &5d4a 41 4e 44 40 ; &4d : "AND@" &5d4e 52 55 4e 40 ; &4e : "RUN@" &5d52 41 54 20 40 ; &4f : "AT @" &5d56 4f 55 54 40 ; &50 : "OUT@" &5d5a 41 52 45 40 ; &51 : "ARE@" &5d5e 52 45 44 40 ; &52 : "RED@" &5d62 4f 55 52 40 ; &53 : "OUR@" &5d66 49 4f 52 40 ; &54 : "IOR@" &5d6a 49 4e 47 40 ; &55 : "ING@" &5d6e 47 48 54 40 ; &56 : "GHT@" &5d72 4f 55 53 40 ; &57 : "OUS@" &5d76 49 4f 4e 40 ; &58 : "ION@" &5d7a 45 20 40 ; &59 : "E @" &5d7d 4e 20 40 ; &5a : "N @" &5d80 54 20 40 ; &5b : "T @" &5d83 44 20 40 ; &5c : "D @" &5d86 41 20 40 ; &5d : "A @" &5d89 59 20 40 ; &5e : "Y @" &5d8c 52 20 40 ; &5f : "R @" &5d8f 53 20 40 ; &60 : "S @" &5d92 49 20 40 ; &61 : "I @" &5d95 57 20 40 ; &62 : "W @" &5d98 4d 20 40 ; &63 : "M @" &5d9b 54 48 40 ; &64 : "TH@" &5d9e 49 4e 40 ; &65 : "IN@" &5da1 45 52 40 ; &66 : "ER@" &5da4 52 45 40 ; &67 : "RE@" &5da7 41 4e 40 ; &68 : "AN@" &5daa 48 45 40 ; &69 : "HE@" &5dad 41 52 40 ; &6a : "AR@" &5db0 45 4e 40 ; &6b : "EN@" &5db3 54 49 40 ; &6c : "TI@" &5db6 54 45 40 ; &6d : "TE@" &5db9 41 54 40 ; &6e : "AT@" &5dbc 4f 4e 40 ; &6f : "ON@" &5dbf 48 41 40 ; &70 : "HA@" &5dc2 4f 55 40 ; &71 : "OU@" &5dc5 49 54 40 ; &72 : "IT@" &5dc8 45 53 40 ; &73 : "ES@" &5dcb 53 54 40 ; &74 : "ST@" &5dce 4f 52 40 ; &75 : "OR@" &5dd1 4e 54 40 ; &76 : "NT@" &5dd4 48 49 40 ; &77 : "HI@" &5dd7 45 41 40 ; &78 : "EA@" &5dda 56 45 40 ; &79 : "VE@" &5ddd 43 4f 40 ; &7a : "CO@" &5de0 44 45 40 ; &7b : "DE@" &5de3 52 41 40 ; &7c : "RA@" &5de6 44 4f 40 ; &7d : "DO@" &5de9 54 4f 40 ; &7e : "TO@" &5dec 4c 45 40 ; &7f : "LE@" &5def 4e 44 40 ; &80 : "ND@" &5df2 4d 41 40 ; &81 : "MA@" &5df5 53 45 40 ; &82 : "SE@" &5df8 41 4c 40 ; &83 : "AL@" &5dfb 46 4f 40 ; &84 : "FO@" &5dfe 49 53 40 ; &85 : "IS@" &5e01 4e 45 40 ; &86 : "NE@" &5e04 4c 41 40 ; &87 : "LA@" &5e07 54 41 40 ; &88 : "TA@" &5e0a 45 4c 40 ; &89 : "EL@" &5e0d 49 53 40 ; &8a : "IS@" &5e10 44 49 40 ; &8b : "DI@" &5e13 53 49 40 ; &8c : "SI@" &5e16 43 41 40 ; &8d : "CA@" &5e19 55 4e 40 ; &8e : "UN@" &5e1c 43 48 40 ; &8f : "CH@" &5e1f 4c 49 40 ; &90 : "LI@" &5e22 42 4f 40 ; &91 : "BO@" &5e25 41 4d 40 ; &92 : "AM@" &5e28 4c 4c 40 ; &93 : "LL@" &5e2b 50 52 40 ; &94 : "PR@" &5e2e 55 4d 40 ; &95 : "UM@" &5e31 42 4c 40 ; &96 : "BL@" &5e34 50 4f 40 ; &97 : "PO@" &5e37 47 45 40 ; &98 : "GE@" &5e3a 4c 4f 40 ; &99 : "LO@" &5e3d 47 48 40 ; &9a : "GH@" &5e40 52 4f 40 ; &9b : "RO@" &5e43 45 44 40 ; &9c : "ED@" &5e46 47 52 40 ; &9d : "GR@" &5e49 4f 4f 40 ; &9e : "OO@" &5e4c 4e 41 40 ; &9f : "NA@" &5e4f 53 4d 40 ; &a0 : "SM@" &5e52 4f 4d 40 ; &a1 : "OM@" &5e55 45 4d 40 ; &a2 : "EM@" &5e58 49 4c 40 ; &a3 : "IL@" &5e5b 4d 50 40 ; &a4 : "MP@" &5e5e 48 55 40 ; &a5 : "HU@" &5e61 50 45 40 ; &a6 : "PE@" &5e64 50 50 40 ; &a7 : "PP@" &5e67 50 49 40 ; &a8 : "PI@" &5e6a 48 4f 40 ; &a9 : "HO@" &5e6d 4e 4f 40 ; &aa : "NO@" &5e70 53 41 40 ; &ab : "SA@" &5e73 51 55 40 ; &ac : "QU@" &5e76 43 4b 40 ; &ad : "CK@" &5e79 4d 45 40 ; &ae : "ME@" &5e7c 54 59 40 ; &af : "TY@" &5e7f 41 49 40 ; &b0 : "AI@" &5e82 47 4f 40 ; &b1 : "GO@" &5e85 41 43 40 ; &b2 : "AC@" &5e88 41 46 40 ; &b3 : "AF@" &5e8b 45 49 40 ; &b4 : "EI@" &5e8e 45 58 40 ; &b5 : "EX@" &5e91 55 54 40 ; &b6 : "UT@" &5e94 4f 47 40 ; &b7 : "OG@" &5e97 53 57 40 ; &b8 : "SW@" &5e9a 41 44 40 ; &b9 : "AD@" &5e9d 53 4c 40 ; &ba : "SL@" &5ea0 41 4b 40 ; &bb : "AK@" &5ea3 4d 4f 40 ; &bc : "MO@" &5ea6 4d 49 40 ; &bd : "MI@" &5ea9 49 52 40 ; &be : "IR@" &5eac 53 4f 40 ; &bf : "SO@" &5eaf 45 50 40 ; &c0 : "EP@" &5eb2 57 45 40 ; &c1 : "WE@" &5eb5 47 49 40 ; &c2 : "GI@" &5eb8 54 52 40 ; &c3 : "TR@" &5ebb 42 45 40 ; &c4 : "BE@" &5ebe 50 48 40 ; &c5 : "PH@" &5ec1 41 53 40 ; &c6 : "AS@" &5ec4 45 45 40 ; &c7 : "EE@" &5ec7 45 56 40 ; &c8 : "EV@" &5eca 44 52 40 ; &c9 : "DR@" &5ecd 53 48 40 ; &ca : "SH@" &5ed0 57 48 40 ; &cb : "WH@" &5ed3 46 4c 40 ; &cc : "FL@" &5ed6 55 53 40 ; &cd : "US@" &5ed9 4f 57 40 ; &ce : "OW@" &5edc 50 4c 40 ; &cf : "PL@" &5edf 44 55 40 ; &d0 : "DU@" &5ee2 44 41 40 ; &d1 : "DA@" &5ee5 52 55 40 ; &d2 : "RU@" &5ee8 49 47 40 ; &d3 : "IG@" &5eeb 55 50 40 ; &d4 : "UP@" &5eee 42 49 40 ; &d5 : "BI@" &5ef1 42 55 40 ; &d6 : "BU@" &5ef4 42 52 40 ; &d7 : "BR@" &5ef7 46 52 40 ; &d8 : "FR@" &5efa 50 41 40 ; &d9 : "PA@" &5efd 41 59 40 ; &da : "AY@"