Rick Hanson (Saga of a Spy - The Rick Hanson Trilogy, Part 1) disassembly ========================================================================= Rick Hanson is a text adventure published by Robico Software for the BBC Micro in 1985. It was written by Mike O'Leary and Robert O'Leary, and is the first part of the Saga of a Spy trilogy, followed by Project Thesius and 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 220 rooms, 30 objects and approximately 26k of compressed text. The parser understands 133 words, including 50 verbs, which are obfuscated. There is a time limit of 2560 moves. Unused code indicates that the game was originally titled "Assassin". Game disassembly ================ ; RICK ; 003000 003000 000100 ; loader_entry_point &3000 a9 00 LDA #&00 ; PLAYER_ALIVE &3002 85 89 STA &89 ; player_state &3004 85 88 STA &88 ; text_delay &3006 85 78 STA &78 ; room_you &3008 a9 d5 LDA #&d5 &300a 85 8a STA &8a ; string_table_addresses &300c a9 41 LDA #&41 ; &41d5 = string_table_zero &300e 85 8b STA &8b ; string_table_addresses + 1 &3010 a9 11 LDA #&11 &3012 85 8c STA &8c ; string_table_addresses + 2 &3014 a9 6c LDA #&6c ; &6c11 = string_table_one &3016 85 8d STA &8d ; string_table_addresses + 3 &3018 a9 88 LDA #&88 &301a 85 8e STA &8e ; string_table_addresses + 4 &301c a9 04 LDA #&04 ; &0488 = string_table_two &301e 85 8f STA &8f ; string_table_addresses + 5 &3020 a9 89 LDA #&89 ; TELETEXT_STEADY &3022 85 7b STA &7b ; text_flashing &3024 a9 86 LDA #&86 ; TELETEXT_CYAN &3026 85 70 STA &70 ; input_colour &3028 a9 85 LDA #&85 ; TELETEXT_MAGENTA &302a 85 71 STA &71 ; highlight_colour &302c a9 83 LDA #&83 ; TELETEXT_YELLOW &302e 85 87 STA &87 ; text_colour &3030 a2 37 LDX #&37 &3032 a0 30 LDY #&30 ; &3037 = rick3_string &3034 4c f7 ff JMP &fff7 ; OSCLI # *RUN RICK3 ; rick3_string &3037 52 2e 20 52 49 43 4b 33 0d ; "R. RICK3" ; unused # &3040 - &30ff is a copy of &2840 - &28ff from RICK3 &3040 16 #&16 &3041 d0 e4 BNE &3027 &3043 ad 44 15 LDA &1544 ; object_locations + &16 (OBJECT_ROPE) &3046 cd 0f 15 CMP &150f ; player_room &3049 f0 03 BEQ &304e &304b 4c ac 1e JMP &1eac ; you_can't_see_it &304e ad 03 15 LDA &1503 ; rope_tied_state &3051 c9 85 CMP #&85 ; string_185 : "the hook lodges in a crevice above the ledge and the rope hangs down, invitingly! " &3053 d0 d2 BNE &3027 &3055 ad e2 14 LDA &14e2 ; opponent_room &3058 cd 0f 15 CMP &150f ; player_room &305b f0 0b BEQ &3068 &305d a2 8a LDX #&8a ; ROOM_8a ; "high up the face of the cliff" &305f 8e 0f 15 STX &150f ; player_room &3062 20 a1 27 JSR &27a1 ; write_string_from_table_one_without_punctuation_then_newline &3065 4c 6a 15 JMP &156a ; handle_look &3068 a2 32 LDX #&32 ; string_132 : "The mouse darts past you up the rope, gnaws through it and you plummet to the ground!" &306a 4c 8b 18 JMP &188b ; kill_player_after_writing_string &306d 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &3070 c0 ff CPY #&ff ; WORD_NONE &3072 d0 01 BNE &3075 &3074 60 RTS &3075 c9 03 CMP #&03 ; WORD_OBJECT &3077 f0 03 BEQ &307c &3079 4c 99 1c JMP &1c99 ; you_can't_do_that &307c bd 2e 15 LDA &152e,X ; object_locations &307f c9 fe CMP #&fe ; ROOM_WEARING &3081 b0 08 BCS &308b &3083 cd 0f 15 CMP &150f ; player_room &3086 f0 03 BEQ &308b &3088 4c ac 1e JMP &1eac ; you_can't_see_it &308b e0 16 CPX #&16 ; OBJECT_ROPE &308d f0 03 BEQ &3092 &308f 4c 9d 1a JMP &1a9d ; write_ok &3092 ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &3095 c9 01 CMP #&01 ; &16b - &16a : string_16b : "is attached to a bell. " &3097 d0 03 BNE &309c &3099 4c 20 1f JMP &1f20 ; pull_rope &309c a9 00 LDA #&00 &309e 8d 03 15 STA &1503 ; rope_tied_state &30a1 4c 9d 1a JMP &1a9d ; write_ok &30a4 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &30a7 c0 ff CPY #&ff ; WORD_NONE &30a9 f0 c9 BEQ &3074 &30ab c9 03 CMP #&03 ; WORD_OBJECT &30ad d0 ca BNE &3079 &30af bd 2e 15 LDA &152e,X ; object_locations &30b2 c9 fe CMP #&fe ; ROOM_WEARING &30b4 b0 08 BCS &30be &30b6 cd 0f 15 CMP &150f ; player_room &30b9 f0 03 BEQ &30be &30bb 4c ac 1e JMP &1eac ; you_can't_see_it &30be e0 16 CPX #&16 ; OBJECT_ROPE &30c0 d0 b7 BNE &3079 &30c2 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &30c5 c0 ff CPY #&ff ; WORD_NONE &30c7 f0 ab BEQ &3074 &30c9 c9 03 CMP #&03 ; WORD_OBJECT &30cb d0 ac BNE &3079 &30cd bd 2e 15 LDA &152e,X ; object_locations &30d0 c9 ff CMP #&ff ; ROOM_CARRYING &30d2 f0 03 BEQ &30d7 &30d4 4c 70 1f JMP &1f70 ; you're_not_holding_the_object &30d7 e0 14 CPX #&14 ; OBJECT_RAZOR &30d9 d0 9e BNE &3079 &30db ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &30de c9 01 CMP #&01 ; &16b - &16a : string_16b : "is attached to a bell. " &30e0 f0 0a BEQ &30ec &30e2 a2 94 LDX #&94 ; string_194 : "You cut the rope into smaller and smaller pieces and throw them away! " &30e4 a9 fc LDA #&fc ; ROOM_DESTROYED &30e6 8d 44 15 STA &1544 ; object_locations + &16 (OBJECT_ROPE) &30e9 4c 55 16 JMP &1655 ; write_string_and_newline &30ec a2 93 LDX #&93 ; string_193 : "You cut the rope and a long piece lands at your feet. " &30ee a9 02 LDA #&02 ; &16c - &16a : string_16c : "is long and could be useful! " &30f0 8d 26 15 STA &1526 ; object_states + &16 (OBJECT_ROPE) &30f3 4c 55 16 JMP &1655 ; write_string_and_newline &30f6 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &30f9 c0 ff CPY #&ff ; WORD_NONE &30fb d0 01 BNE &30fe &30fd 60 RTS &30fe c9 04 CMP #&04 ; WORD_NOUN ; RICK2 ; 000400 000400 000100 ; verb_handler_addresses_low_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0400 13 ea 6a 78 72 7f 08 1b 07 a9 47 17 f6 84 b5 f8 ; &00 &0410 a0 6f c2 48 fc 41 32 a2 f9 da 39 b1 ea 12 a4 5e ; &10 &0420 b4 37 2f 84 9f 8e 0a a5 6d e8 4e ee 86 ab ee 03 ; &20 &0430 a7 cf d4 d9 de e3 e8 ed f2 f7 fc 01 95 a8 2e 52 ; &30 &0440 a4 72 14 00 ; &40 # &43 is unused ; verb_handler_addresses_high_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0444 22 20 15 1c 1c 26 27 28 23 1c 29 24 28 1a 2a 2a ; &00 &0454 29 1e 21 1f 20 20 23 20 23 1f 2a 25 25 26 28 2c ; &10 &0464 22 2c 2b 2b 2a 22 2c 0c 28 0c 25 24 25 0c 27 28 ; &20 &0474 16 16 16 16 16 16 16 16 16 16 16 17 1a 1a 0c 0c ; &30 &0484 23 0c 2a 20 ; &40 ; string_table_two ; string_200 &0488 fd 45 fb 8d 3c 46 fb 72 f8 db ; "You can't see it! " ; string_201 &0492 fd 45 5f ee e6 e4 60 de 9b ee 60 3b 45 fb e7 3b ; "Your skis cross and you land flat on your face! " &04a2 cc 4f 4a 45 5f e1 b2 e0 f8 db ; string_202 &04ac fd 45 fc ed 59 aa 5b a9 e7 df 55 fb 4c db ; "You're not holding the" ; string_203 &04ba fd 9e eb ee f8 96 9e 5c e4 60 ee eb f0 ed ef 55 ; "Oops! Blood is spurting from the gaping wound in your neck! " &04ca fb 17 3a e2 dc eb 55 fb f2 71 e9 5c 48 45 5f 86 &04da ad f8 db ; unused &04dd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &04ed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &04fd 00 00 00 ; RICK1 ; 0008c0 0008c0 000440 ; move_to_next_byte_of_text &08c0 a9 01 LDA #&01 &08c2 18 CLC &08c3 65 62 ADC &62 ; text_address_low &08c5 85 62 STA &62 ; text_address_low &08c7 90 02 BCC &08cb ; leave &08c9 e6 63 INC &63 ; text_address_high &08cb 60 RTS ; write_string &08cc 48 PHA &08cd 86 7d STX &7d ; string_id &08cf 98 TYA &08d0 48 PHA &08d1 a5 80 LDA &80 ; string_table_id &08d3 0a ASL A &08d4 a8 TAY &08d5 b9 8a 00 LDA &008a,Y ; string_table_addresses_low &08d8 85 62 STA &62 ; text_address_low &08da b9 8b 00 LDA &008b,Y ; string_table_addresses_high &08dd 85 63 STA &63 ; text_address_high &08df a0 00 LDY #&00 &08e1 e0 00 CPX #&00 &08e3 f0 17 BEQ &08fc ; skip_finding_string &08e5 a2 00 LDX #&00 ; find_string_loop &08e7 20 c0 08 JSR &08c0 ; move_to_next_byte_of_text &08ea b1 62 LDA (&62),Y ; text_address &08ec c9 db CMP #&db ; TEXT_SEPARATOR # &db indicates end of string &08ee d0 f7 BNE &08e7 ; find_string_loop &08f0 e8 INX &08f1 e4 7d CPX &7d ; string_id &08f3 d0 f2 BNE &08e7 ; find_string_loop &08f5 20 c0 08 JSR &08c0 ; move_to_next_byte_of_text &08f8 a2 00 LDX #&00 &08fa a0 00 LDY #&00 ; skip_finding_string ; add_string_to_buffer_loop &08fc b1 62 LDA (&62),Y ; text_address &08fe c9 db CMP #&db ; TEXT_SEPARATOR &0900 d0 03 BNE &0905 ; not_separator &0902 4c 95 09 JMP &0995 ; end_string ; not_separator &0905 b0 03 BCS &090a ; not_fragment &0907 4c 8b 09 JMP &098b ; is_fragment # &00 - &da are fragments ; not_fragments &090a c9 f6 CMP #&f6 ; TEXT_PERIOD_AND_SPACE # &dc - &f5 are letters A - Z &090c 90 32 BCC &0940 ; is_letter &090e f0 36 BEQ &0946 ; is_period_and_space # &f6 is ". " &0910 c9 f7 CMP #&f7 ; TEXT_QUESTION_MARK_AND_SPACE # &f7 is "? " &0912 f0 42 BEQ &0956 ; is_question_mark_and_space &0914 c9 f8 CMP #&f8 ; TEXT_EXCLAMATION_MARK_AND_SPACE # &f8 is "! " &0916 f0 4e BEQ &0966 ; is_exclamation_mark_and_space &0918 c9 f9 CMP #&f9 ; TEXT_COMMA_AND_SPACE # &f9 is ", " &091a f0 34 BEQ &0950 ; is_comma_and_space &091c c9 fa CMP #&fa ; TEXT_COLON_AND_SPACE # &fa is ": " &091e f0 3e BEQ &095e ; is_colon_and_space &0920 c9 fb CMP #&fb ; TEXT_SPACE # &fb is " " &0922 f0 47 BEQ &096b ; is_space &0924 c9 fc CMP #&fc ; TEXT_APOSTROPHE # &fc is "'" &0926 f0 48 BEQ &0970 ; is_apostrophe &0928 c9 fd CMP #&fd ; TEXT_UPPERCASE # &fd makes next word start with uppercase letter &092a f0 49 BEQ &0975 ; is_uppercase &092c c9 ff CMP #&ff ; TEXT_QUOTE # &ff is """ &092e f0 4d BEQ &097d ; is_quote &0930 c9 fe CMP #&fe ; TEXT_FLASH # &fe toggles flashing text &0932 f0 4e BEQ &0982 ; is_flash ; add_character_to_buffer &0934 9d 00 06 STA &0600,X ; text_buffer &0937 a9 7b LDA #&7b ; OFFSET_LOWERCASE # Subsequent characters are lowercase &0939 85 86 STA &86 ; letter_byte_offset ; next_character &093b e8 INX &093c c8 INY &093d 4c fc 08 JMP &08fc ; add_string_to_buffer_loop ; is_letter &0940 38 SEC # Convert &dc - &f5 to &61 - &7a ("a" - "z") if &7b &0941 e5 86 SBC &86 ; letter_byte_offset # or &41 - &5a ("A" - "Z") if &9b &0943 4c 34 09 JMP &0934 ; add_character_to_buffer ; is_period_and_space &0946 20 be 09 JSR &09be ; add_period_and_space_to_buffer ; start_new_sentence &0949 a9 9b LDA #&9b ; OFFSET_UPPERCASE &094b 85 86 STA &86 ; letter_byte_offset &094d 4c 3b 09 JMP &093b ; next_character ; is_comma_and_space &0950 20 ca 09 JSR &09ca ; add_comma_and_space_to_buffer &0953 4c 3b 09 JMP &093b ; next_character ; is_question_mark_and_space &0956 a9 3f LDA #&3f ; "?" ; add_character_and_space_then_start_new_sentence &0958 20 c0 09 JSR &09c0 ; add_character_and_space_to_buffer &095b 4c 49 09 JMP &0949 ; start_new_sentence ; is_colon_and_space &095e a9 3a LDA #&3a ; ":" &0960 20 c0 09 JSR &09c0 ; add_character_and_space_to_buffer &0963 4c 3b 09 JMP &093b ; next_character ; is_exclamation_mark_and_space &0966 a9 21 LDA #&21 ; "!" &0968 4c 58 09 JMP &0958 ; add_character_and_space_then_start_new_sentence ; is_space &096b a9 20 LDA #&20 ; " " &096d 4c 34 09 JMP &0934 ; add_character_to_buffer ; is_apostrophe &0970 a9 27 LDA #&27 ; "'" &0972 4c 34 09 JMP &0934 ; add_character_to_buffer ; is_uppercase &0975 a9 9b LDA #&9b ; OFFSET_UPPERCASE &0977 85 86 STA &86 ; letter_byte_offset &0979 ca DEX &097a 4c 3b 09 JMP &093b ; next_character ; is_quote &097d a9 22 LDA #&22 ; """ &097f 4c 34 09 JMP &0934 ; add_character_to_buffer ; is_flash &0982 a5 7b LDA &7b ; text_flashing &0984 49 01 EOR #&01 ; TELETEXT_FLASH ^ TELETEXT_STEADY &0986 85 7b STA &7b ; text_flashing &0988 4c 34 09 JMP &0934 ; add_character_to_buffer ; is_fragment &098b 20 27 0a JSR &0a27 ; add_fragment_to_buffer &098e 4c 3b 09 JMP &093b ; next_character ; end_without_punctuation &0991 ca DEX &0992 4c a6 09 JMP &09a6 ; end_of_string ; end_string &0995 a5 7c LDA &7c ; text_ending &0997 f0 f8 BEQ &0991 ; end_without_punctuation &0999 c9 01 CMP #&01 ; TEXT_END_COMMA &099b f0 06 BEQ &09a3 ; end_with_comma ; end_with_period &099d 20 be 09 JSR &09be ; add_period_and_space_to_buffer &09a0 4c a6 09 JMP &09a6 ; end_of_string ; end_with_comma &09a3 20 ca 09 JSR &09ca ; add_comma_and_space_to_buffer ; end_of_string &09a6 a9 0d LDA #&0d ; CR # End buffer with carriage return &09a8 9d 01 06 STA &0601,X ; text_buffer + 1 &09ab 20 cf 09 JSR &09cf ; write_text_buffer &09ae a6 7d LDX &7d ; string_id &09b0 68 PLA &09b1 a8 TAY &09b2 68 PLA &09b3 60 RTS ; get_cursor_position &09b4 a9 86 LDA #&86 ; Get text cursor position &09b6 4c f4 ff JMP &fff4 ; OSBYTE # Leaves with cursor position in X and Y ; write_text_colour &09b9 a5 87 LDA &87 ; text_colour &09bb 4c ee ff JMP &ffee ; OSWRCH ; add_period_and_space_to_buffer &09be a9 2e LDA #&2e ; "." ; add_character_and_space_to_buffer &09c0 9d 00 06 STA &0600,X ; text_buffer &09c3 e8 INX &09c4 a9 20 LDA #&20 ; " " &09c6 9d 00 06 STA &0600,X ; text_buffer &09c9 60 RTS ; add_comma_and_space_to_buffer &09ca a9 2c LDA #&2c ; "," &09cc 4c c0 09 JMP &09c0 ; add_character_and_space_to_buffer ; write_text_buffer &09cf 20 b4 09 JSR &09b4 ; get_cursor_position &09d2 e0 00 CPX #&00 &09d4 d0 03 BNE &09d9 ; skip_colour &09d6 20 b9 09 JSR &09b9 ; write_text_colour ; skip_colour &09d9 a0 00 LDY #&00 &09db a2 00 LDX #&00 ; write_text_buffer_loop &09dd a9 00 LDA #&00 &09df 85 85 STA &85 ; word_length ; find_end_of_word &09e1 b9 00 06 LDA &0600,Y ; text_buffer &09e4 c9 0d CMP #&0d ; CR # Carriage return marks end of buffer &09e6 f0 0d BEQ &09f5 ; end_of_word &09e8 c9 20 CMP #&20 ; " " # Space marks end of word &09ea f0 09 BEQ &09f5 ; end_of_word &09ec e6 85 INC &85 ; word_length &09ee c8 INY &09ef 4c e1 09 JMP &09e1 ; find_end_of_word ; end_of_text &09f2 68 PLA &09f3 a8 TAY &09f4 60 RTS ; end_of_word &09f5 98 TYA &09f6 48 PHA &09f7 8a TXA &09f8 48 PHA &09f9 20 b4 09 JSR &09b4 ; get_cursor_position &09fc 8a TXA &09fd 18 CLC &09fe 65 85 ADC &85 ; word_length &0a00 c9 27 CMP #&27 ; 39 &0a02 b0 1a BCS &0a1e ; move_to_new_line ; write_word &0a04 68 PLA &0a05 aa TAX ; write_word_loop &0a06 bd 00 06 LDA &0600,X ; text_buffer &0a09 c9 0d CMP #&0d ; CR # Carriage return marks end of buffer &0a0b f0 e5 BEQ &09f2 ; end_of_text &0a0d 20 ee ff JSR &ffee ; OSWRCH &0a10 20 7e 0a JSR &0a7e ; delay &0a13 e8 INX &0a14 c9 20 CMP #&20 ; " " # Space marks end of word &0a16 d0 ee BNE &0a06 ; write_word_loop &0a18 68 PLA &0a19 a8 TAY &0a1a c8 INY &0a1b 4c dd 09 JMP &09dd ; write_text_buffer_loop ; move_to_new_line &0a1e 20 e7 ff JSR &ffe7 ; OSNEWL &0a21 20 b9 09 JSR &09b9 ; write_text_colour &0a24 4c 04 0a JMP &0a04 ; write_word ; add_fragment_to_buffer &0a27 85 85 STA &85 ; fragment_id &0a29 98 TYA &0a2a 48 PHA &0a2b 8a TXA &0a2c 48 PHA &0a2d a9 8d LDA #&8d &0a2f 85 6e STA &6e ; fragments_address_low &0a31 a9 78 LDA #&78 ; &788d = fragments &0a33 85 6f STA &6f ; fragments_address_high &0a35 a0 00 LDY #&00 &0a37 a2 00 LDX #&00 &0a39 a5 85 LDA &85 ; fragment_id &0a3b f0 1d BEQ &0a5a ; skip_finding_fragment ; find_fragment_in_list_loop &0a3d b1 6e LDA (&6e),Y ; fragments_address &0a3f c9 40 CMP #&40 ; "@" &0a41 f0 0e BEQ &0a51 ; end_of_fragment ; move_forward_a_byte_in_list &0a43 a9 01 LDA #&01 &0a45 18 CLC &0a46 65 6e ADC &6e ; fragments_address_low &0a48 85 6e STA &6e ; fragments_address_low &0a4a 90 f1 BCC &0a3d ; find_fragment_in_list_loop &0a4c e6 6f INC &6f ; fragments_address_high &0a4e 4c 3d 0a JMP &0a3d ; find_fragment_in_list_loop ; end_of_fragment &0a51 e8 INX &0a52 e4 85 CPX &85 ; fragment_id &0a54 f0 03 BEQ &0a59 ; found_fragment &0a56 4c 43 0a JMP &0a43 ; move_forward_a_byte_in_list ; found_fragment &0a59 c8 INY ; skip_finding_fragment &0a5a 68 PLA &0a5b aa TAX ; add_fragment_to_buffer_loop &0a5c b1 6e LDA (&6e),Y ; fragments_address &0a5e c9 40 CMP #&40 ; "@" &0a60 f0 18 BEQ &0a7a ; leave &0a62 48 PHA &0a63 a5 86 LDA &86 ; letter_byte_offset &0a65 c9 9b CMP #&9b ; OFFSET_UPPERCASE &0a67 f0 04 BEQ &0a6d ; skip_conversion &0a69 68 PLA &0a6a 09 20 ORA #&20 # Convert first character to lower case &0a6c 48 PHA ; skip_conversion &0a6d 68 PLA &0a6e 9d 00 06 STA &0600,X ; text_buffer_address &0a71 c8 INY &0a72 e8 INX &0a73 a9 7b LDA #&7b ; OFFSET_LOWERCASE &0a75 85 86 STA &86 ; letter_byte_offset &0a77 4c 5c 0a JMP &0a5c ; add_fragment_to_buffer_loop ; leave &0a7a 68 PLA &0a7b a8 TAY &0a7c ca DEX &0a7d 60 RTS ; delay &0a7e 48 PHA &0a7f a5 88 LDA &88 ; text_delay &0a81 f0 15 BEQ &0a98 ; leave &0a83 48 PHA &0a84 8a TXA &0a85 48 PHA &0a86 98 TYA &0a87 48 PHA ; delay_loop &0a88 a9 13 LDA #&13 ; Wait for vertical retrace &0a8a 20 f4 ff JSR &fff4 ; OSBYTE &0a8d c6 88 DEC &88 ; text_delay &0a8f d0 f7 BNE &0a88 ; delay_loop &0a91 68 PLA &0a92 a8 TAY &0a93 68 PLA &0a94 aa TAX &0a95 68 PLA &0a96 85 88 STA &88 ; text_delay ; leave &0a98 68 PLA &0a99 60 RTS ; initial_game_state # &0a9a - &0be5 is overwritten at &1d09 &0a9a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0aaa 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0aba 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0aca 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0ada 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0aea 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0afa 00 00 00 00 00 00 &0b00 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b20 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b30 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b40 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b50 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b60 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b70 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b80 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0b90 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0ba0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0bb0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0bc0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0bd0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 &0be0 10 10 10 10 10 10 ; filename_input_block &0be6 00 05; &0500 = filename_buffer &0be8 07 ; 7 characters maximum &0be9 41 ; "A" &0bea 5a ; "Z" ; get_filename &0beb 85 66 STA &66 &0bed 20 e7 ff JSR &ffe7 ; OSNEWL &0bf0 20 e7 ff JSR &ffe7 ; OSNEWL ; get_filename_loop &0bf3 a5 66 LDA &66 &0bf5 20 ee ff JSR &ffee ; OSWRCH &0bf8 a9 3a LDA #&3a ; ":" &0bfa 20 ee ff JSR &ffee ; OSWRCH &0bfd a5 71 LDA &71 ; highlight_colour &0bff 20 ee ff JSR &ffee ; OSWRCH &0c02 a9 00 LDA #&00 ; Input line of text &0c04 a2 e6 LDX #&e6 &0c06 a0 0b LDY #&0b ; &0be6 = filename_input_block &0c08 20 f1 ff JSR &fff1 ; OSWORD # Get input from player into &0500, filename_buffer &0c0b c0 00 CPY #&00 # Y is length of input &0c0d f0 e4 BEQ &0bf3 ; get_filename_loop &0c0f 60 RTS ; file_block &0c10 00 05 ; filename &0500 = filename_buffer &0c12 00 14 00 00 ; load address &1400 = game_state &0c16 00 14 00 00 ; execution address &1400 = game_state &0c1a 00 00 00 00 # &0c1a - &0c1f is overwritten &0c1e 00 00 00 00 ; save_addresses &0c22 00 14 00 00 ; start address &1400 = game_state &0c26 4c 15 ; end address &154c = end_of_game_state ; load_addresses &0c28 4c 01 00 00 ; length &014c = end_of_game_state - game_state &0c2c 00 00 ; handle_save &0c2e 20 76 23 JSR &2376 ; are_you_sure # Leaves with zero if player said yes &0c31 c0 00 CPY #&00 &0c33 f0 01 BEQ &0c36 ; save_position &0c35 60 RTS ; save_position &0c36 a9 53 LDA #&53 ; "S" &0c38 20 eb 0b JSR &0beb ; get_filename &0c3b a2 05 LDX #&05 ; use_save_addresses_loop &0c3d bd 22 0c LDA &0c22,X ; save_addresses &0c40 9d 1a 0c STA &0c1a,X ; file_block + 10 &0c43 ca DEX &0c44 10 f7 BPL &0c3d ; use_save_addresses_loop &0c46 a9 00 LDA #&00 ; save a file ; call_osfile_on_file_block &0c48 a2 10 LDX #&10 &0c4a a0 0c LDY #&0c ; &0c10 = file_block &0c4c 20 dd ff JSR &ffdd ; OSFILE &0c4f 4c e7 ff JMP &ffe7 ; OSNEWL ; handle_restore &0c52 20 76 23 JSR &2376 ; are_you_sure # Leaves with zero if player said yes &0c55 c0 00 CPY #&00 &0c57 f0 01 BEQ &0c5a ; restore_position &0c59 60 RTS ; restore_position &0c5a a9 52 LDA #&52 ; "R" &0c5c 20 eb 0b JSR &0beb ; get_filename &0c5f a2 05 LDX #&05 ; use_load_addresses_loop &0c61 bd 28 0c LDA &0c28,X ; load_addresses &0c64 9d 1a 0c STA &0c1a,X ; file_block + 10 &0c67 ca DEX &0c68 10 f7 BPL &0c61 ; use_load_addresses_loop &0c6a a9 ff LDA #&ff ; load a file &0c6c 20 48 0c JSR &0c48 ; call_osfile_on_file_block &0c6f 4c 6a 15 JMP &156a ; handle_look ; handle_sleep &0c72 ad 0f 15 LDA &150f ; player_room &0c75 c9 41 CMP #&41 ; ROOM_41 ; "in Bedroom Four" &0c77 f0 0d BEQ &0c86 ; in_bedroom_four &0c79 ad 3a 15 LDA &153a ; object_locations + &0c (OBJECT_LETTER) &0c7c c9 fd CMP #&fd ; ROOM_HIDDEN &0c7e d0 03 BNE &0c83 ; to_write_ok &0c80 ce 3a 15 DEC &153a ; object_locations + &0c (OBJECT_LETTER) # Set to ROOM_DESTROYED ; to_write_ok &0c83 4c 9d 1a JMP &1a9d ; write_ok ; in_bedroom_four &0c86 ad 3a 15 LDA &153a ; object_locations + &0c (OBJECT_LETTER) &0c89 c9 fd CMP #&fd ; ROOM_HIDDEN &0c8b d0 f6 BNE &0c83 ; to_write_ok &0c8d a9 41 LDA #&41 ; ROOM_41 ; "in Bedroom Four" &0c8f 8d 3a 15 STA &153a ; object_locations + &0c (OBJECT_LETTER) &0c92 a9 02 LDA #&02 ; &14b - &149 : string_14b : "has the hymn numbers eighteen, nine and seventy. " &0c94 8d 18 15 STA &1518 ; object_states + &8 (OBJECT_FRAME) &0c97 8d 45 14 STA &1445 ; room_states + &45 &0c9a 20 a2 16 JSR &16a2 ; use_string_table_one &0c9d 20 8e 16 JSR &168e ; end_string_without_punctuation &0ca0 a2 a2 LDX #&a2 ; string_1a2 : "A letter is pushed under the door!" &0ca2 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_pray ; to_nothing_happens &0ca5 20 8e 16 JSR &168e ; end_string_without_punctuation &0ca8 4c a9 22 JMP &22a9 ; nothing_happens ; handle_wax &0cab 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &0cae c0 ff CPY #&ff ; WORD_NONE &0cb0 d0 01 BNE &0cb3 ; handle_wax_word ; leave &0cb2 60 RTS ; handle_wax_word &0cb3 c9 03 CMP #&03 ; WORD_OBJECT &0cb5 f0 03 BEQ &0cba ; handle_wax_object ; to_you_can't_do_that &0cb7 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_wax_object &0cba bd 2e 15 LDA &152e,X ; object_locations &0cbd c9 ff CMP #&ff ; ROOM_CARRYING &0cbf d0 06 BNE &0cc7 ; to_you're_not_holding_the_object &0cc1 e0 18 CPX #&18 ; OBJECT_SKIS &0cc3 f0 05 BEQ &0cca ; wax_skis &0cc5 d0 f0 BNE &0cb7 ; to_you_can't_do_that # Always branches ; to_you're_not_holding_the_object &0cc7 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; wax_skis &0cca 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &0ccd c0 ff CPY #&ff ; WORD_NONE &0ccf f0 e1 BEQ &0cb2 ; leave &0cd1 c9 03 CMP #&03 ; WORD_OBJECT &0cd3 d0 e2 BNE &0cb7 ; to_you_can't_do_that &0cd5 e0 12 CPX #&12 ; OBJECT_POLISH &0cd7 d0 de BNE &0cb7 ; to_you_can't_do_that ; wax_skis_with_polish &0cd9 ad 40 15 LDA &1540 ; object_locations + &12 (OBJECT_POLISH) &0cdc c9 ff CMP #&ff ; ROOM_CARRYING &0cde d0 e7 BNE &0cc7 ; to_you're_not_holding_the_object &0ce0 a9 02 LDA #&02 ; &172 - &170 : string_172 : "are well waxed and ready for use. " &0ce2 8d 28 15 STA &1528 ; object_states + &18 (OBJECT_SKIS) &0ce5 4c 9d 1a JMP &1a9d ; write_ok ; handle_ring &0ce8 ad 0f 15 LDA &150f ; player_room &0ceb c9 48 CMP #&48 ; ROOM_48 ; "in the church steeple" &0ced d0 c8 BNE &0cb7 ; to_you_can't_do_that &0cef ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &0cf2 c9 01 CMP #&01 ; &16b - &16a : string_16b : "is attached to a bell. " &0cf4 d0 c1 BNE &0cb7 ; to_you're_not_holding_the_object &0cf6 4c 20 1f JMP &1f20 ; pull_rope ; open_or_close &0cf9 00 ; object_of_verb &0cfa 00 ; open_or_close_word_value_one &0cfb 00 ; open_or_close_word_value_two &0cfc 00 ; open_or_close_word_type_one &0cfd 00 ; open_or_close_word_type_two &0cfe 00 ; door_direction &0cff 00 ; RICK3 ; 001100 001cfe 006b00 ; room_exits_count_and_nsew ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1100 93 02 21 01 21 c3 d3 42 12 32 22 12 62 81 82 02 ; &00 # ....8421 number of exits &1110 02 22 12 82 42 12 a2 e3 f4 d3 f4 52 41 d3 c2 d3 ; &10 # ...1.... set if room has exit north &1120 b3 92 c2 c2 c2 62 12 a3 f5 e3 73 32 22 01 22 f4 ; &20 # ..2..... set if room has exit south &1130 42 81 01 13 82 53 21 02 02 12 73 73 73 73 e3 41 ; &30 # .4...... set if room has exit east &1140 81 81 81 53 01 82 02 42 81 a2 e4 62 32 32 32 92 ; &40 # 8....... set if room has exit west &1150 f4 52 33 02 32 33 b3 22 42 c2 c2 c2 a2 32 92 e4 ; &50 &1160 93 01 54 63 11 73 32 b5 21 b3 c2 c2 41 81 52 34 ; &60 &1170 53 e3 d4 d4 93 a3 63 75 32 32 73 23 43 c3 01 a3 ; &70 &1180 33 33 01 01 d3 22 82 42 92 21 d3 81 42 12 22 12 ; &80 &1190 21 62 82 02 02 42 21 b3 01 01 01 01 01 22 41 52 ; &90 &11a0 82 fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ; &a0 &11b0 fc 02 02 c3 21 21 21 11 11 11 f4 f4 73 c2 c2 c3 ; &b0 &11c0 c2 92 32 62 01 c3 a2 32 33 34 11 01 02 02 c5 92 ; &c0 &11d0 52 34 62 c4 a2 01 81 41 81 01 01 d4 ; &d0 ; unused &11dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &11ec 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &11fc 00 00 00 00 ; room_exits_other_directions ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1200 20 30 00 80 00 40 00 10 20 00 20 10 00 00 20 30 ; &00 # .......1 set if room has exit northeast &1210 14 02 08 01 02 04 00 00 00 00 00 00 00 00 00 00 ; &10 # ......2. set if room has exit northwest &1220 00 00 00 00 00 00 40 40 40 00 00 00 01 80 02 00 ; &20 # .....4.. set if room has exit southeast &1230 40 00 80 0c 80 10 00 30 30 20 00 00 00 00 00 00 ; &30 # ....8... set if room has exit southwest &1240 00 00 00 10 20 10 21 08 00 00 80 00 00 00 00 00 ; &40 # ...1.... set if room has exit up &1250 00 00 01 0a 00 04 00 01 08 00 00 00 00 00 00 08 ; &50 # ..2..... set if room has exit down &1260 02 80 41 04 00 00 00 0a 00 00 00 00 00 00 00 03 ; &60 # .4...... set if room has exit in &1270 04 00 08 01 02 08 04 05 00 00 00 05 09 02 80 40 ; &70 # 8....... set if room has exit out &1280 40 40 80 80 00 08 40 80 00 00 00 00 02 04 01 08 ; &80 &1290 00 00 20 30 30 10 00 00 80 80 80 80 80 40 00 00 ; &90 &12a0 40 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ; &a0 &12b0 ff 30 30 10 00 00 00 00 00 00 00 00 00 00 00 20 ; &b0 &12c0 00 00 00 00 10 20 00 00 10 0a 00 20 30 30 13 00 ; &c0 &12d0 00 05 00 0c 00 10 00 00 00 80 20 40 ; &d0 ; unused &12dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &12ec 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &12fc 00 00 00 00 ; room_string_ids ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1300 02 08 05 06 07 03 04 09 0c 0d 0c 09 16 17 20 23 ; &00 &1310 24 24 24 24 24 24 25 26 26 26 2c 26 26 26 26 26 ; &10 &1320 26 30 31 31 31 32 34 29 2b 28 28 27 27 2f 27 2d ; &20 &1330 2e 2d 2a 25 35 36 37 38 39 38 3a 3b 3b 3b 3c 3d ; &30 &1340 3f 41 42 4b 4a 4c 4f 50 51 43 43 43 46 45 44 49 ; &40 &1350 48 47 52 7b 53 53 55 56 56 57 57 57 5b 5b 5b 5c ; &50 &1360 5d 60 5d 5d 61 61 61 6d 61 61 67 68 68 68 68 68 ; &60 &1370 76 76 76 6f 6d 6d 6f 6f 76 76 76 7f 7f 7d 7e 79 ; &70 &1380 78 77 7a 7c 80 84 81 82 83 85 86 87 89 89 8a 8b ; &80 &1390 88 8c 8d 8e 8e da 96 8f 9c 9c 9c 9c 9c a6 22 a7 ; &90 &13a0 a8 a9 a9 a9 a9 a9 a9 a9 a9 a9 a9 a9 a9 a9 a9 a9 ; &a0 &13b0 a9 aa aa ab b4 b4 b8 b7 b6 b5 ac ac ad ae ae af ; &b0 &13c0 ae b0 b0 b1 b4 b2 b3 bc bd bb bf be b9 b9 ba bb ; &c0 &13d0 bb bb bb bb bb 18 3e 97 40 1c 19 99 ; &d0 ; unused &13dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &13ec 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &13fc 00 00 00 00 ; game_state ; room_states ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1400 00 00 00 00 00 00 00 01 00 00 00 02 00 00 01 00 ; &00 &1410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &10 &1420 00 03 02 02 02 01 00 00 00 00 00 00 00 00 00 00 ; &20 &1430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &30 &1440 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ; &40 &1450 00 00 02 00 01 01 00 00 00 01 02 03 00 00 00 00 ; &50 &1460 01 00 02 01 01 03 04 00 05 02 00 01 02 03 04 04 ; &60 &1470 00 00 00 01 01 01 01 01 00 00 00 00 00 00 00 00 ; &70 &1480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &80 &1490 00 00 00 00 00 00 00 00 01 02 02 03 09 00 00 00 ; &90 &14a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &a0 &14b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &b0 &14c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &c0 &14d0 00 00 00 00 00 00 00 00 00 00 01 01 ; &d0 ; unused &14dc 00 ; bull_state &14dd 00 # One if bull has seen seat cover, two if charging ; book_collected &14de 00 # One if book has been collected ; train_tunnel_state &14df 00 # One if player is about to be killed by tunnel ; mackintosh_man_timer &14e0 00 # Turns mackintosh man has been active ; opponent_active &14e1 00 # One if mackintosh man or mouse is active ; opponent_room &14e2 00 # Room where mackintosh man or mouse is present ; opponent_id &14e3 00 # &2e for mackintosh man, &30 for mouse ; train_state &14e4 00 # Position of train under bridge ; train_guard_state &14e5 1d ; string_01d : "An aggressive looking guard strides menacingly towards you! " ; unused &14e6 00 ; jeep_state &14e7 8d ; &90 - 3 : string_190 : "There is the sound of a vehicle approaching from the west. " ; inn_state &14e8 00 # One if player has paid bartender ; door_states &14e9 00 ; DOOR_0 : ROOM_3a east # Bedroom one &14ea 00 ; DOOR_1 : ROOM_3b east, ROOM_40 west # Bedroom two &14eb 00 ; DOOR_2 : ROOM_3c east # Bedroom three &14ec 00 ; DOOR_3 : ROOM_3d east, ROOM_41 west # Bedroom four &14ed 00 ; DOOR_4 : ROOM_3e east, ROOM_42 west # Bedroom five &14ee 00 ; DOOR_5 : ROOM_3e west, ROOM_3f east # Bathroom &14ef 00 ; DOOR_6 : ROOM_86 in, ROOM_87 out # Log cabin &14f0 00 ; DOOR_7 : ROOM_9f east, ROOM_a0 west # Decontamination chamber &14f1 00 ; DOOR_8 : ROOM_c7 south, ROOM_c8 north # Central control room &14f2 00 ; DOOR_9 : ROOM_c8 south # Central control room ; room_exits &14f3 00 ; DIRECTION_NORTH &14f4 00 ; DIRECTION_SOUTH &14f5 00 ; DIRECTION_EAST &14f6 00 ; DIRECTION_WEST &14f7 00 ; DIRECTION_NORTHEAST &14f8 00 ; DIRECTION_NORTHWEST &14f9 00 ; DIRECTION_SOUTHEAST &14fa 00 ; DIRECTION_SOUTHWEST &14fb 00 ; DIRECTION_UP &14fc 00 ; DIRECTION_DOWN &14fd 00 ; DIRECTION_IN &14fe 00 ; DIRECTION_OUT ; unused &14ff 00 00 ; explosive_state &1501 00 ; object_tied_to_rope &1502 00 ; rope_tied_state &1503 00 ; general_state &1504 00 ; guards_state &1505 00 ; move_count_low &1506 00 ; move_count_high &1507 00 ; unused &1508 00 00 00 00 00 00 00 ; player_room &150f 00 ; object_states &1510 00 ; &00 (OBJECT_ALE) &1511 00 ; &01 (OBJECT_BANDIT) &1512 01 ; &02 (OBJECT_BOMB) &1513 00 ; &03 (OBJECT_BOOK) &1514 01 ; &04 (OBJECT_BOTTLE) &1515 00 ; &05 (OBJECT_BULLET) &1516 01 ; &06 (OBJECT_CORPSE) &1517 00 ; &07 (OBJECT_SEAT_COVER) &1518 01 ; &08 (OBJECT_FRAME) &1519 01 ; &09 (OBJECT_GUN) &151a 00 ; &0a (OBJECT_HOOK) &151b 00 ; &0b (OBJECT_IMPI) &151c 00 ; &0c (OBJECT_LETTER) &151d 01 ; &0d (OBJECT_MATCH) &151e 01 ; &0e (OBJECT_MIRROR) &151f 00 ; &0f (OBJECT_PETROL) &1520 00 ; &10 (OBJECT_PHOTOGRAPH) &1521 00 ; &11 (OBJECT_PORK_PIE) &1522 00 ; &12 (OBJECT_POLISH) &1523 00 ; &13 (OBJECT_QUHUT) &1524 00 ; &14 (OBJECT_RAZOR) &1525 01 ; &15 (OBJECT_RECORDER) &1526 01 ; &16 (OBJECT_ROPE) &1527 00 ; &17 (OBJECT_SCREWDRIVER) &1528 01 ; &18 (OBJECT_SKIS) &1529 00 ; &19 (OBJECT_SPANNER) &152a 00 ; &1a (OBJECT_SUIT) &152b 00 ; &1b (OBJECT_TYRE) &152c 00 ; &1c (OBJECT_TROWEL) &152d 01 ; &1d (OBJECT_UNIFORM) ; object_locations &152e fd ; &00 (OBJECT_ALE) : ROOM_HIDDEN &152f 34 ; &01 (OBJECT_BANDIT) : ROOM_34 ; "in the entrance passage of the tavern" &1530 fd ; &02 (OBJECT_BOMB) : ROOM_HIDDEN &1531 fd ; &03 (OBJECT_BOOK) : ROOM_HIDDEN &1532 fd ; &04 (OBJECT_BOTTLE) : ROOM_HIDDEN &1533 d3 ; &05 (OBJECT_BULLET) : ROOM_d3 ; "amongst the enormous nuclear missiles" &1534 fd ; &06 (OBJECT_CORPSE) : ROOM_HIDDEN &1535 61 ; &07 (OBJECT_SEAT_COVER) : ROOM_61 ; "inside the scrapped automobile" &1536 51 ; &08 (OBJECT_FRAME) : ROOM_51 ; "at the end of the western aisle" &1537 fd ; &09 (OBJECT_GUN) : ROOM_HIDDEN &1538 32 ; &0a (OBJECT_HOOK) : ROOM_32 ; "in the Butcher's Shop" &1539 19 ; &0b (OBJECT_IMPI) : ROOM_19 ; "in a closed in, cobbled street" &153a fd ; &0c (OBJECT_LETTER) : ROOM_HIDDEN &153b 96 ; &0d (OBJECT_MATCH) : ROOM_96 ; "hidden in the thick undergrowth" &153c 3f ; &0e (OBJECT_MIRROR) : ROOM_3f ; "in a small, tiled bathroom" &153d 53 ; &0f (OBJECT_PETROL) : ROOM_53 ; "on the concrete forecourt of a petrol station" &153e 88 ; &10 (OBJECT_PHOTOGRAPH) : ROOM_88 ; "by the hearth" &153f 04 ; &11 (OBJECT_PORK_PIE) : ROOM_04 ; "in the buffet" &1540 02 ; &12 (OBJECT_POLISH) : ROOM_02 ; "in the waiting room" &1541 fd ; &13 (OBJECT_QUHUT) : ROOM_HIDDEN &1542 1c ; &14 (OBJECT_RAZOR) : ROOM_1c ; "in a closed in, cobbled street" &1543 03 ; &15 (OBJECT_RECORDER) : ROOM_03 ; "in the telephone booth" &1544 48 ; &16 (OBJECT_ROPE) : ROOM_48 ; "in the church steeple" &1545 b6 ; &17 (OBJECT_SCREWDRIVER) : ROOM_b6 ; "in a storeroom" &1546 89 ; &18 (OBJECT_SKIS) : ROOM_89 ; "in the alcove" &1547 0d ; &19 (OBJECT_SPANNER) : ROOM_0d ; "inside the workmen's hut" &1548 fe ; &1a (OBJECT_SUIT) : ROOM_WEARING &1549 62 ; &1b (OBJECT_TYRE) : ROOM_62 ; "in the dreary wastelands" &154a 82 ; &1c (OBJECT_TROWEL) : ROOM_82 ; "in the wooden shed" &154b fd ; &1d (OBJECT_UNIFORM) : ROOM_HIDDEN ; end_of_game_state ; object_string_ids &154c 35 ; &00 : string_135 : "pool of ale" &154d 37 ; &01 : string_137 : "one armed bandit" &154e 39 ; &02 : string_139 : "bomb" &154f 3c ; &03 : string_13c : "leather bound book" &1550 3e ; &04 : string_13e : "bottle" &1551 42 ; &05 : string_142 : "bullet" &1552 44 ; &06 : string_144 : "corpse" &1553 47 ; &07 : string_147 : "red seat cover" &1554 49 ; &08 : string_149 : "brass frame" &1555 4c ; &09 : string_14c : "gun" &1556 4f ; &0a : string_14f : "butcher's hook" &1557 51 ; &0b : string_151 : "Impi" &1558 53 ; &0c : string_153 : "letter" &1559 55 ; &0d : string_155 : "match" &155a 58 ; &0e : string_158 : "mirror" &155b 5b ; &0f : string_15b : "puddle of petrol" &155c 5d ; &10 : string_15d : "charred photograph" &155d 5f ; &11 : string_15f : "pork pie" &155e 61 ; &12 : string_161 : "tin of floor polish" &155f 63 ; &13 : string_163 : "Quhut" &1560 65 ; &14 : string_165 : "razor" &1561 67 ; &15 : string_167 : "tape recorder" &1562 6a ; &16 : string_16a : "rope" &1563 6e ; &17 : string_16e : "screwdriver" &1564 70 ; &18 : string_170 : "pair of skis" &1565 73 ; &19 : string_173 : "spanner" &1566 75 ; &1a : string_175 : "suit" &1567 77 ; &1b : string_177 : "tyre" &1568 79 ; &1c : string_179 : "trowel" &1569 7b ; &1d : string_17b : "uniform" ; handle_look &156a 20 af 15 JSR &15af ; populate_room_exits &156d ae 0f 15 LDX &150f ; player_room &1570 bd 00 13 LDA &1300,X ; room_string_ids &1573 85 79 STA &79 ; room_string_id &1575 bd 00 14 LDA &1400,X ; room_states &1578 85 7a STA &7a ; room_string_offset &157a 20 8e 16 JSR &168e ; end_string_without_punctuation &157d 85 80 STA &80 ; string_table_id &157f 85 88 STA &88 ; text_delay &1581 a5 78 LDA &78 ; room_you &1583 49 01 EOR #&01 &1585 85 78 STA &78 ; room_you &1587 aa TAX &1588 20 cc 08 JSR &08cc ; write_string # Write "You are" or "You're" &158b a6 79 LDX &79 ; room_string_id &158d a5 7a LDA &7a ; room_string_offset &158f f0 08 BEQ &1599 ; skip_part &1591 20 cc 08 JSR &08cc ; write_string # Write first part of room description &1594 18 CLC &1595 8a TXA &1596 65 7a ADC &7a ; room_string_offset &1598 aa TAX ; skip_part &1599 20 93 16 JSR &1693 ; end_string_with_period &159c 20 cc 08 JSR &08cc ; write_string # Write second or first part of room description &159f 20 08 1a JSR &1a08 ; list_room_objects &15a2 4c 1b 16 JMP &161b ; list_room_exits ; move_to_next_room_data &15a5 18 CLC &15a6 65 64 ADC &64 ; room_data_address_low &15a8 85 64 STA &64 ; room_data_address_low &15aa 90 02 BCC &15ae ; leave &15ac e6 65 INC &65 ; room_data_address_high ; leave &15ae 60 RTS ; populate_room_exits &15af a2 00 LDX #&00 &15b1 a9 52 LDA #&52 &15b3 85 64 STA &64 ; room_data_address_low &15b5 a9 3f LDA #&3f ; &3f52 = room_exit_data &15b7 85 65 STA &65 ; room_data_address_high ; find_room_loop &15b9 ec 0f 15 CPX &150f ; player_room &15bc f0 0c BEQ &15ca ; found_room &15be bd 00 11 LDA &1100,X ; room_exits_count_and_nsew &15c1 29 0f AND #&0f # Low nibble is number of exits &15c3 20 a5 15 JSR &15a5 ; move_to_next_room_data &15c6 e8 INX &15c7 4c b9 15 JMP &15b9 ; find_room_loop ; found_room &15ca bd 00 11 LDA &1100,X ; room_exits_count_and_nsew &15cd 29 0f AND #&0f # Low nibble is number of exits &15cf 85 77 STA &77 ; number_of_exits &15d1 c6 77 DEC &77 ; number_of_exits &15d3 a9 0b LDA #&0b # For each direction, &15d5 85 83 STA &83 ; exit_offset &15d7 bd 00 12 LDA &1200,X ; room_exits_other_directions ; populate_room_exits_loop &15da 0a ASL A &15db 48 PHA &15dc 90 1e BCC &15fc ; no_exit # bit set if room has an exit in that direction &15de a4 77 LDY &77 ; number_of_exits &15e0 c6 77 DEC &77 ; number_of_exits &15e2 b1 64 LDA (&64),Y ; room_data_address # If so, get byte of room data for exit location ; set_room_exit &15e4 a4 83 LDY &83 ; exit_offset &15e6 99 f3 14 STA &14f3,Y ; room_exits &15e9 68 PLA &15ea 88 DEY &15eb 30 14 BMI &1601 ; leave &15ed 84 83 STY &83 ; exit_offset &15ef c0 03 CPY #&03 &15f1 f0 03 BEQ &15f6 ; use_nsew_exits &15f3 4c da 15 JMP &15da ; populate_room_exits_loop ; use_nsew_exits &15f6 bd 00 11 LDA &1100,X ; room_exits_count_and_nsew &15f9 4c da 15 JMP &15da ; populate_room_exits_loop ; no_exit &15fc a9 ff LDA #&ff ; EXIT_NONE # Otherwise, &ff to indicate no exit &15fe 4c e4 15 JMP &15e4 ; set_room_exit ; leave &1601 60 RTS ; conditionally_write_string_X_and_and &1602 a5 7c LDA &7c ; text_ending &1604 c9 02 CMP #&02 ; TEXT_END_PERIOD &1606 f0 12 BEQ &161a ; leave &1608 20 8e 16 JSR &168e ; end_string_without_punctuation &160b 8a TXA &160c 48 PHA &160d 20 cc 08 JSR &08cc ; write_string &1610 a2 0c LDX #&0c ; string_10c : " and " &1612 20 cc 08 JSR &08cc ; write_string &1615 68 PLA &1616 aa TAX &1617 20 93 16 JSR &1693 ; end_string_with_period ; leave &161a 60 RTS ; list_room_exits &161b ac 0f 15 LDY &150f ; player_room &161e c0 db CPY #&db ; ROOM_db ; "standing on a long, straight road" &1620 f0 09 BEQ &162b ; is_room_db &1622 c0 d5 CPY #&d5 ; ROOM_d5 ; "on the pavement" &1624 90 0c BCC &1632 ; list_exits &1626 c0 d9 CPY #&d9 ; ROOM_d9 ; "in the Guard's Van" &1628 b0 08 BCS &1632 ; list_exits ; leave # Don't list exits in deadly rooms &162a 60 RTS ; is_room_db # "standing on a long, straight road" &162b ad db 14 LDA &14db ; room_states + &db &162e c9 01 CMP #&01 ; &09a - &099 : string_09a : "all is quiet" &1630 f0 f8 BEQ &162a ; leave # Don't list exits if jeep hasn't been destroyed ; list_exits &1632 20 8e 16 JSR &168e ; end_string_without_punctuation &1635 20 a2 16 JSR &16a2 ; use_string_table_one &1638 b9 00 11 LDA &1100,Y ; room_exits_count_and_nsew &163b 29 0f AND #&0f # Low nibble is number of exits &163d 85 77 STA &77 ; number_of_exits_remaining &163f c9 01 CMP #&01 &1641 f0 3a BEQ &167d ; single_exit &1643 a2 0d LDX #&0d ; string_10d : "There are visible exits " &1645 20 cc 08 JSR &08cc ; write_string &1648 c0 73 CPY #&73 ; ROOM_73 ; "in a lush meadow" &164a d0 0f BNE &165b ; skip_override &164c ad 73 14 LDA &1473 ; room_states + &73 &164f c9 02 CMP #&02 ; string_071 - string_06f : "the bull has cleared a way to the farmhouse" &1651 f0 08 BEQ &165b ; skip_override # Hide west exit if bull hasn't cleared it &1653 a2 2d LDX #&2d ; string_12d : "north, east and northeast. " ; write_string_and_newline &1655 20 cc 08 JSR &08cc ; write_string &1658 4c e7 ff JMP &ffe7 ; OSNEWL ; skip_override &165b 20 98 16 JSR &1698 ; end_string_with_comma ; list_all_exits &165e a2 00 LDX #&00 ; list_exits_loop &1660 bd f3 14 LDA &14f3,X ; room_exits &1663 c9 ff CMP #&ff ; EXIT_NONE &1665 d0 08 BNE &166f ; direction_has_exit ; consider_next_direction &1667 e8 INX &1668 e0 0c CPX #&0c &166a 90 f4 BCC &1660 ; list_exits_loop &166c 4c e7 ff JMP &ffe7 ; OSNEWL ; direction_has_exit &166f a5 77 LDA &77 ; number_of_exits_remaining &1671 c9 02 CMP #&02 &1673 f0 13 BEQ &1688 ; two_exits_remaining &1675 20 cc 08 JSR &08cc ; write_string ; to_consider_next_direction &1678 c6 77 DEC &77 ; number_of_exits_remaining &167a 4c 67 16 JMP &1667 ; consider_next_direction ; single_exit &167d a2 0e LDX #&0e ; string_10e : "The only visible exit is " &167f 20 cc 08 JSR &08cc ; write_string &1682 20 93 16 JSR &1693 ; end_string_with_period &1685 4c 5e 16 JMP &165e ; list_all_exits ; two_exits_remaining &1688 20 02 16 JSR &1602 ; conditionally_write_string_X_and_and &168b 4c 78 16 JMP &1678 ; to_consider_next_direction ; end_string_without_punctuation &168e a9 00 LDA #&00 ; TEXT_END_NONE ; set_text_ending &1690 85 7c STA &7c ; text_ending &1692 60 RTS ; end_string_with_period &1693 a9 02 LDA #&02 ; TEXT_END_PERIOD &1695 4c 90 16 JMP &1690 ; set_text_ending ; end_string_with_comma &1698 a9 01 LDA #&01 ; TEXT_END_COMMA &169a 4c 90 16 JMP &1690 ; set_text_ending ; use_string_table_zero &169d a9 00 LDA #&00 ; set_string_table_id &169f 85 80 STA &80 ; string_table_id &16a1 60 RTS ; use_string_table_one &16a2 a9 01 LDA #&01 &16a4 4c 9f 16 JMP &169f ; set_string_table_id ; handle_north &16a7 a0 00 LDY #&00 ; DIRECTION_NORTH ; consider_moving_in_direction &16a9 20 a2 16 JSR &16a2 ; use_string_table_one &16ac b9 f3 14 LDA &14f3,Y ; room_exits &16af c9 ff CMP #&ff ; EXIT_NONE &16b1 d0 10 BNE &16c3 ; to_enter_room ; you_can't_go_direction &16b3 20 8e 16 JSR &168e ; end_string_without_punctuation &16b6 a2 0f LDX #&0f ; string_10f : "You can't go " &16b8 20 cc 08 JSR &08cc ; write_string &16bb 20 93 16 JSR &1693 ; end_string_with_period &16be 98 TYA &16bf aa TAX &16c0 4c 55 16 JMP &1655 ; write_string_and_newline # Write direction ; to_call_room_exit_handler &16c3 4c 42 17 JMP &1742 ; enter_room ; use_room_exit_Y &16c6 b9 f3 14 LDA &14f3,Y ; room_exits &16c9 8d 0f 15 STA &150f ; player_room &16cc 4c 6a 15 JMP &156a ; handle_look ; handle_south &16cf a0 01 LDY #&01 ; DIRECTION_SOUTH &16d1 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_east &16d4 a0 02 LDY #&02 ; DIRECTION_EAST &16d6 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_west &16d9 a0 03 LDY #&03 ; DIRECTION_WEST &16db 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_northeast &16de a0 04 LDY #&04 ; DIRECTION_NORTHEAST &16e0 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_northwest &16e3 a0 05 LDY #&05 ; DIRECTION_NORTHWEST &16e5 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_southeast &16e8 a0 06 LDY #&06 ; DIRECTION_SOUTHEAST &16ea 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_southwest &16ed a0 07 LDY #&07 ; DIRECTION_SOUTHWEST &16ef 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_up &16f2 a0 08 LDY #&08 ; DIRECTION_UP &16f4 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_down &16f7 a0 09 LDY #&09 ; DIRECTION_DOWN &16f9 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_in &16fc a0 0a LDY #&0a ; DIRECTION_IN &16fe 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; handle_out &1701 a0 0b LDY #&0b ; DIRECTION_OUT &1703 4c a9 16 JMP &16a9 ; consider_moving_in_direction ; rooms_with_exit_handlers &1706 d9 ; ROOM_d9; "in the Guard's Van" &1707 35 ; ROOM_35; "in the tavern standing next to a long, mahogany bar" &1708 73 ; ROOM_73; "in a lush meadow" &1709 97 ; ROOM_97; "crouched in a dense thicket" &170a db ; ROOM_db; "standing on a long, straight road" ; rooms_with_doors &170b 3a ; ROOM_3a; "on the upper landing" &170c 3b ; ROOM_3b; "in a long corridor on the first floor of the tavern" &170d 3c ; ROOM_3c; "in a long corridor on the first floor of the tavern" &170e 3d ; ROOM_3d; "in a long corridor on the first floor of the tavern" &170f 3e ; ROOM_3e; "at the northern end of the corridor" &1710 3f ; ROOM_3f; "in a small, tiled bathroom" &1711 40 ; ROOM_40; "in the second bedroom" &1712 41 ; ROOM_41; "in Bedroom Four" &1713 42 ; ROOM_42; "in the fifth bedroom" &1714 86 ; ROOM_86; "outside the log cabin" &1715 87 ; ROOM_87; "inside the single room of the log cabin2 &1716 9f ; ROOM_9f; "in a tiny, cylindrical room" &1717 a0 ; ROOM_a0; "in a decontamination chamber" &1718 c7 ; ROOM_c7; "in the computer room alcove" &1719 c8 ; ROOM_c8; "in the central control room" ; room_exit_handler_addresses &171a 76 17 ; &1776 = handle_room_d9_exit &171c 8a 17 ; &178a = handle_room_35_exit &171e a9 17 ; &17a9 = handle_room_73_exit &1720 b7 17 ; &17b7 = handle_room_97_exit &1722 cc 17 ; &17cc = handle_room_db_exit &1724 d6 17 ; &17d6 = handle_room_3a_exit &1726 e7 17 ; &17e7 = handle_room_3b_exit &1728 ec 17 ; &17ec = handle_room_3c_exit &172a f1 17 ; &17f1 = handle_room_3d_exit &172c f6 17 ; &17f6 = handle_room_3e_exit &172e 0b 18 ; &180b = handle_room_3f_exit &1730 10 18 ; &1810 = handle_room_40_exit &1732 15 18 ; &1815 = handle_room_41_exit &1734 1a 18 ; &181a = handle_room_42_exit &1736 1f 18 ; &181f = handle_room_86_exit &1738 2b 18 ; &182b = handle_room_87_exit &173a 33 18 ; &1833 = handle_room_9f_exit &173c 38 18 ; &1838 = handle_room_a0_exit &173e 3d 18 ; &183d = handle_room_c7_exit &1740 45 18 ; &1845 = handle_room_c8_exit ; call_room_exit_handler &1742 a2 13 LDX #&13 ; check_for_handler_loop &1744 bd 06 17 LDA &1706,X ; rooms_with_exit_handlers &1747 cd 0f 15 CMP &150f ; player_room &174a f0 06 BEQ &1752 ; room_has_exit_handler &174c ca DEX &174d 10 f5 BPL &1744 ; check_for_handler_loop &174f 4c c6 16 JMP &16c6 ; use_room_exit_Y ; room_has_exit_handler &1752 8a TXA &1753 0a ASL A &1754 aa TAX &1755 bd 1a 17 LDA &171a,X ; room_exit_handler_addresses &1758 85 68 STA &68 ; room_exit_handler_address_low &175a bd 1b 17 LDA &171b,X ; room_exit_handler_addresses + 1 &175d 85 69 STA &69 ; room_exit_handler_address_high &175f 6c 68 00 JMP (&0068) ; room_exit_handler_address ; you_pause_a_while &1762 20 93 16 JSR &1693 ; end_string_with_period &1765 20 a2 16 JSR &16a2 ; use_string_table_one &1768 a2 14 LDX #&14 ; string_114 : "You pause for a while. . " ; write_string_slowly &176a a9 05 LDA #&05 &176c 85 88 STA &88 ; text_delay &176e 20 cc 08 JSR &08cc ; write_string &1771 a9 00 LDA #&00 &1773 85 88 STA &88 ; text_delay &1775 60 RTS ; handle_room_d9_exit # "in the Guard's Van" &1776 c0 0b CPY #&0b ; DIRECTION_OUT &1778 f0 03 BEQ &177d ; go_out_of_room_d9 &177a 4c b3 16 JMP &16b3 ; you_can't_go_direction ; go_out_of_room_d9 &177d ae e5 14 LDX &14e5 ; train_guard_state &1780 e0 1f CPX #&1f ; string_01f : "You lunge at the guard with the spanner, but with the agility of a panther, he dodges to one side, slips and tumbles out of the van! " &1782 f0 0a BEQ &178e ; to_use_room_exit_Y # Can go out if train guard has been killed &1784 a2 1e LDX #&1e ; string_01e : "The guard, an expert in Oriental fighting techniques, kicks you in the larynx and you collapse to the floor! " &1786 8e e5 14 STX &14e5 ; train_guard_state &1789 60 RTS ; handle_room_35_exit # "in the tavern standing next to a long, mahogany bar" &178a c0 08 CPY #&08 ; DIRECTION_UP &178c f0 03 BEQ &1791 ; go_up_in_tavern ; to_use_room_exit_Y &178e 4c c6 16 JMP &16c6 ; use_room_exit_Y ; go_up_in_tavern &1791 ad e8 14 LDA &14e8 ; inn_state # One if player has paid bartender &1794 d0 f8 BNE &178e ; to_use_room_exit_Y &1796 a2 d6 LDX #&d6 ; string_0d6 : ""You can't go upstairs without paying, sir"" ; write_bartender_string &1798 20 9d 16 JSR &169d ; use_string_table_zero &179b 20 98 16 JSR &1698 ; end_string_with_comma &179e 20 cc 08 JSR &08cc ; write_string &17a1 20 93 16 JSR &1693 ; end_string_with_period &17a4 a2 d4 LDX #&d4 ; "says the bartender" &17a6 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_room_73_exit # "in a lush meadow" &17a9 c0 03 CPY #&03 ; DIRECTION_WEST &17ab d0 e1 BNE &178e ; to_use_room_exit_Y &17ad ad 73 14 LDA &1473 ; room_states + &73 ; allow_movement_if_two &17b0 c9 02 CMP #&02 ; &071 - &06f : string_071 : "the bull has cleared a way to the farmhouse" &17b2 f0 da BEQ &178e ; to_use_room_exit_Y &17b4 4c b3 16 JMP &16b3 ; you_can't_go_direction # Block west exit if bull hasn't cleared it ; handle_room_97_exit # "crouched in a dense thicket" &17b7 c0 01 CPY #&01 ; DIRECTION_SOUTH &17b9 d0 d3 BNE &178e ; to_use_room_exit_Y &17bb ad e7 14 LDA &14e7 ; jeep_state &17be c9 90 CMP #&90 ; string_090 : "There is the sound of a vehicle approaching from the west. " &17c0 90 cc BCC &178e ; to_use_room_exit_Y &17c2 20 8e 16 JSR &168e ; end_string_without_punctuation &17c5 85 80 STA &80 ; string_table_id &17c7 a2 98 LDX #&98 ; string_098 : "You'll get run over! " &17c9 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_room_db_exit # "standing on a long, straight road" &17cc c0 0a CPY #&0a ; DIRECTION_IN &17ce d0 be BNE &178e ; to_use_room_exit_Y &17d0 ad db 14 LDA &14db ; room_states + &db &17d3 4c b0 17 JMP &17b0 ; allow_movement_if_two # &09b - &099 : string_09b : "a jeep has skidded across the road but does not seem to be damaged. The driver is sprawled in the road" ; handle_room_3a_exit # "on the upper landing" &17d6 a2 00 LDX #&00 ; DOOR_0 ; check_for_closed_door_if_moving_east &17d8 c0 02 CPY #&02 ; DIRECTION_EAST &17da f0 03 BEQ &17df ; check_for_closed_door ; to_use_room_exit_Y &17dc 4c c6 16 JMP &16c6 ; use_room_exit_Y ; check_for_closed_door &17df bd e9 14 LDA &14e9,X ; door_states &17e2 d0 f8 BNE &17dc ; to_use_room_exit_Y &17e4 4c 65 18 JMP &1865 ; the_direction_door_is_closed ; handle_room_3b_exit # "in a long corridor on the first floor of the tavern" &17e7 a2 01 LDX #&01 ; DOOR_1 &17e9 4c d8 17 JMP &17d8 ; check_for_closed_door_if_moving_east ; handle_room_3c_exit # "in a long corridor on the first floor of the tavern" &17ec a2 02 LDX #&02 ; DOOR_2 &17ee 4c d8 17 JMP &17d8 ; check_for_closed_door_if_moving_east ; handle_room_3d_exit # "in a long corridor on the first floor of the tavern" &17f1 a2 03 LDX #&03 ; DOOR_3 &17f3 4c d8 17 JMP &17d8 ; check_for_closed_door_if_moving_east ; handle_room_3e_exit # "at the northern end of the corridor" &17f6 c0 02 CPY #&02 ; DIRECTION_EAST &17f8 d0 05 BNE &17ff ; not_east_door &17fa a2 04 LDX #&04 ; DOOR_4 &17fc 4c d8 17 JMP &17d8 ; check_for_closed_door_if_moving_east ; not_east_door &17ff a2 05 LDX #&05 ; DOOR_5 ; check_for_closed_door_if_moving_west &1801 c0 03 CPY #&03 ; DIRECTION_WEST &1803 f0 03 BEQ &1808 ; to_check_for_closed_door &1805 4c c6 16 JMP &16c6 ; use_room_exit_Y ; to_check_for_closed_door &1808 4c df 17 JMP &17df ; check_for_closed_door ; handle_room_3f_exit # "in a small, tiled bathroom" &180b a2 05 LDX #&05 ; DOOR_5 &180d 4c d8 17 JMP &17d8 ; check_for_closed_door_if_moving_east ; handle_room_40_exit # "in the second bedroom" &1810 a2 01 LDX #&01 ; DOOR_1 &1812 4c 01 18 JMP &1801 ; check_for_closed_door_if_moving_west ; handle_room_41_exit # "in Bedroom Four" &1815 a2 03 LDX #&03 ; DOOR_3 &1817 4c 01 18 JMP &1801 ; check_for_closed_door_if_moving_west ; handle_room_42_exit # "in the fifth bedroom" &181a a2 04 LDX #&04 ; DOOR_4 &181c 4c 01 18 JMP &1801 ; check_for_closed_door_if_moving_west ; handle_room_86_exit # "outside the log cabin" &181f a2 06 LDX #&06 ; DOOR_6 &1821 c0 0a CPY #&0a ; DIRECTION_IN &1823 f0 03 BEQ &1828 ; to_check_for_closed_door ; to_use_room_exit_Y &1825 4c c6 16 JMP &16c6 ; use_room_exit_Y ; to_check_for_closed_door &1828 4c df 17 JMP &17df ; check_for_closed_door ; handle_room_87_exit # "inside the single room of the log cabin" &182b a2 06 LDX #&06 ; DOOR_6 &182d c0 0b CPY #&0b ; DIRECTION_OUT &182f f0 f7 BEQ &1828 ; to_check_for_closed_door &1831 d0 f2 BNE &1825 ; to_use_room_exit_Y ; handle_room_9f_exit # "in a tiny, cylindrical room" &1833 a2 07 LDX #&07 ; DOOR_7 &1835 4c d8 17 JMP &17d8 ; check_for_closed_door_if_moving_east ; handle_room_a0_exit # "in a decontamination chamber" &1838 a2 07 LDX #&07 ; DOOR_7 &183a 4c 01 18 JMP &1801 ; check_for_closed_door_if_moving_west ; handle_room_c7_exit # "in the computer room alcove" &183d a2 08 LDX #&08 ; DOOR_8 ; check_for_closed_door_if_moving_south &183f c0 01 CPY #&01 ; DIRECTION_SOUTH &1841 f0 e5 BEQ &1828 ; to_check_for_closed_door &1843 d0 e0 BNE &1825 ; to_use_room_exit_Y ; handle_room_c8_exit # "in the central control room" &1845 c0 00 CPY #&00 ; DIRECTION_NORTH &1847 f0 05 BEQ &184e ; use_north_door &1849 a2 09 LDX #&09 ; DOOR_9 &184b 4c 3f 18 JMP &183f ; check_for_closed_door_if_moving_south ; use_north_door &184e a2 08 LDX #&08 ; DOOR_8 &1850 4c df 17 JMP &17df ; check_for_closed_door ; the_direction_door_is &1853 20 8e 16 JSR &168e ; end_string_without_punctuation &1856 a2 10 LDX #&10 ; string_110 : "The " &1858 20 cc 08 JSR &08cc ; write_string &185b 98 TYA &185c aa TAX &185d 20 cc 08 JSR &08cc ; write_string &1860 a2 11 LDX #&11 ; string_111 : " door is " &1862 4c cc 08 JMP &08cc ; write_string ; the_direction_door_is_closed &1865 20 53 18 JSR &1853 ; the_direction_door_is ; write_door_state &1868 e8 INX ; string_112 : "closed. " &1869 4c 55 16 JMP &1655 ; write_string_and_newline ; the_direction_door_is_open &186c 20 53 18 JSR &1853 ; the_direction_door_is &186f e8 INX ; string_113 : "open. " &1870 4c 68 18 JMP &1868 ; write_door_state ; update_train_guard &1873 ad 0f 15 LDA &150f ; player_room &1876 c9 d9 CMP #&d9 ; ROOM_d9 ; "in the Guard's Van" &1878 f0 01 BEQ &187b ; is_in_guard_van ; leave &187a 60 RTS ; is_in_guard_van &187b 20 9d 16 JSR &169d ; use_string_table_zero &187e 85 7c STA &7c ; text_ending # A = 0, TEXT_END_NONE &1880 ae e5 14 LDX &14e5 ; train_guard_state &1883 e0 1f CPX #&1f ; string_01f : "You lunge at the guard with the spanner, but with the agility of a panther, he dodges to one side, slips and tumbles out of the van! " &1885 f0 f3 BEQ &187a ; leave &1887 e0 1d CPX #&1d ; string_01d : "An aggressive looking guard strides menacingly towards you! " &1889 f0 08 BEQ &1893 ; update_train_guard_state ; kill_player_after_writing_string &188b 20 cc 08 JSR &08cc ; write_string ; mark_player_as_dead &188e a9 09 LDA #&09 ; PLAYER_DEAD_AFTER_TEXT &1890 85 89 STA &89 ; player_state &1892 60 RTS ; update_train_guard_state &1893 20 55 16 JSR &1655 ; write_string_and_newline &1896 ee e5 14 INC &14e5 ; train_guard_state ; leave &1899 60 RTS ; handle_deadly_rooms # Rooms &d6, &d7 and &d8 kill the player on entry &189a ad 0f 15 LDA &150f ; player_room &189d c9 d5 CMP #&d5 ; ROOM_d5 ; "on the pavement" &189f 90 f8 BCC &1899 ; leave &18a1 c9 d9 CMP #&d9 ; ROOM_d9 ; "in the Guard's Van" &18a3 b0 f4 BCS &1899 ; leave &18a5 4c 8e 18 JMP &188e ; mark_player_as_dead ; update_arriving_train &18a8 ae e4 14 LDX &14e4 ; train_state &18ab ad 0f 15 LDA &150f ; player_room &18ae c9 09 CMP #&09 ; ROOM_09 ; "on a large, iron bridge" &18b0 d0 0c BNE &18be ; skip_text &18b2 20 9d 16 JSR &169d ; use_string_table_zero &18b5 85 7c STA &7c ; text_ending # A = 0, TEXT_END_NONE &18b7 e0 0e CPX #&0e ; string_00e : "In the distance a train approaches. " &18b9 90 03 BCC &18be ; skip_text &18bb 20 55 16 JSR &1655 ; write_string_and_newline ; skip_text &18be e8 INX &18bf e0 16 CPX #&16 ; &015 + 1 : string_015 : "The train disappears into a dark tunnel. " &18c1 b0 04 BCS &18c7 ; reset_train ; set_train_state &18c3 8e e4 14 STX &14e4 ; train_state &18c6 60 RTS ; reset_train &18c7 a2 00 LDX #&00 &18c9 4c c3 18 JMP &18c3 ; set_train_state ; update_leaving_train &18cc ad 0f 15 LDA &150f ; player_room &18cf c9 0e CMP #&0e ; ROOM_0e ; "in a railway siding" &18d1 d0 05 BNE &18d8 ; leave &18d3 a9 00 LDA #&00 # Remove string_021 : ". The train moves off" &18d5 8d 0e 14 STA &140e ; room_states + &e ; leave &18d8 60 RTS ; update_jeep &18d9 ad db 14 LDA &14db ; room_states + &db &18dc c9 02 CMP #&02 ; &09b - &099 : string_09b : "a jeep has skidded across the road but does not seem to be damaged. The driver is sprawled in the road" &18de f0 1f BEQ &18ff ; reset_jeep_state &18e0 ae e7 14 LDX &14e7 ; jeep_state &18e3 20 9d 16 JSR &169d ; use_string_table_zero &18e6 85 7c STA &7c ; text_ending # A = 0, TEXT_END_NONE &18e8 ad 0f 15 LDA &150f ; player_room &18eb c9 97 CMP #&97 ; ROOM_97 ; "crouched in a dense thicket" &18ed d0 07 BNE &18f6 ; skip_writing_string &18ef e0 90 CPX #&90 ; string_190 : "There is the sound of a vehicle approaching from the west. " &18f1 90 03 BCC &18f6 ; skip_writing_string &18f3 20 55 16 JSR &1655 ; write_string_and_newline ; skip_writing_string &18f6 e8 INX &18f7 e0 94 CPX #&94 ; &93 + 1 : string_193 : "The jeep accelerates into the distance. " &18f9 b0 04 BCS &18ff ; reset_jeep_state ; set_jeep_state &18fb 8e e7 14 STX &14e7 ; jeep_state &18fe 60 RTS ; reset_jeep_state &18ff a2 8d LDX #&8d ; &90 - 3 : string_190 : "There is the sound of a vehicle approaching from the west. " &1901 4c fb 18 JMP &18fb ; set_jeep_state ; check_for_opponent_in_room &1904 ad 0f 15 LDA &150f ; player_room &1907 cd e2 14 CMP &14e2 ; opponent_room &190a d0 25 BNE &1931 ; opponent_not_in_room &190c c9 02 CMP #&02 ; ROOM_02 ; "in the waiting room" &190e d0 08 BNE &1918 ; check_for_mouse &1910 a9 2e LDA #&2e ; string_12e : "A strange man wearing a mackintosh with the collar turned up, a hat and a pair of dark glasses is here! " &1912 8d e3 14 STA &14e3 ; opponent_id &1915 4c 21 19 JMP &1921 ; consider_resetting_mackintosh_man_timer ; check_for_mouse &1918 c9 82 CMP #&82 ; ROOM_82 ; "in the wooden shed" &191a d0 0f BNE &192b ; activate_opponent &191c a9 30 LDA #&30 ; string_130 : "A squeaking mouse scuttles around you! " &191e 8d e3 14 STA &14e3 ; opponent_id ; consider_resetting_mackintosh_man_timer &1921 ad e1 14 LDA &14e1 ; opponent_active # One if opponent is active &1924 d0 05 BNE &192b ; skip_resetting_timer &1926 a9 00 LDA #&00 &1928 8d e0 14 STA &14e0 ; mackintosh_man_timer ; skip_resetting_timer ; activate_opponent &192b a9 01 LDA #&01 # Set to one to indicate opponent is active ; set_opponent_active &192d 8d e1 14 STA &14e1 ; opponent_active &1930 60 RTS ; opponent_not_in_room &1931 a9 00 LDA #&00 # Set to zero to indicate opponent not active &1933 4c 2d 19 JMP &192d ; set_opponent_active ; update_mackintosh_man &1936 ad e1 14 LDA &14e1 ; opponent_active # Zero if opponent is not active &1939 f0 07 BEQ &1942 ; leave &193b ad e3 14 LDA &14e3 ; opponent_id &193e c9 2e CMP #&2e ; string_12e : "A strange man wearing a mackintosh with the collar turned up, a hat and a pair of dark glasses is here! " &1940 f0 01 BEQ &1943 ; mackintosh_man_is_active ; leave &1942 60 RTS ; mackintosh_man_is_active &1943 ad 0f 15 LDA &150f ; player_room &1946 8d e2 14 STA &14e2 ; opponent_room &1949 20 a2 16 JSR &16a2 ; use_string_table_one &194c 20 8e 16 JSR &168e ; end_string_without_punctuation &194f ee e0 14 INC &14e0 ; mackintosh_man_timer &1952 ad e0 14 LDA &14e0 ; mackintosh_man_timer &1955 c9 1e CMP #&1e &1957 b0 05 BCS &195e ; mackintosh_man_kills_player &1959 a2 2e LDX #&2e ; string_12e : "A strange man wearing a mackintosh with the collar turned up, a hat and a pair of dark glasses is here! " &195b 4c 55 16 JMP &1655 ; write_string_and_newline ; mackintosh_man_kills_player &195e a2 2f LDX #&2f ; string_12f : "The man draws a gun and shoots you! " &1960 20 8e 18 JSR &188e ; mark_player_as_dead &1963 4c 55 16 JMP &1655 ; write_string_and_newline ; update_mouse &1966 ad e1 14 LDA &14e1 ; opponent_active # Zero if opponent is not active &1969 f0 07 BEQ &1972 ; leave &196b ad e3 14 LDA &14e3 ; opponent_id &196e c9 30 CMP #&30 ; string_130 : "A squeaking mouse scuttles around you! " &1970 f0 01 BEQ &1973 ; mouse_is_active ; leave &1972 60 RTS ; mouse_is_active &1973 ad 0f 15 LDA &150f ; player_room &1976 8d e2 14 STA &14e2 ; opponent_room &1979 20 a2 16 JSR &16a2 ; use_string_table_one &197c 20 8e 16 JSR &168e ; end_string_without_punctuation &197f a2 30 LDX #&30 ; string_130 : "A squeaking mouse scuttles around you! " &1981 20 cc 08 JSR &08cc ; write_string &1984 ad e2 14 LDA &14e2 ; opponent_room &1987 cd 3f 15 CMP &153f ; object_locations + &11 (OBJECT_PORK_PIE) &198a f0 03 BEQ &198f ; remove_mouse &198c 4c e7 ff JMP &ffe7 ; OSNEWL ; remove_mouse &198f a2 33 LDX #&33 ; string_133 : "The rodent nibbles at the pie, says the mousy equivalent of "I think I'm going to be sick", and scurries off somewhere! " &1991 20 cc 08 JSR &08cc ; write_string &1994 a9 fc LDA #&fc ; ROOM_DESTROYED # Remove mouse &1996 8d e2 14 STA &14e2 ; opponent_room &1999 8d 3f 15 STA &153f ; object_locations + &11 (OBJECT_PORK_PIE) &199c a9 00 LDA #&00 # Set to zero to indicate opponent not active &199e 8d e1 14 STA &14e1 ; opponent_active &19a1 4c e7 ff JMP &ffe7 ; OSNEWL ; update_tunnel &19a4 ad 0f 15 LDA &150f ; player_room &19a7 c9 da CMP #&da ; ROOM_da ; "clinging to the roof of the Guard's Van" &19a9 d0 0a BNE &19b5 ; leave &19ab ae df 14 LDX &14df ; train_tunnel_state &19ae e0 01 CPX #&01 &19b0 b0 04 BCS &19b6 ; tunnel_kills_player &19b2 ee df 14 INC &14df ; train_tunnel_state # Set to one to kill player on next turn ; leave &19b5 60 RTS ; tunnel_kills_player &19b6 20 9d 16 JSR &169d ; use_string_table_zero &19b9 85 7c STA &7c ; text_ending # A = 0, TEXT_END_NONE &19bb 20 8e 18 JSR &188e ; mark_player_as_dead &19be a2 1b LDX #&1b ; string_01b : "The train charges into the tunnel. Belatedly, you scramble for the hole and are almost through, when your head cannons into the tunnel arch and bounces down the track! " &19c0 4c 55 16 JMP &1655 ; write_string_and_newline ; update_bartender &19c3 ad 0f 15 LDA &150f ; player_room &19c6 c9 35 CMP #&35 ; ROOM_35 ; "in the tavern standing next to a long, mahogany bar" &19c8 d0 eb BNE &19b5 ; leave &19ca ad e8 14 LDA &14e8 ; inn_state # One if player has paid bartender &19cd d0 e6 BNE &19b5 ; leave &19cf a2 d5 LDX #&d5 ; string_0d5 : ""Hello, friend! It only costs one Quhut for a room overnight"" &19d1 4c 98 17 JMP &1798 ; write_bartender_string ; update_shopkeeper &19d4 ad 0f 15 LDA &150f ; player_room &19d7 c9 2d CMP #&2d ; ROOM_2d ; "inside the bookshop" &19d9 d0 2c BNE &1a07 ; leave &19db ad de 14 LDA &14de ; book_collected # Non-zero if book has been collected &19de d0 27 BNE &1a07 ; leave &19e0 ad 1e 15 LDA &151e ; object_states + &e (OBJECT_MIRROR) &19e3 c9 01 CMP #&01 ; string_159 - string_158 : "shows you to be unshaven. " &19e5 f0 13 BEQ &19fa ; is_unshaved &19e7 a2 c6 LDX #&c6 ; string_0c6 : ""What book would you like, sir? We have a few to choose from"" ; write_shopkeeper_string &19e9 20 9d 16 JSR &169d ; use_string_table_zero &19ec 20 98 16 JSR &1698 ; end_string_with_comma &19ef 20 cc 08 JSR &08cc ; write_string &19f2 20 8e 16 JSR &168e ; end_string_without_punctuation &19f5 a2 c4 LDX #&c4 ; string_0c4 : "says the shopkeeper. " &19f7 4c 55 16 JMP &1655 ; write_string_and_newline ; is_unshaved &19fa a2 c5 LDX #&c5 ; string_0c5 : ""I know my shop's not much, but I don't serve stubble faced louts"" &19fc 20 e9 19 JSR &19e9 ; write_shopkeeper_string &19ff a9 30 LDA #&30 ; ROOM_30 ; "at the west end of the seedy backstreet" &1a01 8d 0f 15 STA &150f ; player_room &1a04 4c 6a 15 JMP &156a ; handle_look ; leave &1a07 60 RTS ; list_room_objects &1a08 ad 0f 15 LDA &150f ; player_room &1a0b a2 25 LDX #&25 ; string_125 : "You find " ; list_objects &1a0d a0 00 LDY #&00 &1a0f 85 79 STA &79 ; room &1a11 84 77 STY &77 ; number_of_objects ; count_room_objects_loop &1a13 d9 2e 15 CMP &152e,Y ; object_locations &1a16 f0 28 BEQ &1a40 ; count_object ; consider_next_object_for_counting &1a18 c8 INY &1a19 c0 1e CPY #&1e ; OBJECT_LAST + 1 &1a1b 90 f6 BCC &1a13 ; count_room_objects_loop &1a1d a0 00 LDY #&00 # For each object &1a1f 20 a2 16 JSR &16a2 ; use_string_table_one &1a22 20 8e 16 JSR &168e ; end_string_without_punctuation &1a25 20 cc 08 JSR &08cc ; write_string &1a28 a5 77 LDA &77 ; number_of_objects &1a2a f0 19 BEQ &1a45 ; no_objects_in_room &1a2c c9 01 CMP #&01 &1a2e f0 1f BEQ &1a4f ; single_object &1a30 20 98 16 JSR &1698 ; end_string_with_comma ; list_objects_loop &1a33 a5 79 LDA &79 ; room &1a35 d9 2e 15 CMP &152e,Y ; object_locations &1a38 f0 1b BEQ &1a55 ; list_this_object ; consider_next_object_for_listing &1a3a c8 INY &1a3b c0 1e CPY #&1e ; OBJECT_LAST + 1 &1a3d 90 f4 BCC &1a33 ; list_objects_loop &1a3f 60 RTS ; count_object &1a40 e6 77 INC &77 ; number_of_objects &1a42 4c 18 1a JMP &1a18 ; consider_next_object_for_counting ; no_objects_in_room &1a45 a5 79 LDA &79 ; room # Unnecessary code &1a47 a2 18 LDX #&18 ; string_118 : "nothing" &1a49 20 93 16 JSR &1693 ; end_string_with_period &1a4c 4c cc 08 JMP &08cc ; write_string ; single_object &1a4f 20 93 16 JSR &1693 ; end_string_with_period &1a52 4c 33 1a JMP &1a33 ; list_objects_loop ; list_this_object &1a55 a2 27 LDX #&27 ; string_127 ; "a" &1a57 c0 0b CPY #&0b ; OBJECT_IMPI &1a59 f0 25 BEQ &1a80 ; use_an ; write_a_or_an &1a5b a5 7c LDA &7c ; text_ending &1a5d 48 PHA &1a5e 20 8e 16 JSR &168e ; end_string_without_punctuation &1a61 20 cc 08 JSR &08cc ; write_string &1a64 b9 4c 15 LDA &154c,Y ; object_string_ids &1a67 aa TAX &1a68 a5 77 LDA &77 ; number_of_objects &1a6a c9 02 CMP #&02 &1a6c f0 0b BEQ &1a79 ; two_objects_remaining &1a6e 68 PLA &1a6f 85 7c STA &7c ; text_ending &1a71 20 cc 08 JSR &08cc ; write_string ; to_consider_next_object_for_listing &1a74 c6 77 DEC &77 ; number_of_objects &1a76 4c 3a 1a JMP &1a3a ; consider_next_object_for_listing ; two_objects_remaining &1a79 68 PLA &1a7a 20 02 16 JSR &1602 ; conditionally_write_string_X_and_and &1a7d 4c 74 1a JMP &1a74 ; to_consider_next_object ; use_an &1a80 e8 INX ; string_128 ; "an" &1a81 4c 5b 1a JMP &1a5b ; write_a_or_an ; handle_inventory &1a84 a9 ff LDA #&ff ; ROOM_HOLDING &1a86 a2 16 LDX #&16 ; string_116 : "You are holding " &1a88 20 0d 1a JSR &1a0d ; list_objects &1a8b a9 fe LDA #&fe ; ROOM_WEARING &1a8d a2 17 LDX #&17 ; string_117 : "You are wearing " &1a8f 20 0d 1a JSR &1a0d ; list_objects &1a92 4c e7 ff JMP &ffe7 ; OSNEWL ; handle_mono &1a95 a9 87 LDA #&87 ; TELETEXT_WHITE &1a97 85 87 STA &87 ; text_colour &1a99 85 70 STA &70 ; input_colour &1a9b 85 71 STA &71 ; highlight_colour ; write_ok &1a9d 20 93 16 JSR &1693 ; end_string_with_period &1aa0 20 a2 16 JSR &16a2 ; use_string_table_one &1aa3 a2 15 LDX #&15 ; string_115 : "OK" &1aa5 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_colour &1aa8 a9 83 LDA #&83 ; TELETEXT_YELLOW &1aaa 85 87 STA &87 ; text_colour &1aac a9 86 LDA #&86 ; TELETEXT_CYAN &1aae 85 70 STA &70 ; input_colour &1ab0 a9 85 LDA #&85 ; TELETEXT_MAGNETA &1ab2 85 71 STA &71 ; highlight_colour &1ab4 4c 9d 1a JMP &1a9d ; write_ok ; welcome_to_assassin # Unused code &1ab7 a5 87 LDA &87 ; text_colour &1ab9 48 PHA &1aba a5 71 LDA &71 ; highlight_colour &1abc 85 87 STA &87 ; text_colour &1abe 20 a2 16 JSR &16a2 ; use_string_table_one &1ac1 20 93 16 JSR &1693 ; end_string_with_period &1ac4 a2 a1 LDX #&a1 ; string_1a1 : "Welcome to "Assassin" by Rob and Mike O'Leary. Programmed by Rob O'Leary" &1ac6 20 55 16 JSR &1655 ; write_string_and_newline &1ac9 68 PLA &1aca 85 87 STA &87 ; text_colour &1acc 4c e7 ff JMP &ffe7 ; OSNEWL ; update_bull &1acf ad 0f 15 LDA &150f ; player_room &1ad2 c9 73 CMP #&73 ; ROOM_73 ; "in a lush meadow" &1ad4 d0 2b BNE &1b01 ; leave_after_resetting_bull &1ad6 ad 73 14 LDA &1473 ; room_states + &73 &1ad9 c9 02 CMP #&02 ; string_071 - string_06f : "the bull has cleared a way to the farmhouse" &1adb f0 24 BEQ &1b01 ; leave_after_resetting_bull &1add ad dd 14 LDA &14dd ; bull_state # Zero if bull hasn't seen seat cover &1ae0 f0 12 BEQ &1af4 ; bull_is_munching_grass &1ae2 c9 02 CMP #&02 # One if bull has seen seat cover &1ae4 90 13 BCC &1af9 ; bull_starts_charging &1ae6 20 8e 18 JSR &188e ; mark_player_as_dead &1ae9 a2 74 LDX #&74 ; string_074 : ""Oh golly gosh! That hurt", you say, as one of the bull's horns pierces your left buttock. Then you disappear over the horizon. " ; write_bull_string &1aeb 20 9d 16 JSR &169d ; use_string_table_zero &1aee 20 8e 16 JSR &168e ; end_string_without_punctuation &1af1 4c 55 16 JMP &1655 ; write_string_and_newline ; bull_is_munching_grass &1af4 a2 72 LDX #&72 ; string_072 : "A stupid looking bull munches the sweet grass. " &1af6 4c eb 1a JMP &1aeb ; write_bull_string ; bull_starts_charging &1af9 ee dd 14 INC &14dd ; bull_state # Set to two to indicate bull is charging &1afc a2 73 LDX #&73 ; string_073 : "The bull sees you waving the red, ragged seat cover and charges towards you! " &1afe 4c eb 1a JMP &1aeb ; write_bull_string ; leave_after_resetting_bull &1b01 a9 00 LDA #&00 # Set to zero to indicate bull hasn't seen seat cover &1b03 8d dd 14 STA &14dd ; bull_state &1b06 60 RTS ; input_block &1b07 00 07 ; &0700 = input_buffer &1b09 25 ; 37 characters maximum &1b0a 20 ; " " &1b0b 7a ; "z" ; prompt_for_input &1b0c a9 5d LDA #&5d ; "]" &1b0e 20 ee ff JSR &ffee ; OSWRCH &1b11 a5 70 LDA &70 ; input_colour &1b13 20 ee ff JSR &ffee ; OSWRCH &1b16 a9 00 LDA #&00 ; Input line of text &1b18 85 81 STA &81 ; current_word &1b1a a0 1b LDY #&1b &1b1c a2 07 LDX #&07 ; &1b07 = input_block &1b1e 20 f1 ff JSR &fff1 ; OSWORD # Get input from player into &0700, input_buffer &1b21 c0 00 CPY #&00 # Y is length of input &1b23 f0 e7 BEQ &1b0c ; prompt_for_input &1b25 84 7d STY &7d ; input_length ; split_input_into_words &1b27 a9 00 LDA #&00 &1b29 a8 TAY &1b2a aa TAX &1b2b 85 7e STA &7e ; number_of_words &1b2d a9 00 LDA #&00 &1b2f 85 6c STA &6c ; word_buffer_address_low &1b31 a9 05 LDA #&05 ; &0500 = word_buffer &1b33 85 6d STA &6d ; word_buffer_address_high ; split_input_into_words_loop # Split input into words at &0500, &0510, &0520... &1b35 20 70 1b JSR &1b70 ; move_past_whitespace ; copy_word_loop &1b38 09 20 ORA #&20 # Convert to lowercase &1b3a 91 6c STA (&6c),Y ; word_buffer_address &1b3c c8 INY &1b3d e8 INX &1b3e bd 00 07 LDA &0700,X ; input_buffer &1b41 e4 7d CPX &7d ; input_length &1b43 b0 21 BCS &1b66 ; end_of_input &1b45 c9 20 CMP #&20 ; " " &1b47 d0 ef BNE &1b38 ; copy_word_loop &1b49 a9 0d LDA #&0d ; CR # End split words with carriage return &1b4b 91 6c STA (&6c),Y ; word_buffer_address &1b4d 18 CLC &1b4e a9 10 LDA #&10 &1b50 65 6c ADC &6c ; word_buffer_address_low &1b52 85 6c STA &6c ; word_buffer_address_low &1b54 a9 00 LDA #&00 # Unnecessary code; split words stay within page &1b56 a8 TAY &1b57 65 6d ADC &6d ; word_buffer_address_high &1b59 85 6d STA &6d ; word_buffer_address_high &1b5b a5 7e LDA &7e ; number_of_words &1b5d c9 0f CMP #&0f &1b5f f0 05 BEQ &1b66 ; end_of_input &1b61 e6 7e INC &7e ; number_of_words &1b63 4c 35 1b JMP &1b35 ; split_input_into_words_loop ; end_of_input &1b66 e6 7e INC &7e ; number_of_words ; store_final_character &1b68 91 6c STA (&6c),Y ; word_buffer_address ; leave &1b6a 60 RTS ; ignore_trailing_whitespace &1b6b c6 7e DEC &7e ; number_of_words &1b6d 4c 68 1b JMP &1b68 ; store_final_character ; move_past_whitespace &1b70 bd 00 07 LDA &0700,X ; input_buffer &1b73 c9 20 CMP #&20 ; " " &1b75 d0 f3 BNE &1b6a ; leave &1b77 e8 INX &1b78 e4 7d CPX &7d ; input_length &1b7a f0 ef BEQ &1b6b ; ignore_trailing_whitespace &1b7c 4c 70 1b JMP &1b70 ; move_past_whitespace ; tokenise_input &1b7f a2 00 LDX #&00 ; tokenise_words_loop # For each word &1b81 a9 00 LDA #&00 &1b83 85 73 STA &73 ; vocabulary_id &1b85 8a TXA &1b86 0a ASL A &1b87 0a ASL A &1b88 0a ASL A &1b89 0a ASL A &1b8a 85 7d STA &7d ; word_offset &1b8c a8 TAY &1b8d b9 00 05 LDA &0500,Y ; word_buffer &1b90 85 72 STA &72 ; character &1b92 a9 b4 LDA #&b4 &1b94 85 6c STA &6c ; vocabulary_address_low &1b96 a9 3c LDA #&3c ; &3cb4 = vocabulary &1b98 85 6d STA &6d ; vocabulary_address_high ; check_input_word_against_vocabulary_loop &1b9a a0 00 LDY #&00 &1b9c b1 6c LDA (&6c),Y ; vocabulary_address &1b9e c9 ff CMP #&ff # &ff marks end of vocabulary &1ba0 f0 1b BEQ &1bbd ; unmatched_input_word &1ba2 49 63 EOR #&63 ; "c" &1ba4 c5 72 CMP &72 ; character &1ba6 f0 26 BEQ &1bce ; first_character_matches ; consider_next_vocabulary_word &1ba8 e6 73 INC &73 ; vocabulary_id ; move_to_next_vocabulary_word &1baa c8 INY &1bab b1 6c LDA (&6c),Y ; vocabulary_address &1bad 10 fb BPL &1baa ; move_to_next_vocabulary_word &1baf c8 INY &1bb0 18 CLC &1bb1 98 TYA &1bb2 65 6c ADC &6c ; vocabulary_address_low &1bb4 85 6c STA &6c ; vocabulary_address_low &1bb6 90 e2 BCC &1b9a ; check_input_word_against_vocabulary_loop &1bb8 e6 6d INC &6d ; vocabulary_address_high &1bba 4c 9a 1b JMP &1b9a ; check_input_word_against_vocabulary_loop ; unmatched_input_word &1bbd 48 PHA # A is &ff = WORD_UNRECOGNISED &1bbe 8a TXA &1bbf 0a ASL A &1bc0 a8 TAY &1bc1 68 PLA &1bc2 99 30 07 STA &0730,Y ; tokenised_words_value &1bc5 99 31 07 STA &0731,Y ; tokenised_words_type ; consider_next_input_word &1bc8 e8 INX &1bc9 e4 7e CPX &7e ; number_of_words &1bcb 90 b4 BCC &1b81 ; tokenise_words_loop &1bcd 60 RTS ; first_character_matches &1bce 86 74 STX &74 ; token_offset &1bd0 a6 7d LDX &7d ; word_offset ; consider_next_character_of_input_word &1bd2 e8 INX &1bd3 c8 INY &1bd4 bd 00 05 LDA &0500,X ; word_buffer &1bd7 c9 0d CMP #&0d ; CR &1bd9 f0 20 BEQ &1bfb ; end_of_input_word &1bdb b1 6c LDA (&6c),Y ; vocabulary_address &1bdd 30 0e BMI &1bed ; end_of_vocabulary_word &1bdf 49 63 EOR #&63 ; "c" # Deobfuscate vocabulary &1be1 dd 00 05 CMP &0500,X ; word_buffer &1be4 f0 ec BEQ &1bd2 ; consider_next_character_of_input_word ; input_and_vocabulary_word_failed_to_match &1be6 a0 00 LDY #&00 &1be8 a6 74 LDX &74 ; token_offset &1bea 4c a8 1b JMP &1ba8 ; consider_next_vocabulary_word ; end_of_vocabulary_word &1bed 29 7f AND #&7f &1bef dd 00 05 CMP &0500,X ; word_buffer &1bf2 d0 f2 BNE &1be6 ; input_and_vocabulary_word_failed_to_match &1bf4 bd 01 05 LDA &0501,X ; word_buffer + 1 &1bf7 c9 0d CMP #&0d ; CR &1bf9 d0 eb BNE &1be6 ; input_and_vocabulary_word_failed_to_match ; end_of_input_word &1bfb a5 74 LDA &74 ; token_offset &1bfd 0a ASL A &1bfe a8 TAY &1bff a6 73 LDX &73 ; vocabulary_id &1c01 bd aa 3b LDA &3baa,X ; vocabulary_values &1c04 99 30 07 STA &0730,Y ; tokenised_words_value &1c07 bd 2f 3c LDA &3c2f,X ; vocabulary_types &1c0a 99 31 07 STA &0731,Y ; tokenised_words_type &1c0d a6 74 LDX &74 ; token_offset &1c0f 4c c8 1b JMP &1bc8 ; consider_next_input_word ; get_player_input_and_tokenise &1c12 20 e7 ff JSR &ffe7 ; OSNEWL &1c15 20 0c 1b JSR &1b0c ; prompt_for_input &1c18 20 7f 1b JSR &1b7f ; tokenise_input &1c1b 20 e7 ff JSR &ffe7 ; OSNEWL &1c1e ad 31 07 LDA &0731 ; tokenised_words_type &1c21 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &1c23 c9 03 CMP #&03 ; WORD_OBJECT &1c25 b0 12 BCS &1c39 ; input_started_with_object_or_noun &1c27 a2 00 LDX #&00 ; remove_unrecognised_words_loop &1c29 8a TXA &1c2a 0a ASL A &1c2b a8 TAY &1c2c b9 31 07 LDA &0731,Y ; tokenised_words_type &1c2f c9 ff CMP #&ff ; WORD_UNRECOGNISED &1c31 f0 1f BEQ &1c52 ; remove_word &1c33 e8 INX ; consider_next_word &1c34 e4 7e CPX &7e ; number_of_words &1c36 90 f1 BCC &1c29 ; remove_unrecognised_words_loop &1c38 60 RTS ; input_started_with_object_or_noun &1c39 20 3f 1c JSR &1c3f ; i_can't_make_head_nor_tail_of_that &1c3c 4c 12 1c JMP &1c12 ; get_player_input_and_tokenise ; i_can't_make_head_nor_tail_of_that &1c3f a5 75 LDA &75 ; incomprehension_state &1c41 c9 03 CMP #&03 &1c43 90 04 BCC &1c49 ; skip_around &1c45 a9 00 LDA #&00 &1c47 85 75 STA &75 ; incomprehension_state ; skip_wraparound &1c49 18 CLC &1c4a 69 29 ADC #&29 ; string_129 : "I can't make head nor tail of that, sorry! " # string_12a : "I don't understand that! Try putting it more simply. " # string_12b : "Pardon? " &1c4c aa TAX &1c4d e6 75 INC &75 ; incomprehension_state &1c4f 4c a0 1c JMP &1ca0 ; write_string_without_punctuation_and_newline ; remove_word &1c52 86 74 STX &74 ; word_to_remove ; remove_word_loop &1c54 e8 INX &1c55 e4 7e CPX &7e ; last_word &1c57 b0 12 BCS &1c6b ; finished_removing_word &1c59 8a TXA &1c5a 0a ASL A &1c5b a8 TAY &1c5c b9 30 07 LDA &0730,Y ; tokenised_words_value &1c5f 99 2e 07 STA &072e,Y ; tokenised_words_value - 2 &1c62 b9 31 07 LDA &0731,Y ; tokenised_words_type &1c65 99 2f 07 STA &072f,Y ; tokenised_words_type - 2 &1c68 4c 54 1c JMP &1c54 ; remove_word_loop ; finished_removing_word &1c6b a6 74 LDX &74 ; word_to_remove &1c6d c6 7e DEC &7e ; number_of_words &1c6f 4c 34 1c JMP &1c34 ; consider_next_word ; handle_wait &1c72 20 62 17 JSR &1762 ; you_pause_a_while &1c75 4c e7 ff JMP &ffe7 ; OSNEWL ; handle_search &1c78 20 08 1a JSR &1a08 ; list_room_objects &1c7b 4c e7 ff JMP &ffe7 ; OSNEWL ; get_word &1c7e e6 81 INC &81 ; current_word &1c80 a5 81 LDA &81 ; current_word &1c82 c5 7e CMP &7e ; number_of_words &1c84 b0 03 BCS &1c89 ; no_more_words &1c86 0a ASL A &1c87 a8 TAY &1c88 60 RTS ; no_more_words &1c89 a0 ff LDY #&ff ; WORD_NONE &1c8b 60 RTS ; call_verb_handler &1c8c b9 00 04 LDA &0400,Y ; verb_handler_addresses_low_table &1c8f 85 68 STA &68 ; verb_handler_address_low &1c91 b9 44 04 LDA &0444,Y ; verb_handler_addresses_high_table &1c94 85 69 STA &69 ; verb_handler_address_high &1c96 6c 68 00 JMP (&0068) ; verb_handler_address ; you_can't_do_that &1c99 a2 20 LDX #&20 ; string_120 : "You can't do that! " &1c9b 4c a0 1c JMP &1ca0 ; write_string_without_punctuation_and_newline ; i_can't_guess &1c9e a2 19 LDX #&19 ; string_119 : "I can't guess! " ; write_string_without_punctuation_and_newline &1ca0 20 a2 16 JSR &16a2 ; use_string_table_one &1ca3 20 8e 16 JSR &168e ; end_string_without_punctuation &1ca6 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_jump &1ca9 20 8e 16 JSR &168e ; end_string_without_punctuation &1cac 20 a2 16 JSR &16a2 ; use_string_table_one &1caf ad 0f 15 LDA &150f ; player_room &1cb2 c9 09 CMP #&09 ; ROOM_09 ; "on a large, iron bridge" &1cb4 f0 0d BEQ &1cc3 ; jump_from_railway_bridge &1cb6 c9 8b CMP #&8b ; ROOM_8b ; "pressed back against the cliff wall" &1cb8 90 2f BCC &1ce9 ; to_write_ok &1cba c9 8e CMP #&8e ; ROOM_8e ; "squeezed between the craggy walls of a deep fissure" &1cbc b0 2b BCS &1ce9 ; to_write_ok &1cbe a2 8b LDX #&8b ; string_18b : "You leap from the precipice and land with a thud on the floor far below, decorating it with your entrails! " &1cc0 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; jump_from_railway_bridge &1cc3 20 9d 16 JSR &169d ; use_string_table_zero &1cc6 ad e4 14 LDA &14e4 ; train_state &1cc9 c9 15 CMP #&15 ; &14 + 1 : string_014 : "A Guard's Van passes under the bridge. " &1ccb f0 1f BEQ &1cec ; successful_jump_onto_train &1ccd a2 ce LDX #&ce ; string_0ce : "You leap from the bridge and " &1ccf 20 cc 08 JSR &08cc ; write_string &1cd2 ad e4 14 LDA &14e4 ; train_state &1cd5 c9 11 CMP #&11 ; &10 + 1 : string_010 : "Directly below you is an engine. &1cd7 90 0b BCC &1ce4 ; jump_onto_tracks &1cd9 c9 16 CMP #&16 ; &15 + 1 : string_015 : "The train disappears into a dark tunnel. " &1cdb f0 07 BEQ &1ce4 ; jump_onto_tracks &1cdd 18 CLC &1cde 69 bf ADC #&bf ; &d0 - &11 ; string_0d0 : "bounce off the speeding engine! " # string_0d1 : "split your head open on a large lump of coal in the cargo wagon! " # string_0d2 : "land in the timber wagon, dislodging a heavy log which rolls on top of you! " # string_0d3 : "fall amongst the razor sharp chippings! " &1ce0 aa TAX &1ce1 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; jump_onto_tracks &1ce4 a2 cf LDX #&cf ; string_0cf : "plummet to your death on the tracks far below! " &1ce6 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; to_write_ok &1ce9 4c 9d 1a JMP &1a9d ; write_ok ; successful_jump_onto_train &1cec a9 00 LDA #&00 # Set to zero to indicate opponent is not active &1cee 8d e1 14 STA &14e1 ; opponent_active &1cf1 a9 82 LDA #&82 ; ROOM_82 ; "in the wooden shed" # Set initial position of mouse &1cf3 8d e2 14 STA &14e2 ; opponent_room &1cf6 a9 da LDA #&da ; ROOM_da ; "clinging to the roof of the Guard's Van" &1cf8 8d 0f 15 STA &150f ; player_room &1cfb 4c 6a 15 JMP &156a ; handle_look ; entry_point &1cfe a9 c8 LDA #&c8 ; Read/Write BREAK/ESCAPE effect &1d00 a2 03 LDX #&03 ; Clear memory on next reset &1d02 a0 00 LDY #&00 &1d04 20 f4 ff JSR &fff4 ; OSBYTE &1d07 a2 00 LDX #&00 ; create_initial_game_state_first_loop # Copy &1400 - &14ff to &0a9a - &0b99 &1d09 bd 00 14 LDA &1400,X ; game_state &1d0c 9d 9a 0a STA &0a9a,X ; initial_game_state &1d0f ca DEX &1d10 d0 f7 BNE &1d09 ; create_initial_game_state_first_loop &1d12 a2 00 LDX #&00 ; create_initial_game_state_second_loop # Copy &1500 - &154b to &0b9a - &0be5 &1d14 bd 00 15 LDA &1500,X ; game_state + &100 &1d17 9d 9a 0b STA &0b9a,X ; initial_game_state + &100 &1d1a e8 INX &1d1b e0 4c CPX #&4c &1d1d 90 f5 BCC &1d14 ; create_initial_game_state_second_loop ; start_game &1d1f a2 00 LDX #&00 ; PLAYER_ALIVE &1d21 86 89 STX &89 ; player_state ; initialise_game_state_first_loop # Copy &0a9a - &0b99 to &1400 - &14ff &1d23 bd 9a 0a LDA &0a9a,X ; initial_game_state &1d26 9d 00 14 STA &1400,X ; game_state &1d29 ca DEX &1d2a d0 f7 BNE &1d23 ; initialise_game_state_first_loop &1d2c a2 00 LDX #&00 ; initialise_game_state_second_loop # Copy &0b9a - &0be5 to &1500 - &154b &1d2e bd 9a 0b LDA &0b9a,X ; initial_game_state + &100 &1d31 9d 00 15 STA &1500,X ; game_state + &100 &1d34 e8 INX &1d35 e0 4c CPX #&4c &1d37 90 f5 BCC &1d2e ; initialise_game_state_second_loop &1d39 a9 0c LDA #&0c ; CLS &1d3b 20 ee ff JSR &ffee ; OSWRCH &1d3e ea NOP &1d3f ea NOP &1d40 ea NOP &1d41 ea NOP &1d42 ea NOP &1d43 a9 02 LDA #&02 ; ROOM_02 ; "in the waiting room" # Set initial position of mackintosh man &1d45 8d e2 14 STA &14e2 ; opponent_room &1d48 ea NOP # Could have been JSR &1ab7 ; welcome_to_assassin ? &1d49 ea NOP &1d4a ea NOP &1d4b 20 e7 ff JSR &ffe7 ; OSNEWL &1d4e 20 6a 15 JSR &156a ; handle_look ; main_game_loop &1d51 20 12 1c JSR &1c12 ; get_player_input_and_tokenise &1d54 a0 00 LDY #&00 ; process_verbs_loop &1d56 b9 31 07 LDA &0731,Y ; tokenised_words_type &1d59 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &1d5b c9 03 CMP #&03 ; WORD_OBJECT &1d5d b0 58 BCS &1db7 ; is_object_or_noun ; consider_word_as_verb &1d5f b9 31 07 LDA &0731,Y ; tokenised_words_type &1d62 85 7f STA &7f ; word_type &1d64 b9 30 07 LDA &0730,Y ; tokenised_words_value &1d67 85 82 STA &82 ; word_value ; process_verb &1d69 20 c6 1d JSR &1dc6 ; update_pre_move_events &1d6c a4 82 LDY &82 ; word_value &1d6e 20 8c 1c JSR &1c8c ; call_verb_handler &1d71 a5 89 LDA &89 ; player_state &1d73 c9 01 CMP #&01 ; PLAYER_QUIT &1d75 f0 a8 BEQ &1d1f ; start_game &1d77 c9 02 CMP #&02 ; PLAYER_WON &1d79 f0 37 BEQ &1db2 ; well_done &1d7b 20 cc 1d JSR &1dcc ; update_post_move_events &1d7e a5 89 LDA &89 ; player_state &1d80 c9 03 CMP #&03 ; PLAYER_DEAD_BEFORE_TEXT &1d82 f0 16 BEQ &1d9a ; write_cause_of_death &1d84 c9 09 CMP #&09 ; PLAYER_DEAD_AFTER_TEXT &1d86 f0 0a BEQ &1d92 ; you_are_dead &1d88 20 7e 1c JSR &1c7e ; get_word &1d8b c0 ff CPY #&ff ; WORD_NONE &1d8d f0 c2 BEQ &1d51 ; main_game_loop &1d8f 4c 56 1d JMP &1d56 ; process_verbs_loop ; you_are_dead &1d92 a2 9d LDX #&9d ; string_19d : "You are dead! " ; write_string_and_restart_game_after_enter &1d94 20 8e 16 JSR &168e ; end_string_without_punctuation &1d97 20 a2 16 JSR &16a2 ; use_string_table_one ; write_cause_of_death &1d9a 20 55 16 JSR &1655 ; write_string_and_newline &1d9d 20 e7 ff JSR &ffe7 ; OSNEWL &1da0 20 a2 16 JSR &16a2 ; use_string_table_one &1da3 a2 a0 LDX #&a0 ; "Press Return to play" &1da5 20 55 16 JSR &1655 ; write_string_and_newline ; wait_for_enter &1da8 20 e0 ff JSR &ffe0 ; OSRDCH &1dab c9 0d CMP #&0d : CR &1dad d0 f9 BNE &1da8 ; wait_for_enter &1daf 4c 1f 1d JMP &1d1f ; start_game ;well_done &1db2 a2 9f LDX #&9f ; string_19f : "Well done! You have completed the game! " &1db4 4c 94 1d JMP &1d94 ; write_string_and_restart_game_after_enter ; is_object_or_noun &1db7 a5 7f LDA &7f ; word_type &1db9 30 06 BMI &1dc1 ; move_back_a_word # Never branches &1dbb 20 3f 1c JSR &1c3f ; i_can't_make_head_nor_tail_of_that &1dbe 4c 51 1d JMP &1d51 ; main_game_loop ; move_back_a_word # Never called &1dc1 c6 81 DEC &81 ; current_word &1dc3 4c 69 1d JMP &1d69 ; process_verb ; update_pre_move_events &1dc6 20 04 19 JSR &1904 ; check_for_opponent_in_room &1dc9 4c a8 18 JMP &18a8 ; update_arriving_train ; update_post_move_events &1dcc 20 d1 23 JSR &23d1 ; update_move_count &1dcf 20 b0 23 JSR &23b0 ; update_general &1dd2 a5 89 LDA &89 ; player_state &1dd4 c9 03 CMP #&03 ; PLAYER_DEAD_BEFORE_TEXT &1dd6 f0 33 BEQ &1e0b ; leave &1dd8 20 fa 21 JSR &21fa ; update_mirror &1ddb 20 5c 22 JSR &225c ; update_jeep_guards &1dde 20 73 18 JSR &1873 ; update_train_guard &1de1 20 9a 18 JSR &189a ; handle_deadly_rooms &1de4 a5 89 LDA &89 ; player_state &1de6 c9 09 CMP #&09 ; PLAYER_DEAD_AFTER_TEXT &1de8 f0 21 BEQ &1e0b ; leave &1dea 20 cc 18 JSR &18cc ; update_leaving_train &1ded 20 d9 18 JSR &18d9 ; update_jeep &1df0 20 36 19 JSR &1936 ; update_mackintosh_man &1df3 20 66 19 JSR &1966 ; update_mouse &1df6 20 c3 19 JSR &19c3 ; update_bartender &1df9 20 a4 19 JSR &19a4 ; update_tunnel &1dfc 20 cf 1a JSR &1acf ; update_bull &1dff 20 d4 19 JSR &19d4 ; update_shopkeeper &1e02 20 0c 1e JSR &1e0c ; update_skis &1e05 20 9f 1f JSR &1f9f ; update_recorder &1e08 20 cf 1f JSR &1fcf ; update_bomb ; leave &1e0b 60 RTS ; update_skis &1e0c 20 9d 16 JSR &169d ; use_string_table_zero &1e0f ad 46 15 LDA &1546 ; object_locations + &18 (OBJECT_SKIS) &1e12 c9 fe CMP #&fe ; ROOM_WEARING &1e14 f0 0c BEQ &1e22 ; is_wearing_skis &1e16 ad 0f 15 LDA &150f ; player_room &1e19 c9 93 CMP #&93 ; ROOM_93 ; "on a steep slope" &1e1b f0 2b BEQ &1e48 ; kill_player_for_not_wearing_skis &1e1d c9 94 CMP #&94 ; ROOM_94 ; "on a steep slope" &1e1f f0 27 BEQ &1e48 ; kill_player_for_not_wearing_skis ; leave &1e21 60 RTS ; is_wearing_skis &1e22 ad 0f 15 LDA &150f ; player_room &1e25 c9 93 CMP #&93 ; ROOM_93 ; "on a steep slope" &1e27 f0 17 BEQ &1e40 ; check_for_waxed_skis &1e29 c9 94 CMP #&94 ; ROOM_94 ; "on a steep slope" &1e2b f0 13 BEQ &1e40 ; check_for_waxed_skis &1e2d c9 92 CMP #&92 ; ROOM_92 ; "at the top of an icy slope" &1e2f f0 f0 BEQ &1e21 ; leave &1e31 c9 95 CMP #&95 ; ROOM_95 ; "at the bottom of the ski slope" &1e33 f0 ec BEQ &1e21 ; leave &1e35 a2 01 LDX #&01 ; string_201 : "Your skis cross and you land flat on your face! " &1e37 20 52 1e JSR &1e52 ; use_string_table_two ; kill_player_after_writing_string_without_punctuation &1e3a 20 8e 16 JSR &168e ; end_string_without_punctuation &1e3d 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; check_for_waxed_skis &1e40 ad 28 15 LDA &1528 ; object_states + &18 (OBJECT_SKIS) &1e43 c9 01 CMP #&01 ; &171 - &170 : string_171 : "are long and slender with curved, pointed tips. " &1e45 f0 06 BEQ &1e4d ; kill_player_for_wearing_unwaxed_skis &1e47 60 RTS ; kill_player_for_not_wearing_skis &1e48 a2 c9 LDX #&c9 ; string_0c9 : "The snow is very deep and you sink in it up to your neck! " &1e4a 4c 3a 1e JMP &1e3a ; kill_player_after_writing_string_without_punctuation ; kill_player_for_wearing_unwaxed_skis &1e4d a2 ca LDX #&ca ; string_0ca : "The skis do not move freely over the snow and you stumble! " &1e4f 4c 3a 1e JMP &1e3a ; kill_player_after_writing_string_without_punctuation ; use_string_table_two &1e52 a9 02 LDA #&02 &1e54 4c 9f 16 JMP &169f ; set_string_table_id ; get_word_or_i_can't_guess &1e57 20 a2 16 JSR &16a2 ; use_string_table_one &1e5a 20 8e 16 JSR &168e ; end_string_without_punctuation &1e5d 20 7e 1c JSR &1c7e ; get_word &1e60 c0 ff CPY #&ff ; WORD_NONE &1e62 f0 08 BEQ &1e6c ; to_i_can't_guess &1e64 b9 30 07 LDA &0730,Y ; tokenised_words_value &1e67 aa TAX &1e68 b9 31 07 LDA &0731,Y ; tokenised_words_type ; leave &1e6b 60 RTS ; to_i_can't_guess &1e6c 4c 9e 1c JMP &1c9e ; i_can't_guess ; handle_get &1e6f 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &1e72 c0 ff CPY #&ff ; WORD_NONE &1e74 f0 f5 BEQ &1e6b ; leave &1e76 c9 03 CMP #&03 ; WORD_OBJECT &1e78 90 3a BCC &1eb4 ; to_i_can't_make_head_nor_tail_of_that &1e7a f0 07 BEQ &1e83 ; handle_get_object &1e7c e0 13 CPX #&13 ; NOUN_EVERYTHING &1e7e d0 37 BNE &1eb7 ; to_you_can't_do_that &1e80 4c 2b 1f JMP &1f2b ; handle_get_everything ; handle_get_object &1e83 bd 2e 15 LDA &152e,X ; object_locations &1e86 cd 0f 15 CMP &150f ; player_room &1e89 f0 3a BEQ &1ec5 ; get_object &1e8b c9 fe CMP #&fe ; ROOM_WEARING &1e8d f0 36 BEQ &1ec5 ; get_object &1e8f c9 ff CMP #&ff ; ROOM_CARRYING &1e91 f0 27 BEQ &1eba ; you're_already_holding_the_object &1e93 e0 1d CPX #&1d ; OBJECT_UNIFORM &1e95 d0 15 BNE &1eac ; you_can't_see_it &1e97 ad 34 15 LDA &1534 ; object_locations + &6 (OBJECT_CORPSE) &1e9a cd 0f 15 CMP &150f ; player_room &1e9d d0 0d BNE &1eac ; you_can't_see_it &1e9f ad 16 15 LDA &1516 ; object_states + &6 (OBJECT_CORPSE) &1ea2 c9 01 CMP #&01 ; &145 - &144 : string_145 : "is dressed in a military uniform. " &1ea4 d0 06 BNE &1eac ; you_can't_see_it &1ea6 ee 16 15 INC &1516 ; object_states + &6 (OBJECT_CORPSE) ; string_146 : "is sprawled in the road. " &1ea9 4c c5 1e JMP &1ec5 ; get_object ; you_can't_see_it &1eac 20 52 1e JSR &1e52 ; use_string_table_two &1eaf a2 00 LDX #&00 ; string_200 : "You can't see it! " &1eb1 4c 55 16 JMP &1655 ; write_string_and_newline ; to_i_can't_make_head_nor_tail_of_that &1eb4 4c 3f 1c JMP &1c3f ; i_can't_make_head_nor_tail_of_that ; to_you_can't_do_that &1eb7 4c 99 1c JMP &1c99 ; you_can't_do_that ; you're_already_holding_the_object &1eba 8a TXA &1ebb a8 TAY &1ebc a2 1f LDX #&1f ; string_11f : "You're already holding the " &1ebe 4c eb 1e JMP &1eeb ; write_object_Y_name_and_newline ; immovable_objects &1ec1 01 ; OBJECT_BANDIT &1ec2 06 ; OBJECT_CORPSE &1ec3 08 ; OBJECT_FRAME &1ec4 0e ; OBJECT_MIRROR ; get_object &1ec5 a0 03 LDY #&03 &1ec7 8a TXA ; check_for_immovable_object_loop &1ec8 d9 c1 1e CMP &1ec1,Y ; immovable_objects &1ecb f0 3f BEQ &1f0c ; it's_immovable &1ecd 88 DEY &1ece 10 f8 BPL &1ec8 ; check_for_immovable_object_loop &1ed0 c9 00 CMP #&00 ; OBJECT_ALE &1ed2 f0 40 BEQ &1f14 ; it_runs_through_your_fingers &1ed4 c9 0f CMP #&0f ; OBJECT_PETROL &1ed6 f0 3c BEQ &1f14 ; it_runs_through_your_fingers &1ed8 c9 16 CMP #&16 ; OBJECT_ROPE &1eda f0 3d BEQ &1f19 ; get_rope ; set_object_as_carried &1edc a9 ff LDA #&ff ; ROOM_CARRYING &1ede 9d 2e 15 STA &152e,X ; object_locations &1ee1 8a TXA &1ee2 a8 TAY &1ee3 a2 1e LDX #&1e ; string_11e : "You have the" ; write_string_X_object_Y_name_and_newline &1ee5 20 f1 1e JSR &1ef1 ; write_string_X_and_object_Y_name &1ee8 4c e7 ff JMP &ffe7 ; OSNEWL ; write_object_Y_name_and_newline &1eeb 20 f9 1e JSR &1ef9 ; write_object_Y_name &1eee 4c e7 ff JMP &ffe7 ; OSNEWL ; write_string_X_and_object_Y_name &1ef1 20 8e 16 JSR &168e ; end_string_without_punctuation &1ef4 20 cc 08 JSR &08cc ; write_string &1ef7 a2 a6 LDX #&a6 ; string_1a6 : " " ; write_object_Y_name &1ef9 20 8e 16 JSR &168e ; end_string_without_punctuation &1efc 20 a2 16 JSR &16a2 ; use_string_table_one &1eff 20 cc 08 JSR &08cc ; write_string &1f02 b9 4c 15 LDA &154c,Y ; object_string_ids &1f05 aa TAX &1f06 20 93 16 JSR &1693 ; end_string_with_period &1f09 4c cc 08 JMP &08cc ; write_string ; it's_immovable &1f0c 20 8e 16 JSR &168e ; end_string_without_punctuation &1f0f a2 a5 LDX #&a5 ; string_1a5 : "It's immovable! " &1f11 4c 55 16 JMP &1655 ; write_string_and_newline ; it_runs_through_your_fingers &1f14 a2 a4 LDX #&a4 ; string_1a4 : "It runs through your fingers! " &1f16 4c 55 16 JMP &1655 ; write_string_and_newline ; get_rope &1f19 ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &1f1c c9 01 CMP #&01 ; &16b - &16a : string_16b : "is attached to a bell. " &1f1e d0 bc BNE &1edc ; set_object_as_carried ; pull_rope &1f20 20 a2 16 JSR &16a2 ; use_string_table_one &1f23 20 8e 16 JSR &168e ; end_string_without_punctuation &1f26 a2 92 LDX #&92 ; string_192 : "You pull the rope and the bell emits a loud clang! " &1f28 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_get_everything &1f2b 20 78 1c JSR &1c78 ; handle_search &1f2e a2 00 LDX #&00 ; get_everything_loop &1f30 bd 2e 15 LDA &152e,X ; object_locations &1f33 cd 0f 15 CMP &150f ; player_room &1f36 f0 06 BEQ &1f3e ; get_everything_object ; consider_next_object &1f38 e8 INX &1f39 e0 1e CPX #&1e ; OBJECT_LAST + 1 &1f3b 90 f3 BCC &1f30 ; get_everything_loop &1f3d 60 RTS ; get_everything_object &1f3e 8a TXA &1f3f 48 PHA &1f40 20 c5 1e JSR &1ec5 ; get_object &1f43 68 PLA &1f44 aa TAX &1f45 4c 38 1f JMP &1f38 ; consider_next_object ; handle_drop &1f48 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &1f4b c0 ff CPY #&ff ; WORD_NONE &1f4d d0 01 BNE &1f50 ; handle_drop_word &1f4f 60 RTS ; handle_drop_word &1f50 c9 03 CMP #&03 ; WORD_OBJECT &1f52 90 09 BCC &1f5d ; to_i_can't_make_head_nor_tail_of_that &1f54 f0 0d BEQ &1f63 ; handle_drop_object &1f56 e0 13 CPX #&13 ; NOUN_EVERYTHING &1f58 d0 06 BNE &1f60 ; to_you_can't_do_that &1f5a 4c 80 1f JMP &1f80 ; drop_everything ; to_i_can't_make_head_nor_tail_of_that &1f5d 4c 3f 1c JMP &1c3f ; i_can't_make_head_nor_tail_of_that ; to_you_can't_do_that &1f60 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_drop_object &1f63 bd 2e 15 LDA &152e,X ; object_locations &1f66 c9 ff CMP #&ff ; ROOM_CARRYING &1f68 d0 06 BNE &1f70 ; you're_not_holding_the_object &1f6a 20 79 1f JSR &1f79 ; put_object_X_in_player_room &1f6d 4c 9d 1a JMP &1a9d ; write_ok ; you're_not_holding_the_object &1f70 8a TXA &1f71 a8 TAY &1f72 20 52 1e JSR &1e52 ; use_string_table_two &1f75 aa TAX ; string_202 : "You're not holding the" &1f76 4c e5 1e JMP &1ee5 ; write_string_X_object_Y_name_and_newline ; put_object_X_in_player_room &1f79 ad 0f 15 LDA &150f ; player_room &1f7c 9d 2e 15 STA &152e,X ; object_locations ; leave &1f7f 60 RTS ; drop_everything &1f80 20 84 1a JSR &1a84 ; handle_inventory &1f83 a2 1d LDX #&1d &1f85 a0 00 LDY #&00 ; drop_everything_loop &1f87 bd 2e 15 LDA &152e,X ; object_locations &1f8a c9 ff CMP #&ff ; ROOM_CARRYING &1f8c f0 0a BEQ &1f98 ; is_carrying_object ; consider_next_object &1f8e ca DEX &1f8f 10 f6 BPL &1f87 ; drop_everything_loop &1f91 c0 00 CPY #&00 &1f93 f0 ea BEQ &1f7f ; leave &1f95 4c 84 1a JMP &1a84 ; handle_inventory ; is_carrying_object &1f98 20 79 1f JSR &1f79 ; put_object_X_in_player_room &1f9b c8 INY &1f9c 4c 8e 1f JMP &1f8e ; consider_next_object ; update_recorder &1f9f a2 15 LDX #&15 ; OBJECT_RECORDER &1fa1 a0 80 LDY #&80 ; string_180 : "B a n g! The recorder explodes! " ; update_explosive_object &1fa3 bd 10 15 LDA &1510,X ; object_states &1fa6 c9 02 CMP #&02 ; &169 - &167 : string_169 : "is about to explode! " (OBJECT_RECORDER) # ; &13b - &139 : string_13b : "is alight! Get rid of it! " (OBJECT_BOMB) &1fa8 f0 01 BEQ &1fab ; is_about_to_explode ; leave &1faa 60 RTS ; is_about_to_explode &1fab bd 2e 15 LDA &152e,X ; object_locations &1fae c9 ff CMP #&ff ; ROOM_CARRYING &1fb0 f0 05 BEQ &1fb7 ; kill_player_depending_on_explosive_state &1fb2 cd 0f 15 CMP &150f ; player_room &1fb5 d0 f3 BNE &1faa ; leave ; kill_player_depending_on_explosive_state &1fb7 ad 01 15 LDA &1501 ; explosive_state &1fba f0 1a BEQ &1fd6 ; update_explosive_state ; kill_player_after_removing_object &1fbc 20 a2 16 JSR &16a2 ; use_string_table_one &1fbf 20 8e 16 JSR &168e ; end_string_without_punctuation &1fc2 8d 01 15 STA &1501 ; explosive_state &1fc5 a9 fc LDA #&fc ; ROOM_DESTROYED &1fc7 9d 2e 15 STA &152e,X ; object_locations &1fca 98 TYA &1fcb aa TAX &1fcc 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; update_bomb &1fcf a2 02 LDX #&02 ; OBJECT_BOMB &1fd1 a0 8d LDY #&8d ; string_18d : "The bomb explodes in a ball of flame, leaving your blackened remains scattered all around. " &1fd3 4c a3 1f JMP &1fa3 ; update_explosive_object ; update_explosive_state &1fd6 ee 01 15 INC &1501 ; explosive_state &1fd9 60 RTS ; handle_examine &1fda 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &1fdd c0 ff CPY #&ff ; WORD_NONE &1fdf d0 01 BNE &1fe2 ; handle_examine_word &1fe1 60 RTS ; handle_examine_word &1fe2 c9 03 CMP #&03 ; WORD_OBJECT &1fe4 f0 03 BEQ &1fe9 ; handle_examine_object &1fe6 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_examine_object &1fe9 bd 2e 15 LDA &152e,X ; object_locations &1fec c9 fe CMP #&fe ; ROOM_WEARING &1fee b0 08 BCS &1ff8 ; write_object_description &1ff0 cd 0f 15 CMP &150f ; player_room &1ff3 f0 03 BEQ &1ff8 ; write_object_description &1ff5 4c ac 1e JMP &1eac ; you_can't_see_it ; write_object_description &1ff8 20 8e 16 JSR &168e ; end_string_without_punctuation &1ffb 20 a2 16 JSR &16a2 ; use_string_table_one &1ffe 8a TXA &1fff a8 TAY &2000 a2 10 LDX #&10 ; string_110 : "The " &2002 20 cc 08 JSR &08cc ; write_string &2005 b9 4c 15 LDA &154c,Y ; object_string_ids &2008 48 PHA &2009 aa TAX &200a 20 cc 08 JSR &08cc ; write_string &200d a2 a6 LDX #&a6 ; string_1a6 : " " &200f 20 cc 08 JSR &08cc ; write_string &2012 68 PLA &2013 18 CLC &2014 79 10 15 ADC &1510,Y ; object_states &2017 aa TAX &2018 d9 4c 15 CMP &154c,Y ; object_string_ids &201b d0 01 BNE &201e ; skip_default_description &201d e8 INX # Use default object description if object state is zero ; skip_default_description &201e c0 16 CPY #&16 ; OBJECT_ROPE &2020 f0 03 BEQ &2025 ; examine_rope ; to_write_string_and_newline &2022 4c 55 16 JMP &1655 ; write_string_and_newline ; examine_rope &2025 ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &2028 c9 03 CMP #&03 ; &16d - &16a : string_16d : "is tied to a" &202a 90 f6 BCC &2022 ; to_write_string_and_newline &202c 20 cc 08 JSR &08cc ; write_string &202f a2 a6 LDX #&a6 ; string_1a6 : " " &2031 20 cc 08 JSR &08cc ; write_string &2034 ae 02 15 LDX &1502 ; object_tied_to_rope &2037 bd 4c 15 LDA &154c,X ; object_string_ids &203a aa TAX &203b 20 93 16 JSR &1693 ; end_string_with_period &203e 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_break &2041 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2044 c0 ff CPY #&ff ; WORD_NONE &2046 d0 01 BNE &2049 ; handle_break_word &2048 60 RTS ; handle_break_word &2049 c9 03 CMP #&03 ; WORD_OBJECT &204b f0 03 BEQ &2050 ; handle_break_object &204d 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_break_object &2050 bd 2e 15 LDA &152e,X ; object_locations &2053 c9 ff CMP #&ff ; ROOM_CARRYING &2055 f0 03 BEQ &205a ; break_object &2057 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; break_object &205a e0 15 CPX #&15 ; OBJECT_RECORDER &205c f0 0e BEQ &206c ; break_recorder &205e e0 02 CPX #&02 ; OBJECT_BOMB &2060 f0 0f BEQ &2071 ; break_bomb &2062 a9 fc LDA #&fc ; ROOM_DESTROYED &2064 9d 2e 15 STA &152e,X ; object_locations &2067 a2 21 LDX #&21 ; string_121 : "You break it, then stamp the fragments out of existence! " &2069 4c 55 16 JMP &1655 ; write_string_and_newline ; break_recorder &206c a0 80 LDY #&80 ; string_180 : "B a n g! The recorder explodes! " &206e 4c bc 1f JMP &1fbc ; kill_player_after_removing_object ; break_bomb &2071 a0 8d LDY #&8d ; string_18d : "The bomb explodes in a ball of flame, leaving your blackened remains scattered all around. " &2073 4c bc 1f JMP &1fbc ; kill_player_after_removing_object ; play_carried_recorder &2076 20 8e 16 JSR &168e ; end_string_without_punctuation &2079 20 a2 16 JSR &16a2 ; use_string_table_one &207c a2 7d LDX #&7d ; string_17d ; "There is a hiss as the tape begins to play. . . " ; play_recorder_loop &207e 20 6a 17 JSR &176a ; write_string_slowly &2081 e8 INX ; string_17e : "agent Hanson, this is Control. General Garantz has gone too far this time! He's threatening to nuke the lot of us if we don't comply with certain demands he's making! You've gotta stop him! Assassinate him, Rick, it's our only chance! " &2082 e0 80 CPX #&80 ; &7f + 1 : string_17f : "stay the night at the tavern in the next village and you'll receive further instructions. Good luck! Hey Rick, I nearly forgot, this tape will self destruct almost immediately! " &2084 d0 f8 BNE &207e ; play_recorder_loop &2086 a9 02 LDA #&02 ; &169 - &167 : string_169 : "is about to explode! " &2088 8d 25 15 STA &1525 ; object_states + &15 (OBJECT_RECORDER) &208b ad e2 14 LDA &14e2 ; opponent_room &208e cd 0f 15 CMP &150f ; player_room &2091 d0 0c BNE &209f ; mackintosh_man_is_in_different_room &2093 ae e3 14 LDX &14e3 ; opponent_id &2096 e0 2e CPX #&2e ; string_12e : "A strange man wearing a mackintosh with the collar turned up, a hat and a pair of dark glasses is here! " &2098 d0 05 BNE &209f ; mackintosh_man_is_in_different_room &209a a2 82 LDX #&82 ; string_182 : "The man hears the tape and shoots you! " &209c 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; mackintosh_man_is_in_different_room &209f 4c e7 ff JMP &ffe7 ; OSNEWL ; handle_play &20a2 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &20a5 c0 ff CPY #&ff ; WORD_NONE &20a7 d0 01 BNE &20aa ; handle_play_word &20a9 60 RTS ; handle_play_word &20aa c9 03 CMP #&03 ; WORD_OBJECT &20ac f0 03 BEQ &20b1 ; handle_play_object ; to_you_can't_do_that &20ae 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_play_object &20b1 e0 01 CPX #&01 ; OBJECT_BANDIT &20b3 f0 11 BEQ &20c6 ; handle_play_bandit &20b5 e0 15 CPX #&15 ; OBJECT_RECORDER &20b7 d0 f5 BNE &20ae ; to_you_can't_do_that ; handle_play_recorder &20b9 ad 43 15 LDA &1543 ; object_locations + &15 (OBJECT_RECORDER) &20bc c9 ff CMP #&ff ; ROOM_CARRYING &20be f0 03 BEQ &20c3 ; to_play_carried_recorder &20c0 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; to_play_carried_recorder &20c3 4c 76 20 JMP &2076 ; to_play_carried_recorder ; handle_play_bandit &20c6 ad 0f 15 LDA &150f ; player_room &20c9 c9 34 CMP #&34 ; ROOM_34 ; "in the entrance passage of the tavern" &20cb f0 03 BEQ &20d0 ; handle_play_bandit_in_room_34 &20cd 4c ac 1e JMP &1eac ; you_can't_see_it ; handle_play_bandit_in_room_34 &20d0 ad 39 15 LDA &1539 ; object_locations + &b (OBJECT_IMPI) &20d3 c9 fb CMP #&fb ; ROOM_IN_BANDIT &20d5 f0 03 BEQ &20da ; bandit_has_impi &20d7 4c f8 1f JMP &1ff8 ; write_object_description ; bandit_has_impi &20da a9 34 LDA #&34 ; ROOM_34 ; "in the entrance passage of the tavern" &20dc 8d 41 15 STA &1541 ; object_locations + &13 (OBJECT_QUHUT) &20df ee 39 15 INC &1539 ; object_locations + &b (OBJECT_IMPI) ; ROOM_DESTROYED &20e2 a2 d8 LDX #&d8 ; string_0d8 : "The fruit machine plays a jolly tune and one Quhut falls to the floor! " &20e4 20 9d 16 JSR &169d ; use_string_table_zero &20e7 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_go &20ea 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &20ed c0 ff CPY #&ff ; WORD_NONE &20ef f0 0a BEQ &20fb ; leave &20f1 c9 01 CMP #&01 ; WORD_DIRECTION &20f3 f0 03 BEQ &20f8 ; to_consider_word_as_verb &20f5 4c 3f 1c JMP &1c3f ; i_can't_make_head_nor_tail_of_that ; to_consider_word_as_verb &20f8 4c 5f 1d JMP &1d5f ; consider_word_as_verb ; leave &20fb 60 RTS ; handle_throw &20fc 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &20ff c0 ff CPY #&ff ; WORD_NONE &2101 f0 f8 BEQ &20fb ; leave &2103 c9 03 CMP #&03 ; WORD_OBJECT &2105 f0 03 BEQ &210a ; handle_throw_object &2107 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_throw_object &210a bd 2e 15 LDA &152e,X ; object_locations &210d c9 ff CMP #&ff ; ROOM_CARRYING &210f d0 0f BNE &2120 ; to_handle_drop_object &2111 e0 02 CPX #&02 ; OBJECT_BOMB &2113 f0 0e BEQ &2123 ; handle_throw_bomb &2115 e0 15 CPX #&15 ; OBJECT_RECORDER &2117 f0 14 BEQ &212d ; handle_throw_recorder &2119 e0 16 CPX #&16 ; OBJECT_ROPE &211b d0 03 BNE &2120 ; to_handle_drop_object &211d 4c 7f 21 JMP &217f ; handle_throw_rope ; to_handle_drop_object &2120 4c 63 1f JMP &1f63 ; handle_drop_object ; handle_throw_bomb &2123 ad 12 15 LDA &1512 ; object_states + &2 (OBJECT_BOMB) &2126 c9 02 CMP #&02 ; &13b - &139 : string_13b : "is alight! Get rid of it! " &2128 f0 19 BEQ &2143 ; throw_exploding_bomb &212a 4c 63 1f JMP &1f63 ; handle_drop_object ; handle_throw_recorder &212d ad 25 15 LDA &1525 ; object_states + &15 (OBJECT_RECORDER) &2130 c9 02 CMP #&02 ; &169 - &167 : string_169 : "is about to explode! " &2132 d0 ec BNE &2120 ; to_handle_drop_object ; throw_exploding_recorder &2134 a9 fc LDA #&fc ; ROOM_DESTROYED &2136 8d 43 15 STA &1543 ; object_locations + &15 (OBJECT_RECORDER) &2139 20 b0 21 JSR &21b0 ; phew_that_was_a_close_one &213c ca DEX ; string_080 : "B a n g! The recorder explodes! " &213d 4c 55 16 JMP &1655 ; write_string_and_newline ; to_osnewl &2140 4c e7 ff JMP &ffe7 ; OSNEWL ; throw_exploding_bomb &2143 a9 fc LDA #&fc ; ROOM_DESTROYED &2145 8d 30 15 STA &1530 ; object_locations + &2 (OBJECT_BOMB) &2148 20 b0 21 JSR &21b0 ; phew_that_was_a_close_one &214b ad 0f 15 LDA &150f ; player_room &214e c9 97 CMP #&97 ; ROOM_97 ; "crouched in a dense thicket" &2150 d0 ee BNE &2140 ; to_osnewl &2152 ad e7 14 LDA &14e7 ; jeep_state &2155 c9 92 CMP #&92 ; string_092 : "The jeep passes directly in front of you. " &2157 f0 14 BEQ &216d ; throw_bomb_at_passing_jeep &2159 c9 93 CMP #&93 ; string_093 : "The jeep accelerates into the distance. " &215b f0 08 BEQ &2165 ; throw_bomb_at_accelerating_jeep &215d 20 9d 16 JSR &169d ; use_string_table_zero &2160 a2 d9 LDX #&d9 ; string_0d9 : "The bomb explodes in the distance! " &2162 4c 55 16 JMP &1655 ; write_string_and_newline ; throw_bomb_at_accelerating_jeep &2165 20 9d 16 JSR &169d ; use_string_table_zero &2168 a2 95 LDX #&95 ; string_195 : "You hurl the petrol bomb into the jeep. There is a brilliant flash and the jeep is blasted into a thousand pieces, one of which happens to lodge in your temple. " &216a 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; throw_bomb_at_passing_jeep &216d a9 02 LDA #&02 ; &09b - &099 : string_09b : "a jeep has skidded across the road but does not seem to be damaged. The driver is sprawled in the road" &216f 8d db 14 STA &14db ; room_states + &db &2172 a9 db LDA #&db ; ROOM_db ; "standing on a long, straight road" &2174 8d 34 15 STA &1534 ; object_locations + &6 (OBJECT_CORPSE) &2177 20 9d 16 JSR &169d ; use_string_table_zero &217a a2 94 LDX #&94 ; string_194 : "You throw the petrol bomb in front of the jeep. It explodes in searing ball of flame. The jeep swerves and screeches to a halt. &217c 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_throw_rope &217f ad 0f 15 LDA &150f ; player_room &2182 c9 85 CMP #&85 ; ROOM_85 ; "at the foot of the giant cliff" &2184 f0 03 BEQ &2189 ; handle_throw_rope_in_room_85 &2186 4c 63 1f JMP &1f63 ; handle_drop_object ; handle_throw_rope_in_room_85 &2189 ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &218c c9 02 CMP #&02 ; &16c - &16a : string_16c : "is long and could be useful! " &218e f0 0f BEQ &219f ; throw_rope_without_hook &2190 ad 02 15 LDA &1502 ; object_tied_to_rope &2193 c9 0a CMP #&0a ; OBJECT_HOOK &2195 d0 08 BNE &219f ; throw_rope_without_hook &2197 a0 85 LDY #&85 ; string_185 : "the hook lodges in a crevice above the ledge and the rope hangs down, invitingly! " &2199 8c 03 15 STY &1503 ; rope_tied_state &219c 4c a1 21 JMP &21a1 ; throw_rope_up_cliff ; throw_rope_without_hook &219f a0 84 LDY #&84 ; string_184 : "it hits the face with a smack and falls back to earth. " ; throw_rope_up_cliff &21a1 a2 83 LDX #&83 ; string_183 : "You hurl the rope up the cliff. " &21a3 20 cc 08 JSR &08cc ; write_string &21a6 a9 85 LDA #&85 ; ROOM_85 ; "at the foot of the giant cliff" &21a8 8d 44 15 STA &1544 ; object_locations + &16 (OBJECT_ROPE) &21ab 98 TYA &21ac aa TAX &21ad 4c 55 16 JMP &1655 ; write_string_and_newline ; phew_that_was_a_close_one &21b0 a9 9b LDA #&9b ; OFFSET_UPPERCASE # "Phew!" with a capital P &21b2 85 86 STA &86 ; letter_byte_offset &21b4 20 a2 16 JSR &16a2 ; use_string_table_one &21b7 20 8e 16 JSR &168e ; end_string_without_punctuation &21ba a2 81 LDX #&81 ; string_181 : "phew! That was a close one! " &21bc 4c cc 08 JMP &08cc ; write_string ; wearable_objects &21bf 18 ; OBJECT_SKIS &21c0 1a ; OBJECT_SUIT &21c1 1d ; OBJECT_UNIFORM ; handle_wear &21c2 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &21c5 c0 ff CPY #&ff ; WORD_NONE &21c7 d0 01 BNE &21ca ; handle_wear_word &21c9 60 RTS ; handle_wear_word &21ca c9 03 CMP #&03 ; WORD_OBJECT &21cc f0 03 BEQ &21d1 ; handle_wear_object ; to_you_can't_do_that &21ce 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_wear_object &21d1 bd 2e 15 LDA &152e,X ; object_locations &21d4 c9 ff CMP #&ff ; ROOM_CARRYING &21d6 f0 0c BEQ &21e4 ; check_if_object_is_wearable &21d8 c9 fe CMP #&fe ; ROOM_WEARING &21da f0 03 BEQ &21df ; you're_wearing_it &21dc 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; you're_wearing_it &21df a2 24 LDX #&24 ; string_124 : "You're wearing it! " &21e1 4c 55 16 JMP &1655 ; write_string_and_newline ; check_if_object_is_wearable &21e4 a0 03 LDY #&03 # Bug: checks four objects, not three &21e6 8a TXA ; check_wearable_objects_loop &21e7 d9 bf 21 CMP &21bf,Y ; wearable_objects &21ea f0 06 BEQ &21f2 ; wear_object &21ec 88 DEY &21ed 10 f8 BPL &21e7 ; check_wearable_objects_loop &21ef 4c ce 21 JMP &21ce ; to_you_can't_do_that ; wear_object &21f2 a9 fe LDA #&fe ; ROOM_WEARING &21f4 9d 2e 15 STA &152e,X ; object_locations &21f7 4c 9d 1a JMP &1a9d ; write_ok ; update_mirror &21fa ad 0f 15 LDA &150f ; player_room &21fd c9 bb CMP #&bb ; ROOM_bb ; "in a narrow corridor" &21ff f0 0a BEQ &220b ; update_mirror_to_room_b8 &2201 c9 b8 CMP #&b8 ; ROOM_b8 ; "in a mirrored washroom" &2203 f0 02 BEQ &2207 ; update_mirror_location &2205 a9 3f LDA #&3f ; ROOM_3f ; "in a small, tiled bathroom" ; update_mirror_location &2207 8d 3c 15 STA &153c ; object_locations + &e (OBJECT_MIRROR) &220a 60 RTS ; update_mirror_to_room_b8 &220b a9 b8 LDA #&b8 ; ROOM_b8 ; "in a mirrored washroom" &220d 4c 07 22 JMP &2207 ; update_mirror_location ; unused # Unused code &2210 8d 0f 15 STA &150f ; player_room ; handle_help &2213 20 a2 16 JSR &16a2 ; use_string_table_one &2216 20 8e 16 JSR &168e ; end_string_without_punctuation &2219 a8 TAY &221a a2 98 LDX #&98 ; string_198 : "The main commands this program understands are: " &221c 20 55 16 JSR &1655 ; write_string_and_newline &221f a2 00 LDX #&00 &2221 a9 b4 LDA #&b4 &2223 85 6c STA &6c ; vocabulary_address_low &2225 a9 3c LDA #&3c ; &3cb4 = vocabulary &2227 85 6d STA &6d ; vocabulary_address_high &2229 20 54 22 JSR &2254 ; use_highlight_colour ; write_vocabulary_loop &222c b1 6c LDA (&6c),Y ; vocabulary_address &222e 30 13 BMI &2243 ; write_vocabulary_last_character &2230 49 63 EOR #&63 ; "c" # Deobfuscate vocabulary &2232 20 ee ff JSR &ffee ; OSWRCH ; move_to_next_word &2235 18 CLC &2236 a9 01 LDA #&01 &2238 65 6c ADC &6c ; vocabulary_address_low &223a 85 6c STA &6c ; vocabulary_address_low &223c 90 02 BCC &2240 ; skip_page &223e e6 6d INC &6d ; vocabulary_address_high ; skip_page &2240 4c 2c 22 JMP &222c ; write_vocabulary_loop ; write_vocabulary_last_character &2243 29 7f AND #&7f &2245 20 ee ff JSR &ffee ; OSWRCH &2248 20 54 22 JSR &2254 ; use_highlight_colour &224b 20 e0 ff JSR &ffe0 ; OSRDCH &224e e8 INX &224f e0 35 CPX #&35 # Stop after "read" &2251 90 e2 BCC &2235 ; move_to_next_word &2253 60 RTS ; use_highlight_colour &2254 20 e7 ff JSR &ffe7 ; OSNEWL &2257 a5 71 LDA &71 ; highlight_colour &2259 4c ee ff JMP &ffee ; OSWRCH ; update_jeep_guards &225c ad 0f 15 LDA &150f ; player_room &225f c9 9b CMP #&9b ; ROOM_9b ; "sitting in the uncomfortable driver's seat of the jeep" &2261 f0 01 BEQ &2264 ; is_in_room_9b ; leave &2263 60 RTS ; is_in_room_9b &2264 20 9d 16 JSR &169d ; use_string_table_zero &2267 85 7c STA &7c ; text_ending # A = 0, TEXT_END_NONE &2269 ad 9b 14 LDA &149b ; room_states + &9b &226c c9 04 CMP #&04 ; &1a0 - &19c : string_1a0 : "outside, the gates to the base are open" &226e f0 f3 BEQ &2263 ; leave &2270 ad 4b 15 LDA &154b ; object_locations + &1d (OBJECT_UNIFORM) &2273 c9 fe CMP #&fe ; ROOM_WEARING &2275 f0 05 BEQ &227c ; is_wearing_uniform &2277 a2 a1 LDX #&a1 ; string_0a1 : ""You're not one of our drivers! You're an imposter", shouts the guard, and splatters your brains over the windscreen with two shots from his rifle! " &2279 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; is_wearing_uniform &227c ad 05 15 LDA &1505 ; guards_state &227f f0 05 BEQ &2286 ; update_guards_state &2281 a2 a3 LDX #&a3 ; string_0a3 : ""Well, well, well, well, well! What have we here? Looks like you're an imposter, chum", says the guard, and blows a gaping hole in your chest with his rifle! " &2283 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; update_guards_state &2286 ee 05 15 INC &1505 ; guards_state &2289 a2 a2 LDX #&a2 ; string_0a2 : ""Password", he says, barely opening his mouth. " &228b 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_galoop &228e ad 0f 15 LDA &150f ; player_room &2291 c9 9b CMP #&9b ; ROOM_9b ; "sitting in the uncomfortable driver's seat of the jeep" &2293 d0 14 BNE &22a9 ; nothing_happens &2295 a9 04 LDA #&04 ; &1a0 - &19c : string_1a0 : "outside, the gates to the base are open" &2297 8d 9b 14 STA &149b ; room_states + &9b &229a a2 a4 LDX #&a4 # Unnecessary code; see &22a4 &229c 20 6a 15 JSR &156a ; handle_look &229f 20 9d 16 JSR &169d ; use_string_table_zero &22a2 85 7c STA &7c ; text_ending # A = 0, TEXT_END_NONE &22a4 a2 a4 LDX #&a4 ; string_0a4 : ""Enter", says the guard through his teeth. " &22a6 4c 55 16 JMP &1655 ; write_string_and_newline ; nothing_happens &22a9 20 a2 16 JSR &16a2 ; use_string_table_one &22ac 20 8e 16 JSR &168e ; end_string_without_punctuation &22af a2 9b LDX #&9b ; string_19b : "Nothing happens." &22b1 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_drive &22b4 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &22b7 c0 ff CPY #&ff ; WORD_NONE &22b9 d0 01 BNE &22bc ; handle_drive_word &22bb 60 RTS ; handle_drive_word &22bc c9 04 CMP #&04 ; WORD_NOUN &22be f0 03 BEQ &22c3 ; handle_drive_noun ; to_you_can't_do_that &22c0 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_drive_noun &22c3 e0 02 CPX #&02 ; NOUN_CAR &22c5 f0 34 BEQ &22fb ; drive_car &22c7 ad 0f 15 LDA &150f ; player_room &22ca c9 98 CMP #&98 ; ROOM_98 ; "sitting in the uncomfortable driver's seat of the jeep" &22cc 90 f2 BCC &22c0 ; to_you_can't_do_that &22ce c9 9d CMP #&9d ; ROOM_9d ; "standing in the carpark by the battered frame of the jeep" &22d0 b0 ee BCS &22c0 ; to_you_can't_do_that &22d2 c9 9b CMP #&9b ; ROOM_9b ; "sitting in the uncomfortable driver's seat of the jeep" &22d4 f0 0a BEQ &22e0 ; check_for_gate &22d6 c9 9c CMP #&9c ; ROOM_9c ; "sitting in the uncomfortable driver's seat of the jeep" &22d8 f0 1c BEQ &22f6 ; drive_jeep_into_building ; drive_jeep_without_dying &22da ee 0f 15 INC &150f ; player_room &22dd 4c 6a 15 JMP &156a ; handle_look ; check_for_gate &22e0 ad 9b 14 LDA &149b ; room_states + &9b &22e3 c9 04 CMP #&04 ; &1a0 - &19c : string_1a0 : "outside, the gates to the base are open" &22e5 f0 f3 BEQ &22da ; drive_jeep_without_dying &22e7 a0 cc LDY #&cc ; string_0cc : "gate! " ; drive_jeep_into &22e9 a2 cb LDX #&cb ; string_0cb : "You drive the jeep straight into the " &22eb 20 9d 16 JSR &169d ; use_string_table_zero &22ee 20 cc 08 JSR &08cc ; write_string &22f1 98 TYA &22f2 aa TAX &22f3 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; drive_jeep_into_building &22f6 a0 cd LDY #&cd ; string_0cd : "building! " &22f8 4c e9 22 JMP &22e9 ; drive_jeep_into ; drive_car &22fb ad 0f 15 LDA &150f ; player_room &22fe c9 61 CMP #&61 ; ROOM_61 ; "inside the scrapped automobile" &2300 d0 be BNE &22c0 ; to_you_can't_do_that &2302 a2 91 LDX #&91 ; string_191 : "It's a wreck! " &2304 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_dig &2307 20 a2 16 JSR &16a2 ; use_string_table_one &230a 20 8e 16 JSR &168e ; end_string_without_punctuation &230d ad 4a 15 LDA &154a ; object_locations + &1c (OBJECT_TROWEL) &2310 c9 ff CMP #&ff ; ROOM_CARRYING &2312 d0 19 BNE &232d ; dig_without_trowel &2314 ad 0f 15 LDA &150f ; player_room &2317 c9 7d CMP #&7d ; ROOM_7d ; "wading through a stenching patch of freshly dug manure" &2319 d0 08 BNE &2323 ; destroy_trowel &231b 8d 37 15 STA &1537 ; object_locations + &9 (OBJECT_GUN) &231e a2 26 LDX #&26 ; string_126 : "You scrape at the ground with the trowel and dig up a gun! " &2320 20 cc 08 JSR &08cc ; write_string ; destroy_trowel &2323 a2 1b LDX #&1b ; string_11b : "The rusty trowel breaks and you throw it away in disgust. " &2325 a9 fc LDA #&fc ; ROOM_DESTROYED &2327 8d 4a 15 STA &154a ; object_locations + &1c (OBJECT_TROWEL) &232a 4c 55 16 JMP &1655 ; write_string_and_newline ; dig_without_trowel &232d a2 1a LDX #&1a ; string_11a : "You scrape at the floor with your bare hands, leaving them cut and bruised! " &232f 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_insert &2332 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2335 c0 ff CPY #&ff ; WORD_NONE &2337 d0 01 BNE &233a ; handle_insert_word &2339 60 RTS ; handle_insert_word &233a c9 03 CMP #&03 ; WORD_OBJECT &233c f0 03 BEQ &2341 ; handle_insert_object ; to_you_can't_do_that &233e 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_insert_object &2341 bd 2e 15 LDA &152e,X ; object_locations &2344 c9 ff CMP #&ff ; ROOM_CARRYING &2346 f0 03 BEQ &234b ; handle_insert_carried_object &2348 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; handle_insert_carried_object &234b e0 0b CPX #&0b ; OBJECT_IMPI &234d d0 ef BNE &233e ; to_you_can't_do_that &234f 20 7e 1c JSR &1c7e ; get_word &2352 c0 ff CPY #&ff ; WORD_NONE &2354 f0 11 BEQ &2367 ; insert_impi &2356 b9 30 07 LDA &0730,Y ; tokenised_words_value &2359 aa TAX &235a b9 31 07 LDA &0731,Y ; tokenised_words_type &235d c9 03 CMP #&03 ; WORD_OBJECT &235f f0 02 BEQ &2363 ; handle_insert_carried_object_object &2361 c6 81 DEC &81 ; current_word # Forget word if not object ; handle_insert_carried_object_object &2363 e0 01 CPX #&01 ; OBJECT_BANDIT &2365 d0 d7 BNE &233e ; to_you_can't_do_that ; insert_impi &2367 ad 0f 15 LDA &150f ; player_room &236a c9 34 CMP #&34 ; ROOM_34 ; "in the entrance passage of the tavern" &236c d0 d0 BNE &233e ; to_you_can't_do_that &236e a9 fb LDA #&fb ; ROOM_IN_BANDIT &2370 8d 39 15 STA &1539 ; object_locations + &b (OBJECT_IMPI) &2373 4c 9d 1a JMP &1a9d ; write_ok ; are_you_sure &2376 20 a2 16 JSR &16a2 ; use_string_table_one &2379 20 8e 16 JSR &168e ; end_string_without_punctuation &237c a2 22 LDX #&22 ; room_122 : "Are you sure? " &237e 20 cc 08 JSR &08cc ; write_string ; get_y_or_n &2381 20 e0 ff JSR &ffe0 ; OSRDCH &2384 c9 59 CMP #&59 ; "Y" &2386 f0 0f BEQ &2397 ; leave_with_zero &2388 c9 79 CMP #&79 ; "y" &238a f0 0b BEQ &2397 ; leave_with_zero &238c c9 4e CMP #&4e ; "N" &238e f0 0c BEQ &239c ; leave_with_one &2390 c9 6e CMP #&6e ; "n" &2392 f0 08 BEQ &239c ; leave_with_one &2394 4c 81 23 JMP &2381 ; get_y_or_n ; leave_with_zero &2397 a0 00 LDY #&00 # Leave with zero to indicate yes &2399 4c ee ff JMP &ffee ; OSWRCH ; leave_with_one &239c a0 01 LDY #&01 # Leave with one to indicate no &239e 20 ee ff JSR &ffee ; OSWRCH &23a1 4c e7 ff JMP &ffe7 ; OSNEWL ; handle_quit &23a4 20 76 23 JSR &2376 ; are_you_sure # Leaves with zero if player said yes &23a7 c0 00 CPY #&00 &23a9 d0 04 BNE &23af ; leave &23ab a9 01 LDA #&01 ; PLAYER_QUIT &23ad 85 89 STA &89 ; player_state ; leave &23af 60 RTS ; update_general &23b0 ad 0f 15 LDA &150f ; player_room &23b3 c9 ca CMP #&ca ; ROOM_ca ; "in the missile command room" &23b5 f0 01 BEQ &23b8 ; is_in_room_ca &23b7 60 RTS ; is_in_room_ca &23b8 ad 04 15 LDA &1504 ; general_state &23bb f0 10 BEQ &23cd ; skip_button &23bd a2 c0 LDX #&c0 ; string_0c0 : "Too late! The General presses the button! " &23bf 20 9d 16 JSR &169d ; use_string_table_zero &23c2 85 7c STA &7c ; text_ending &23c4 20 cc 08 JSR &08cc ; write_string &23c7 a9 03 LDA #&03 &23c9 85 89 STA &89 ; player_state &23cb a2 c2 LDX #&c2 ; string_0c2 : "there is a grating noise as the domed roof opens, then a deafening roar from the missile silos below! You have failed. . . " ; skip_button &23cd ee 04 15 INC &1504 ; general_state &23d0 60 RTS ; update_move_count &23d1 ee 06 15 INC &1506 ; move_count_low &23d4 ad 06 15 LDA &1506 ; move_count_low &23d7 c9 ff CMP #&ff &23d9 f0 01 BEQ &23dc ; overflow &23db 60 RTS ; overflow &23dc ad 07 15 LDA &1507 ; move_count_high &23df c9 0a CMP #&0a &23e1 f0 09 BEQ &23ec ; out_of_time &23e3 ee 07 15 INC &1507 ; move_count_high &23e6 a9 00 LDA #&00 &23e8 8d 06 15 STA &1506 ; move_count_low &23eb 60 RTS ; out_of_time &23ec a2 db LDX #&db ; string_0db : "There is a deafening roar as a missile streaks overhead! You have failed. . " &23ee 20 9d 16 JSR &169d ; use_string_table_zero &23f1 20 93 16 JSR &1693 ; end_string_with_period &23f4 a9 03 LDA #&03 ; PLAYER_DEAD_BEFORE_TEXT &23f6 85 89 STA &89 ; player_state &23f8 60 RTS ; handle_press &23f9 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &23fc c0 ff CPY #&ff ; WORD_NONE &23fe d0 01 BNE &2401 ; handle_press_word ; leave &2400 60 RTS ; handle_press_word &2401 c9 00 CMP #&00 ; WORD_VERB &2403 f0 03 BEQ &2408 ; handle_press_verb ; to_i_can't_make_head_nor_tail_of_that &2405 4c 3f 1c JMP &1c3f ; i_can't_make_head_nor_tail_of_that ; handle_press_verb &2408 e0 17 CPX #&17 ; VERB_PLAY &240a f0 08 BEQ &2414 ; to_consider_word_as_verb &240c e0 2e CPX #&2e ; VERB_101456 &240e f0 04 BEQ &2414 ; to_consider_word_as_verb &2410 e0 2f CPX #&2f ; VERB_18970 &2412 d0 f1 BNE &2405 ; to_i_can't_make_head_nor_tail_of_that ; to_consider_word_as_verb &2414 4c 5f 1d JMP &1d5f ; consider_word_as_verb ; handle_attack &2417 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &241a c0 ff CPY #&ff ; WORD_NONE &241c f0 e2 BEQ &2400 ; leave &241e c9 04 CMP #&04 ; WORD_NOUN &2420 f0 03 BEQ &2425 ; handle_attack_noun ; to_you_can't_do_that &2422 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_attack_noun &2425 8e fa 0c STX &0cfa ; object_of_verb &2428 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &242b c0 ff CPY #&ff ; WORD_NONE &242d f0 d1 BEQ &2400 ; leave &242f c9 03 CMP #&03 ; WORD_OBJECT &2431 d0 ef BNE &2422 ; to_you_can't_do_that &2433 ad fa 0c LDA &0cfa ; object_of_verb &2436 c9 06 CMP #&06 ; NOUN_GUARD &2438 f0 12 BEQ &244c : handle_attack_guard &243a c9 07 CMP #&07 ; NOUN_GENERAL &243c f0 3c BEQ &247a ; handle_attack_general &243e c9 0e CMP #&0e ; NOUN_MAN &2440 f0 77 BEQ &24b9 ; handle_attack_man &2442 c9 0f CMP #&0f ; NOUN_MOUSE &2444 f0 03 BEQ &2449 ; to_handle_attack_mouse ; to_you_can't_do_that &2446 4c 99 1c JMP &1c99 ; you_can't_do_that ; to_handle_attack_mouse &2449 4c d2 24 JMP &24d2 ; handle_attack_mouse ; handle_attack_guard &244c ad 0f 15 LDA &150f ; player_room &244f c9 9b CMP #&9b ; ROOM_9b ; "sitting in the uncomfortable driver's seat of the jeep" &2451 f0 0f BEQ &2462 ; leave &2453 c9 d9 CMP #&d9 ; ROOM_d9 ; "in the Guard's Van" &2455 d0 ef BNE &2446 ; to_you_can't_do_that &2457 ad e5 14 LDA &14e5 ; train_guard_state &245a c9 1f CMP #&1f ; string_01f : "You lunge at the guard with the spanner, but with the agility of a panther, he dodges to one side, slips and tumbles out of the van! " &245c f0 e8 BEQ &2446 ; to_you_can't_do_that &245e e0 19 CPX #&19 ; OBJECT_SPANNER &2460 f0 01 BEQ &2463 ; handle_attack_guard_with_spanner ; leave &2462 60 RTS ; handle_attack_guard_with_spanner &2463 ad 47 15 LDA &1547 ; object_locations + &19 (OBJECT_SPANNER) &2466 c9 ff CMP #&ff ; ROOM_CARRYING &2468 f0 03 BEQ &246d ; is_carrying_spanner ; to_you're_not_holding_the_object &246a 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_spanner &246d 20 9d 16 JSR &169d ; use_string_table_zero &2470 85 7c STA &7c ; text_ending &2472 a2 1f LDX #&1f ; string_01f : "You lunge at the guard with the spanner, but with the agility of a panther, he dodges to one side, slips and tumbles out of the van! " &2474 8e e5 14 STX &14e5 ; train_guard_state &2477 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_attack_general &247a 20 9d 16 JSR &169d ; use_string_table_zero &247d 85 7c STA &7c ; text_ending &247f ad 0f 15 LDA &150f ; player_room &2482 c9 ca CMP #&ca ; ROOM_ca ; "in the missile command room" &2484 f0 03 BEQ &2489 ; handle_attack_general_in_room_ca ; to_you_can't_do_that &2486 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_attack_general_in_room_ca &2489 bd 2e 15 LDA &152e,X ; object_locations &248c c9 ff CMP #&ff ; ROOM_CARRYING &248e d0 da BNE &246a ; to_you're_not_holding_the_object &2490 e0 09 CPX #&09 ; OBJECT_GUN &2492 f0 0d BEQ &24a1 ; handle_attack_general_with_gun &2494 e0 14 CPX #&14 ; OBJECT_RAZOR &2496 d0 ca BNE &2462 ; leave ; handle_attack_general_with_razor &2498 a2 c3 LDX #&c3 ; string_0c3 : ""It's over, Garantz", you say, and pulling back his head, you draw the razor across his throat. The General's body slumps to the floor in a pool of blood. You have succeeded in your mission, but the taste of victory is not sweet. . . " &249a a9 02 LDA #&02 ; PLAYER_WON &249c 85 89 STA &89 ; player_state &249e 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_attack_general_with_gun &24a1 ad 19 15 LDA &1519 ; object_states + &9 (OBJECT_GUN) &24a4 c9 01 CMP #&01 ; &14d - &14c : string_1dc : "can be loaded with a single bullet. " &24a6 f0 de BEQ &2486 ; to_you_can't_do_that &24a8 a2 c1 LDX #&c1 ; string_0c1 : "You shoot at the General! The single bullet tears into his flesh, throwing him onto the button! " &24aa a9 00 LDA #&00 # Set to zero to stop general pressing button again &24ac 8d 04 15 STA &1504 ; general_state &24af a9 03 LDA #&03 ; PLAYER_DEAD_BEFORE_TEXT &24b1 85 89 STA &89 ; player_state &24b3 20 55 16 JSR &1655 ; write_string_and_newline &24b6 a2 c2 LDX #&c2 ; string_0c2 : "There is a grating noise as the domed roof opens, then a deafening roar from the missile silos below! You have failed. . . " &24b8 60 RTS ; handle_attack_man &24b9 ad e1 14 LDA &14e1 ; opponent_active # Zero if opponent is not active &24bc f0 c8 BEQ &2486 ; to_you_can't_do_that &24be ad e3 14 LDA &14e3 ; opponent_id &24c1 c9 2e CMP #&2e ; string_12e : "A strange man wearing a mackintosh with the collar turned up, a hat and a pair of dark glasses is here! " &24c3 d0 c1 BNE &2486 ; to_you_can't_do_that &24c5 ad e2 14 LDA &14e2 ; opponent_room &24c8 cd 0f 15 CMP &150f ; player_room &24cb d0 b9 BNE &2486 ; to_you_can't_do_that &24cd a2 2f LDX #&2f ; string_12f : "The man draws a gun and shoots you! " &24cf 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; handle_attack_mouse &24d2 ad e1 14 LDA &14e1 ; opponent_active # One if opponent is active &24d5 d0 03 BNE &24da ; mouse_is_active ; to_you_can't_do_that &24d7 4c 99 1c JMP &1c99 ; you_can't_do_that ; mouse_is_active &24da ad e3 14 LDA &14e3 ; opponent_id &24dd c9 30 CMP #&30 ; string_130 : "A squeaking mouse scuttles around you! " &24df d0 f6 BNE &24d7 ; to_you_can't_do_that &24e1 ad e2 14 LDA &14e2 ; opponent_room &24e4 cd 0f 15 CMP &150f ; player_room &24e7 d0 ee BNE &24d7 ; to_you_can't_do_that &24e9 a2 31 LDX #&31 ; string_131 : "The mouse is too fast for you! " &24eb 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_swim &24ee 20 8e 16 JSR &168e ; end_string_without_punctuation &24f1 20 a2 16 JSR &16a2 ; use_string_table_one &24f4 20 7e 1c JSR &1c7e ; get_word &24f7 c0 ff CPY #&ff ; WORD_NONE &24f9 f0 17 BEQ &2512 ; handle_swim_nothing &24fb b9 30 07 LDA &0730,Y ; tokenised_words_value &24fe aa TAX &24ff b9 31 07 LDA &0731,Y ; tokenised_words_type &2502 c9 04 CMP #&04 ; WORD_NOUN &2504 f0 05 BEQ &250b ; handle_swim_noun &2506 c6 81 DEC &81 ; current_word # Forget word if not noun &2508 4c 12 25 JMP &2512 ; handle_swim_nothing ; handle_swim_noun &250b e0 0c CPX #&0c ; NOUN_RIVER &250d f0 03 BEQ &2512 ; handle_swim_nothing ; to_you_can't_do_that &250f 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_swim_nothing &2512 ad 49 15 LDA &1549 ; object_locations + &1b (OBJECT_TYRE) &2515 a0 86 LDY #&86 ; string_186 : "You dive into the river, but" &2517 c9 ff CMP #&ff ; ROOM_CARRYING &2519 f0 15 BEQ &2530 ; swim_with_tyre &251b ad 0f 15 LDA &150f ; player_room ; swim_too_far &251e c9 6a CMP #&6a ; ROOM_6a ; "on the footbridge" # Can swim in rooms &64 to &69 &2520 b0 ed BCS &250f ; to_you_can't_do_that &2522 c9 64 CMP #&64 ; ROOM_64 ; "in a muddy field" &2524 90 e9 BCC &250f ; to_you_can't_do_that &2526 98 TYA &2527 aa TAX &2528 20 cc 08 JSR &08cc ; write_string &252b a2 87 LDX #&87 ; string_187 : " the current is too strong. Your head ducks beneath the surface for the third time and everything goes black! " &252d 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; swim_with_tyre &2530 ad 0f 15 LDA &150f ; player_room &2533 c9 68 CMP #&68 ; ROOM_68 ; "in a muddy field" &2535 f0 05 BEQ &253c ; swim_safely &2537 a0 88 LDY #&88 ; string_188 : "Even with the buoyant tyre" &2539 4c 1e 25 JMP &251e ; swim_too_far ; swim_safely &253c a9 fc LDA #&fc ; ROOM_DESTROYED &253e 8d 49 15 STA &1549 ; object_locations + &1b (OBJECT_TYRE) &2541 a9 67 LDA #&67 ; ROOM_67 ; "on the western bank of the river" &2543 8d 0f 15 STA &150f ; player_room &2546 a2 89 LDX #&89 ; string_189 : "The buoyant tyre keeps you afloat and you cross the calm stretch of water. As you scramble to the west bank, you lose your grip on the tyre and it is carried downstream. " &2548 20 cc 08 JSR &08cc ; write_string &254b 4c 6a 15 JMP &156a ; handle_look ; handle_shave &254e 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2551 c0 ff CPY #&ff ; WORD_NONE &2553 d0 01 BNE &2556 ; handle_shave_word ; leave &2555 60 RTS ; handle_shave_word &2556 c9 03 CMP #&03 ; WORD_OBJECT &2558 f0 03 BEQ &255d ; handle_shave_object ; to_you_can't_do_that &255a 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_shave_object &255d e0 14 CPX #&14 ; OBJECT_RAZOR &255f d0 f9 BNE &255a ; to_you_can't_do_that &2561 ad 42 15 LDA &1542 ; object_locations + &14 (OBJECT_RAZOR) &2564 c9 ff CMP #&ff ; ROOM_CARRYING &2566 f0 03 BEQ &256b ; is_carrying_razor ; to_you're_not_holding_the_object &2568 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_razor &256b ad 3c 15 LDA &153c ; object_locations + &e (OBJECT_MIRROR) &256e cd 0f 15 CMP &150f ; player_room &2571 f0 0b BEQ &257e ; set_mirror &2573 20 52 1e JSR &1e52 ; use_string_table_two &2576 20 8e 16 JSR &168e ; end_string_without_punctuation &2579 a2 03 LDX #&03 ; string_203 : "Oops! Blood is spurting from the gaping wound in your neck! " &257b 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; set_mirror &257e a9 02 LDA #&02 ; string_15a - string_158 : "shows you to be clean shaven. " &2580 8d 1e 15 STA &151e ; object_states + &e (OBJECT_MIRROR) &2583 4c 9d 1a JMP &1a9d ; write_ok ; handle_wave &2586 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2589 c0 ff CPY #&ff ; WORD_NONE &258b f0 c8 BEQ &2555 ; leave &258d c9 03 CMP #&03 ; WORD_OBJECT &258f d0 c9 BNE &255a ; to_you_can't_do_that &2591 bd 2e 15 LDA &152e,X ; object_locations &2594 c9 ff CMP #&ff ; ROOM_CARRYING &2596 d0 d0 BNE &2568 ; to_you're_not_holding_the_object &2598 e0 07 CPX #&07 ; OBJECT_SEAT_COVER &259a f0 03 BEQ &259f ; wave_seat_cover ; to_to_nothing_happens &259c 4c a5 0c JMP &0ca5 ; to_nothing_happens ; wave_seat_cover &259f ad 0f 15 LDA &150f ; player_room &25a2 c9 73 CMP #&73 ; ROOM_73 ; "in a lush meadow" &25a4 d0 f6 BNE &259c ; to_to_nothing_happens &25a6 ad 73 14 LDA &1473 ; room_states + &73 &25a9 c9 02 CMP #&02 ; string_071 - string_06f : "the bull has cleared a way to the farmhouse" &25ab f0 ef BEQ &259c ; to_to_nothing_happens &25ad ee dd 14 INC &14dd ; bull_state # Set to one to indicate bull has noticed player ; leave &25b0 60 RTS ; handle_avoid &25b1 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &25b4 c0 ff CPY #&ff ; WORD_NONE &25b6 f0 f8 BEQ &25b0 ; leave &25b8 c9 04 CMP #&04 ; WORD_NOUN &25ba f0 03 BEQ &25bf ; handle_avoid_noun ; to_you_can't_do_that &25bc 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_avoid_noun &25bf e0 14 CPX #&14 ; NOUN_BULL &25c1 d0 f9 BNE &25bc ; to_you_can't_do_that ; avoid_bull &25c3 ad 0f 15 LDA &150f ; player_room &25c6 c9 73 CMP #&73 ; ROOM_73 ; "in a lush meadow" &25c8 d0 f2 BNE &25bc ; to_you_can't_do_that &25ca ad 73 14 LDA &1473 ; room_states + &73 &25cd c9 02 CMP #&02 ; string_071 - string_06f : "the bull has cleared a way to the farmhouse" &25cf f0 eb BEQ &25bc ; to_you_can't_do_that &25d1 ad dd 14 LDA &14dd ; bull_state &25d4 c9 01 CMP #&01 # Zero if bull hasn't seen seat cover &25d6 b0 03 BCS &25db ; avoid_bull &25d8 4c 9d 1a JMP &1a9d ; write_ok ; avoid_bull &25db a9 02 LDA #&02 ; string_071 - string_06f : "the bull has cleared a way to the farmhouse" &25dd 8d 73 14 STA &1473 ; room_states + &73 &25e0 20 9d 16 JSR &169d ; use_string_table_zero &25e3 85 7c STA &7c ; text_ending &25e5 a2 75 LDX #&75 ; string_075 : ""Lucky I trained as a matador", you think, as the bull steams past like a train, demolishes the hedge and disappears into the distance! " &25e7 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_burn &25ea 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &25ed c0 ff CPY #&ff ; WORD_NONE &25ef f0 bf BEQ &25b0 ; leave &25f1 c9 03 CMP #&03 ; WORD_OBJECT &25f3 d0 c7 BNE &25bc ; to_you_can't_do_that &25f5 bd 2e 15 LDA &152e,X ; object_locations &25f8 c9 ff CMP #&ff ; ROOM_CARRYING &25fa f0 03 BEQ &25ff ; is_carrying_object ; to_you're_not_holding_the_object &25fc 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_object &25ff ad 3b 15 LDA &153b ; object_locations + &d (OBJECT_MATCH) &2602 c9 ff CMP #&ff ; ROOM_CARRYING &2604 d0 b6 BNE &25bc ; to_you_can't_do_that &2606 ad 1d 15 LDA &151d ; object_states + &d (OBJECT_MATCH) &2609 c9 02 CMP #&02 ; &057 - &055 : string_057 : "is a charred, burnt out stump. " &260b f0 af BEQ &25bc ; to_you_can't_do_that ; no_way_arsonist &260d a2 95 LDX #&95 ; string_195 : "No way, arsonist! " &260f 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_light &2612 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2615 c0 ff CPY #&ff ; WORD_NONE &2617 d0 01 BNE &261a ; handle_light_word &2619 60 RTS ; handle_light_word &261a c9 03 CMP #&03 ; WORD_OBJECT &261c f0 16 BEQ &2634 ; handle_light_object &261e c9 00 CMP #&00 ; OBJECT_VERB &2620 f0 03 BEQ &2625 ; handle_light_verb ; to_you_can't_do_that &2622 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_light_verb &2625 e0 24 CPX #&24 ; VERB_FIRE &2627 d0 f9 BNE &2622 ; to_you_can't_do_that &2629 4c 0d 26 JMP &260d ; no_way_arsonist ; light_match &262c a9 02 LDA #&02 ; &057 - &055 : string_057 : "is a charred, burnt out stump. " &262e 8d 1d 15 STA &151d ; object_states + &d (OBJECT_MATCH) &2631 4c 9d 1a JMP &1a9d ; write_ok ; handle_light_object &2634 bd 2e 15 LDA &152e,X ; object_locations &2637 c9 ff CMP #&ff ; ROOM_CARRYING &2639 d0 c1 BNE &25fc ; to_you're_not_holding_the_object &263b e0 0d CPX #&0d ; OBJECT_MATCH &263d f0 ed BEQ &262c ; light_match &263f e0 02 CPX #&02 ; OBJECT_BOMB &2641 d0 ca BNE &260d ; no_way_arsonist &2643 ad 3b 15 LDA &153b ; object_locations + &d (OBJECT_MATCH) &2646 c9 ff CMP #&ff ; ROOM_CARRYING &2648 f0 03 BEQ &264d ; light_bomb ; to_you_can't_do_that &264a 4c 99 1c JMP &1c99 ; you_can't_do_that ; light_bomb &264d ad 1d 15 LDA &151d ; object_states + &d (OBJECT_MATCH) &2650 c9 01 CMP #&01 ; &056 - &055 : string_056 : "has a pink, sulphur head. " &2652 d0 f6 BNE &264a ; to_you_can't_do_that &2654 a9 02 LDA #&02 ; &13b - &139 : string_13b : "is alight! Get rid of it! " &2656 8d 12 15 STA &1512 ; object_states + &2 (OBJECT_BOMB) &2659 a9 00 LDA #&00 &265b 8d 01 15 STA &1501 ; explosive_state &265e 4c 2c 26 JMP &262c ; light_match ; door_handler_addresses &2661 0d 27 ; &270d = room_3a_door_handler &2663 27 27 ; &2727 = room_3b_door_handler &2665 2e 27 ; &272e = room_3c_door_handler &2667 35 27 ; &2735 = room_3d_door_handler &2669 3c 27 ; &273c = room_3e_door_handler &266b 4f 27 ; &274f = room_3f_door_handler &266d 56 27 ; &2756 = room_40_door_handler &266f 5d 27 ; &275d = room_41_door_handler &2671 64 27 ; &2764 = room_42_door_handler &2673 6b 27 ; &276b = room_86_door_handler &2675 72 27 ; &2772 = room_87_door_handler &2677 77 27 ; &2777 = room_9f_door_handler &2679 7e 27 ; &277e = room_a0_door_handler &267b 83 27 ; &2783 = room_c7_door_handler &267d aa 27 ; &27aa = room_c8_door_handler ; handle_open &267f a9 01 LDA #&01 ; DOOR_OPEN ; handle_open_or_close &2681 8d f9 0c STA &0cf9 ; open_or_close &2684 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2687 c0 ff CPY #&ff ; WORD_NONE &2689 d0 01 BNE &268c ; handle_open_or_close_word ; leave &268b 60 RTS ; handle_open_or_close_word &268c 8d fd 0c STA &0cfd ; open_or_close_word_type_one &268f 8e fb 0c STX &0cfb ; open_or_close_word_value_one &2692 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess # Returns A = type, X = value, Y = offset &2695 c0 ff CPY #&ff ; WORD_NONE &2697 f0 f2 BEQ &268b ; leave &2699 8d fe 0c STA &0cfe ; open_or_close_word_type_two &269c 8e fc 0c STX &0cfc ; open_or_close_word_value_two &269f ad fd 0c LDA &0cfd ; open_or_close_word_type_one &26a2 cd fe 0c CMP &0cfe ; open_or_close_word_type_two &26a5 d0 03 BNE &26aa ; handle_open_or_close_direction_two_words ; to_i_can't_make_head_nor_tail_of_that &26a7 4c 3f 1c JMP &1c3f ; i_can't_make_head_nor_tail_of_that ; handle_open_or_close_direction_two_words &26aa c9 01 CMP #&01 ; WORD_DIRECTION &26ac f0 1b BEQ &26c9 ; handle_open_or_close_direction &26ae c9 04 CMP #&04 ; WORD_NOUN &26b0 d0 f5 BNE &26a7 ; to_i_can't_make_head_nor_tail_of_that &26b2 ad fb 0c LDA &0cfb ; open_or_close_word_value_one &26b5 c9 04 CMP #&04 ; NOUN_DOOR &26b7 d0 ee BNE &26a7 ; to_i_can't_make_head_nor_tail_of_that &26b9 ad fe 0c LDA &0cfe ; open_or_close_word_type_two &26bc c9 01 CMP #&01 ; WORD_DIRECTION &26be d0 e7 BNE &26a7 ; to_i_can't_make_head_nor_tail_of_that &26c0 ad fc 0c LDA &0cfc ; open_or_close_word_value_two &26c3 8d ff 0c STA &0cff ; door_direction &26c6 4c dd 26 JMP &26dd ; handle_open_or_close_door ; handle_open_or_close_direction &26c9 ad fe 0c LDA &0cfe ; open_or_close_word_type_two &26cc c9 04 CMP #&04 ; WORD_NOUN &26ce d0 d7 BNE &26a7 ; to_i_can't_make_head_nor_tail_of_that &26d0 ad fc 0c LDA &0cfc ; open_or_close_word_value_two &26d3 c9 04 CMP #&04 ; NOUN_DOOR &26d5 d0 d0 BNE &26a7 ; to_i_can't_make_head_nor_tail_of_that &26d7 ad fb 0c LDA &0cfb ; open_or_close_word_value_one &26da 8d ff 0c STA &0cff ; door_direction ; handle_open_or_close_door &26dd a2 00 LDX #&00 ; check_for_handler_loop &26df bd 0b 17 LDA &170b,X ; rooms_with_doors &26e2 cd 0f 15 CMP &150f ; player_room &26e5 f0 08 BEQ &26ef ; call_door_handler &26e7 e8 INX &26e8 e0 0f CPX #&0f &26ea 90 f3 BCC &26df ; check_for_handler_loop &26ec 4c 99 1c JMP &1c99 ; you_can't_do_that ; call_door_handler &26ef ad ff 0c LDA &0cff ; door_direction &26f2 38 SEC &26f3 e9 30 SBC #&30 ; VERB_NORTH &26f5 8d ff 0c STA &0cff ; door_direction &26f8 8a TXA &26f9 0a ASL A &26fa aa TAX &26fb bd 61 26 LDA &2661,X ; door_handler_addresses &26fe 85 68 STA &68 ; handler_address_low &2700 bd 62 26 LDA &2662,X ; door_handler_addresses + 1 &2703 85 69 STA &69 ; handler_address_high &2705 6c 68 00 JMP (&0068) ; handler_address ; handle_close &2708 a9 00 LDA #&00 ; DOOR_CLOSE &270a 4c 81 26 JMP &2681 ; handle_open_or_close ; room_3a_door_handler # "on the upper landing" &270d a0 02 LDY #&02 ; DIRECTION_EAST &270f a2 00 LDX #&00 ; DOOR_0 ; check_door_direction &2711 cc ff 0c CPY &0cff ; door_direction &2714 f0 03 BEQ &2719 ; open_or_close_door ; to_you_can't_do_that &2716 4c 99 1c JMP &1c99 ; you_can't_do_that ; open_or_close_door &2719 ad f9 0c LDA &0cf9 ; open_or_close # Zero to close, one to open &271c dd e9 14 CMP &14e9,X ; door_states &271f f0 f5 BEQ &2716 ; to_you_can't_do_that &2721 9d e9 14 STA &14e9,X ; door_states &2724 4c 9d 1a JMP &1a9d ; write_ok ; room_3b_door_handler # "in a long corridor on the first floor of the tavern" &2727 a0 02 LDY #&02 ; DIRECTION_EAST &2729 a2 01 LDX #&01 ; DOOR_1 &272b 4c 11 27 JMP &2711 ; check_door_direction ; room_3c_door_handler # "in a long corridor on the first floor of the tavern" &272e a0 02 LDY #&02 ; DIRECTION_EAST &2730 a2 02 LDX #&02 ; DOOR_2 &2732 4c 11 27 JMP &2711 ; check_door_direction ; room_3d_door_handler # "in a long corridor on the first floor of the tavern" &2735 a0 02 LDY #&02 ; DIRECTION_EAST &2737 a2 03 LDX #&03 ; DOOR_3 &2739 4c 11 27 JMP &2711 ; check_door_direction ; room_3e_door_handler # "at the northern end of the corridor" &273c a2 04 LDX #&04 ; DOOR_4 &273e ad ff 0c LDA &0cff ; door_direction &2741 c9 03 CMP #&03 ; DIRECTION_WEST &2743 f0 05 BEQ &274a ; check_door_5_direction &2745 a0 02 LDY #&02 ; DIRECTION_EAST &2747 4c 11 27 JMP &2711 ; check_door_direction ; check_door_5_direction &274a a8 TAY ; DIRECTION_WEST &274b e8 INX ; DOOR_5 &274c 4c 11 27 JMP &2711 ; check_door_direction ; room_3f_door_handler # "in a small, tiled bathroom" &274f a0 02 LDY #&02 ; DIRECTION_EAST &2751 a2 05 LDX #&05 ; DOOR_5 &2753 4c 11 27 JMP &2711 ; check_door_direction ; room_40_door_handler # "in the second bedroom" &2756 a0 03 LDY #&03 ; DIRECTION_WEST &2758 a2 01 LDX #&01 ; DOOR_1 &275a 4c 11 27 JMP &2711 ; check_door_direction ; room_41_door_handler # "in Bedroom Four" &275d a0 03 LDY #&03 ; DIRECTION_WEST &275f a2 03 LDX #&03 ; DOOR_3 &2761 4c 11 27 JMP &2711 ; check_door_direction ; room_42_door_handler # "in the fifth bedroom" &2764 a0 03 LDY #&03 ; DIRECTION_WEST &2766 a2 04 LDX #&04 ; DOOR_4 &2768 4c 11 27 JMP &2711 ; check_door_direction ; room_86_door_handler # "outside the log cabin" &276b a0 0a LDY #&0a ; DIRECTION_IN ; check_door_6_direction &276d a2 06 LDX #&06 ; DOOR_6 &276f 4c 11 27 JMP &2711 ; check_door_direction ; room_87_door_handler # "inside the single room of the log cabin" &2772 a0 0b LDY #&0b ; DIRECTION_OUT &2774 4c 6d 27 JMP &276d ; check_door_6_direction ; room_9f_door_handler # "in a tiny, cylindrical room" &2777 a0 02 LDY #&02 ; DIRECTION_EAST ; check_door_7_direction &2779 a2 07 LDX #&07 ; DOOR_7 &277b 4c 11 27 JMP &2711 ; check_door_direction ; room_a0_door_handler # "in a decontamination chamber" &277e a0 03 LDY #&03 ; DIRECTION_WEST &2780 4c 79 27 JMP &2779 ; check_door_7_direction ; room_c7_door_handler # "in the computer room alcove" &2783 ad ff 0c LDA &0cff ; door_direction &2786 c9 01 CMP #&01 ; DIRECTION_SOUTH &2788 f0 03 BEQ &278d ; consider_south_door ; to_you_can't_do_that &278a 4c 99 1c JMP &1c99 ; you_can't_do_that ; consider_south_door &278d ad f9 0c LDA &0cf9 ; open_or_close # Zero to close, one to open &2790 cd f1 14 CMP &14f1 ; door_states + 8 &2793 f0 f5 BEQ &278a ; to_you_can't_do_that &2795 c9 01 CMP #&01 ; DOOR_OPEN &2797 f0 06 BEQ &279f ; it's_locked &2799 8d f1 14 STA &14f1 ; door_states + 8 &279c 4c 9d 1a JMP &1a9d ; write_ok ; it's_locked &279f a2 a3 LDX #&a3 ; string_1a3 : "It's locked! " ; write_string_from_table_one_without_punctuation_then_newline &27a1 20 a2 16 JSR &16a2 ; use_string_table_one &27a4 20 8e 16 JSR &168e ; end_string_without_punctuation &27a7 4c 55 16 JMP &1655 ; write_string_and_newline ; room_c8_door_handler # "in the central control room" &27aa ad ff 0c LDA &0cff ; door_direction &27ad c9 00 CMP #&00 ; DIRECTION_NORTH &27af f0 36 BEQ &27e7 ; check_door_8_north &27b1 c9 01 CMP #&01 ; DIRECTION_SOUTH &27b3 d0 d5 BNE &278a ; to_you_can't_do_that &27b5 ad f9 0c LDA &0cf9 ; open_or_close # Zero to close, one to open &27b8 cd f2 14 CMP &14f2 ; door_states + 9 &27bb f0 cd BEQ &278a ; to_you_can't_do_that &27bd c9 01 CMP #&01 ; DOOR_OPEN &27bf f0 06 BEQ &27c7 ; try_to_open_door &27c1 8d f2 14 STA &14f2 ; door_states + 9 &27c4 4c 9d 1a JMP &1a9d ; write_ok ; try_to_open_door &27c7 20 7e 1c JSR &1c7e ; get_word &27ca c0 ff CPY #&ff ; WORD_NONE &27cc f0 d1 BEQ &279f ; it's_locked &27ce b9 30 07 LDA &0730,Y ; tokenised_words_value &27d1 aa TAX &27d2 b9 31 07 LDA &0731,Y ; tokenised_words_type &27d5 c9 03 CMP #&03 ; WORD_OBJECT &27d7 d0 c6 BNE &279f ; it's_locked &27d9 e0 17 CPX #&17 ; OBJECT_SCREWDRIVER &27db d0 ad BNE &278a ; to_you_can't_do_that &27dd a9 01 LDA #&01 ; DOOR_OPEN &27df 8d f2 14 STA &14f2 ; door_states + 9 &27e2 a2 99 LDX #&99 ; string_199 : "You wedge the screwdriver into a gap between the door and its frame and the door slides open! " &27e4 4c a1 27 JMP &27a1 ; write_string_from_table_one_without_punctuation_then_newline ; check_door_8_north &27e7 a0 00 LDY #&00 ; DIRECTION_NORTH &27e9 a2 08 LDX #&08 ; DOOR_8 &27eb 4c 11 27 JMP &2711 ; check_door_direction ; handle_101456 &27ee ad 0f 15 LDA &150f ; player_room &27f1 c9 c7 CMP #&c7 ; ROOM_c7 ; "in the computer room alcove" &27f3 f0 03 BEQ &27f8 ; there_is_a_hiss_from_above ; to_to_nothing_happens &27f5 4c a5 0c JMP &0ca5 ; to_nothing_happens ; there_is_a_hiss_from_above &27f8 a2 8c LDX #&8c ; string_18c : "There is a hiss from above you, and the room begins to fill with a blue smoke! The acrid gas sears your lungs and you collapse to the floor! " &27fa 20 a2 16 JSR &16a2 ; use_string_table_one &27fd 20 8e 16 JSR &168e ; end_string_without_punctuation &2800 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; handle_18970 &2803 ad 0f 15 LDA &150f ; player_room &2806 c9 c7 CMP #&c7 ; ROOM_c7 ; "in the computer room alcove" &2808 d0 eb BNE &27f5 ; to_to_nothing_happens &280a ad f1 14 LDA &14f1 ; door_states + 8 &280d c9 00 CMP #&00 ; DOOR_CLOSED &280f d0 e4 BNE &27f5 ; to_to_nothing_happens &2811 a9 01 LDA #&01 ; DOOR_OPEN &2813 8d f1 14 STA &14f1 ; door_states + 8 &2816 a2 9a LDX #&9a ; string_19a : "The door slides open! " &2818 4c a1 27 JMP &27a1 ; write_string_from_table_one_without_punctuation_then_newline ; handle_climb &281b 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &281e c0 ff CPY #&ff ; WORD_NONE &2820 d0 01 BNE &2823 ; handle_climb_word &2822 60 RTS ; handle_climb_word &2823 c9 03 CMP #&03 ; WORD_OBJECT &2825 b0 08 BCS &282f ; handle_climb_object_or_verb ; clear_rope_tie &2827 a9 00 LDA #&00 # Set to zero to indicate rope isn't tied to anything &2829 8d 03 15 STA &1503 ; rope_tied_state &282c 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_climb_object_or_verb &282f ad 0f 15 LDA &150f ; player_room &2832 c9 85 CMP #&85 ; ROOM_85 ; "at the foot of the giant cliff" &2834 f0 05 BEQ &283b ; is_in_room_85 &2836 a2 1d LDX #&1d ; string_11d : "You can't climb here. " &2838 4c a1 27 JMP &27a1 ; write_string_from_table_one_without_punctuation_then_newline ; is_in_room_85 &283b c9 04 CMP #&04 ; WORD_NOUN &283d f0 e8 BEQ &2827 ; clear_rope_tie &283f e0 16 CPX #&16 ; OBJECT_ROPE &2841 d0 e4 BNE &2827 ; clear_rope_tie &2843 ad 44 15 LDA &1544 ; object_locations + &16 (OBJECT_ROPE) &2846 cd 0f 15 CMP &150f ; player_room &2849 f0 03 BEQ &284e ; rope_is_in_room &284b 4c ac 1e JMP &1eac ; you_can't_see_it ; rope_is_in_room &284e ad 03 15 LDA &1503 ; rope_tied_state &2851 c9 85 CMP #&85 ; string_185 : "the hook lodges in a crevice above the ledge and the rope hangs down, invitingly! " &2853 d0 d2 BNE &2827 ; clear_rope_tie &2855 ad e2 14 LDA &14e2 ; opponent_room &2858 cd 0f 15 CMP &150f ; player_room &285b f0 0b BEQ &2868 ; mouse_gnaws_rope &285d a2 8a LDX #&8a ; ROOM_8a ; "high up the face of the cliff" &285f 8e 0f 15 STX &150f ; player_room &2862 20 a1 27 JSR &27a1 ; write_string_from_table_one_without_punctuation_then_newline &2865 4c 6a 15 JMP &156a ; handle_look ; mouse_gnaws_rope &2868 a2 32 LDX #&32 ; string_132 : "The mouse darts past you up the rope, gnaws through it and you plummet to the ground!" &286a 4c 8b 18 JMP &188b ; kill_player_after_writing_string ; handle_pull &286d 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2870 c0 ff CPY #&ff ; WORD_NONE &2872 d0 01 BNE &2875 ; handle_pull_word ; leave &2874 60 RTS ; handle_pull_word &2875 c9 03 CMP #&03 ; WORD_OBJECT &2877 f0 03 BEQ &287c ; handle_pull_object ; to_you_can't_do_that &2879 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_pull_object &287c bd 2e 15 LDA &152e,X ; object_locations &287f c9 fe CMP #&fe ; ROOM_WEARING &2881 b0 08 BCS &288b ; is_wearing_or_carrying_or_in_room &2883 cd 0f 15 CMP &150f ; player_room &2886 f0 03 BEQ &288b ; is_wearing_or_carrying_or_in_room &2888 4c ac 1e JMP &1eac ; you_can't_see_it ; is_wearing_or_carrying_or_in_room &288b e0 16 CPX #&16 ; OBJECT_ROPE &288d f0 03 BEQ &2892 ; handle_pull_rope &288f 4c 9d 1a JMP &1a9d ; write_ok ; handle_pull_rope &2892 ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &2895 c9 01 CMP #&01 ; &16b - &16a : string_16b : "is attached to a bell. " &2897 d0 03 BNE &289c ; clear_rope_tie &2899 4c 20 1f JMP &1f20 ; pull_rope ; clear_rope_tie &289c a9 00 LDA #&00 # Set to zero to indicate rope isn't tied to anything &289e 8d 03 15 STA &1503 ; rope_tied_state &28a1 4c 9d 1a JMP &1a9d ; write_ok ; handle_cut &28a4 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &28a7 c0 ff CPY #&ff ; WORD_NONE &28a9 f0 c9 BEQ &2874 ; leave &28ab c9 03 CMP #&03 ; WORD_OBJECT &28ad d0 ca BNE &2879 ; to_you_can't_do_that &28af bd 2e 15 LDA &152e,X ; object_locations &28b2 c9 fe CMP #&fe ; ROOM_WEARING &28b4 b0 08 BCS &28be ; is_wearing_or_carrying_or_in_room &28b6 cd 0f 15 CMP &150f ; player_room &28b9 f0 03 BEQ &28be ; is_wearing_or_carrying_or_in_room &28bb 4c ac 1e JMP &1eac ; you_can't_see_it ; is_wearing_or_carrying_or_in_room &28be e0 16 CPX #&16 ; OBJECT_ROPE &28c0 d0 b7 BNE &2879 ; to_you_can't_do_that &28c2 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &28c5 c0 ff CPY #&ff ; WORD_NONE &28c7 f0 ab BEQ &2874 ; leave &28c9 c9 03 CMP #&03 ; WORD_OBJECT &28cb d0 ac BNE &2879 ; to_you_can't_do_that &28cd bd 2e 15 LDA &152e,X ; object_locations &28d0 c9 ff CMP #&ff ; ROOM_CARRYING &28d2 f0 03 BEQ &28d7 ; is_carrying_cutter &28d4 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_cutter &28d7 e0 14 CPX #&14 ; OBJECT_RAZOR &28d9 d0 9e BNE &2879 ; to_you_can't_do_that &28db ad 26 15 LDA &1526 ; object_states + &16 (OBJECT_ROPE) &28de c9 01 CMP #&01 ; &16b - &16a : string_16b : "is attached to a bell. " &28e0 f0 0a BEQ &28ec ; cut_uncut_rope &28e2 a2 94 LDX #&94 ; string_194 : "You cut the rope into smaller and smaller pieces and throw them away! " &28e4 a9 fc LDA #&fc ; ROOM_DESTROYED &28e6 8d 44 15 STA &1544 ; object_locations + &16 (OBJECT_ROPE) &28e9 4c 55 16 JMP &1655 ; write_string_and_newline ; cut_uncut_rope &28ec a2 93 LDX #&93 ; string_193 : "You cut the rope and a long piece lands at your feet. " &28ee a9 02 LDA #&02 ; &16c - &16a : string_16c : "is long and could be useful! " &28f0 8d 26 15 STA &1526 ; object_states + &16 (OBJECT_ROPE) &28f3 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_pay &28f6 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &28f9 c0 ff CPY #&ff ; WORD_NONE &28fb d0 01 BNE &28fe ; handle_pay_word ; leave &28fd 60 RTS ; handle_pay_word &28fe c9 04 CMP #&04 ; WORD_NOUN &2900 f0 03 BEQ &2905 ; handle_pay_noun ; to_you_can't_do_that &2902 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_pay_noun &2905 ad 0f 15 LDA &150f ; player_room &2908 c9 35 CMP #&35 ; ROOM_35 ; "in the tavern standing next to a long, mahogany bar" &290a d0 f6 BNE &2902 ; to_you_can't_do_that &290c e0 00 CPX #&00 ; NOUN_BARTENDER &290e d0 f2 BNE &2902 ; to_you_can't_do_that &2910 ad e8 14 LDA &14e8 ; inn_state # One if player has paid bartender &2913 c9 01 CMP #&01 &2915 f0 eb BEQ &2902 ; to_you_can't_do_that &2917 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &291a c0 ff CPY #&ff ; WORD_NONE &291c f0 df BEQ &28fd ; leave &291e c9 03 CMP #&03 ; WORD_OBJECT &2920 d0 e0 BNE &2902 ; to_you_can't_do_that &2922 bd 2e 15 LDA &152e,X ; object_locations &2925 c9 ff CMP #&ff ; ROOM_CARRYING &2927 f0 03 BEQ &292c ; is_carrying_object &2929 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_object &292c e0 13 CPX #&13 ; OBJECT_QUHUT &292e f0 03 BEQ &2933 ; pay_bartender &2930 4c a5 0c JMP &0ca5 ; to_nothing_happens ; pay_bartender &2933 a2 d7 LDX #&d7 ; string_1d7 : ""Thank you, sir! Take room four, oh, and have a bottle of ale on the house"" &2935 a9 01 LDA #&01 # Set to one to indicate player has paid bartender &2937 8d e8 14 STA &14e8 ; inn_state &293a a9 ff LDA #&ff ; ROOM_CARRYING &293c 8d 32 15 STA &1532 ; object_locations + &4 (OBJECT_BOTTLE) &293f a9 fc LDA #&fc ; ROOM_DESTROYED &2941 8d 41 15 STA &1541 ; object_locations + &13 (OBJECT_QUHUT) &2944 4c 98 17 JMP &1798 ; write_bartender_string ; handle_ask &2947 ad 0f 15 LDA &150f ; player_room &294a c9 2d CMP #&2d ; ROOM_2d ; "inside the bookshop" &294c f0 07 BEQ &2955 ; handle_ask_in_room_2d &294e a5 7e LDA &7e ; number_of_words &2950 85 81 STA &81 ; current_word &2952 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_ask_in_room_2d &2955 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2958 c0 ff CPY #&ff ; WORD_NONE &295a d0 01 BNE &295d ; handle_ask_word ; leave &295c 60 RTS ; handle_ask_word &295d c9 04 CMP #&04 ; WORD_NOUN &295f f0 05 BEQ &2966 ; handle_ask_noun ; i'm_afraid_we_don't_stock_that_one &2961 a2 c7 LDX #&c7 ; string_0c7 : ""I'm afraid we don't stock that one"" &2963 4c e9 19 JMP &19e9 ; write_shopkeeper_string ; handle_ask_noun &2966 e0 11 CPX #&11 ; NOUN_TWELVE &2968 f0 13 BEQ &297d ; check_next_word &296a e0 0d CPX #&0d ; NOUN_SHOPKEEPER &296c d0 f3 BNE &2961 ; i'm_afraid_we_don't_stock_that_one &296e 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2971 c0 ff CPY #&ff ; WORD_NONE &2973 f0 e7 BEQ &295c ; leave &2975 c9 04 CMP #&04 ; WORD_NOUN &2977 d0 e8 BNE &2961 ; i'm_afraid_we_don't_stock_that_one &2979 e0 11 CPX #&11 ; NOUN_TWELVE &297b d0 e4 BNE &2961 ; i'm_afraid_we_don't_stock_that_one &297d 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2980 c0 ff CPY #&ff ; WORD_NONE &2982 f0 d8 BEQ &295c ; leave ; check_next_word &2984 c9 04 CMP #&04 ; WORD_NOUN &2986 d0 d9 BNE &2961 ; i'm_afraid_we_don't_stock_that_one &2988 e0 12 CPX #&12 ; NOUN_APOSTLES &298a d0 d5 BNE &2961 ; i'm_afraid_we_don't_stock_that_one &298c ad de 14 LDA &14de ; book_collected # Non-zero if book has been collected &298f c9 01 CMP #&01 &2991 b0 ce BCS &2961 ; i'm_afraid_we_don't_stock_that_one &2993 a9 ff LDA #&ff ; ROOM_CARRYING &2995 8d 31 15 STA &1531 ; object_locations + &3 (OBJECT_BOOK) &2998 ee de 14 INC &14de ; book_collected # Set to non-zero if book has been collected &299b a2 c8 LDX #&c8 ; string_0c8 : ""Oh, you must be that butch secret agent! Here take it with my compliments"" &299d 4c e9 19 JMP &19e9 ; write_shopkeeper_string ; handle_tie &29a0 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &29a3 c0 ff CPY #&ff ; WORD_NONE &29a5 f0 1b BEQ &29c2 ; leave &29a7 c9 03 CMP #&03 ; WORD_OBJECT &29a9 f0 03 BEQ &29ae ; handle_tie_object ; to_you_can't_do_that &29ab 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_tie_object &29ae bd 2e 15 LDA &152e,X ; object_locations &29b1 c9 ff CMP #&ff ; ROOM_CARRYING &29b3 f0 03 BEQ &29b8 ; handle_tie_carried_object ; to_you're_not_holding_the_object &29b5 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; handle_tie_carried_object &29b8 8e fa 0c STX &0cfa ; object_of_verb &29bb 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &29be c0 ff CPY #&ff ; WORD_NONE &29c0 d0 01 BNE &29c3 ; handle_tie_carried_object_to_object ; leave &29c2 60 RTS ; handle_tie_carried_object_to_object &29c3 c9 03 CMP #&03 ; WORD_OBJECT &29c5 d0 e4 BNE &29ab ; to_you_can't_do_that &29c7 bd 2e 15 LDA &152e,X ; object_locations &29ca c9 ff CMP #&ff ; ROOM_CARRYING &29cc d0 e7 BNE &29b5 ; to_you're_not_holding_the_object &29ce ec fa 0c CPX &0cfa ; object_of_verb &29d1 f0 d8 BEQ &29ab ; to_you_can't_do_that &29d3 e0 16 CPX #&16 ; OBJECT_ROPE &29d5 f0 37 BEQ &2a0e ; use_object_of_verb &29d7 ad fa 0c LDA &0cfa ; object_of_verb &29da c9 16 CMP #&16 ; OBJECT_ROPE &29dc d0 cd BNE &29ab ; to_you_can't_do_that ; check_if_object_can_be_tied &29de ac 02 15 LDY &1502 ; object_tied_to_rope &29e1 c0 00 CPY #&00 &29e3 d0 c6 BNE &29ab ; to_you_can't_do_that &29e5 e0 0a CPX #&0a ; OBJECT_HOOK # Can tie hook, &29e7 90 c2 BCC &29ab ; to_you_can't_do_that &29e9 f0 10 BEQ &29fb ; tie_object_to_rope &29eb e0 17 CPX #&17 ; OBJECT_SCREWDRIVER # screwdriver, skis, spanner or trowel to rope &29ed 90 bc BCC &29ab ; to_you_can't_do_that &29ef e0 1a CPX #&1a ; OBJECT_SUIT &29f1 f0 b8 BEQ &29ab ; to_you_can't_do_that &29f3 e0 1b CPX #&1b ; OBJECT_TYRE &29f5 f0 b4 BEQ &29ab ; to_you_can't_do_that &29f7 e0 1d CPX #&1d ; OBJECT_UNIFORM &29f9 f0 b0 BEQ &29ab ; to_you_can't_do_that ; tie_object_to_rope &29fb 8e 02 15 STX &1502 ; object_tied_to_rope &29fe a9 fd LDA #&fd ; ROOM_HIDDEN &2a00 9d 2e 15 STA &152e,X ; object_locations &2a03 a9 03 LDA #&03 ; &16d - &16a : string_16d : "is tied to a" &2a05 8d 03 15 STA &1503 ; rope_tied_state # Set to &03 to indicate rope is tied to an object &2a08 8d 26 15 STA &1526 ; object_states + &16 (OBJECT_ROPE) &2a0b 4c 9d 1a JMP &1a9d ; write_ok ; use_object_of_verb &2a0e ae fa 0c LDX &0cfa ; object_of_verb &2a11 4c de 29 JMP &29de ; check_if_object_can_be_tied ; handle_untie &2a14 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2a17 c0 ff CPY #&ff ; WORD_NONE &2a19 f0 a7 BEQ &29c2 ; leave &2a1b c9 03 CMP #&03 ; WORD_OBJECT &2a1d d0 8c BNE &29ab ; to_you_can't_do_that &2a1f ec 02 15 CPX &1502 ; object_tied_to_rope &2a22 d0 87 BNE &29ab ; to_you_can't_do_that &2a24 a9 ff LDA #&ff ; ROOM_CARRYING &2a26 9d 2e 15 STA &152e,X ; object_locations &2a29 a9 02 LDA #&02 ; &16c - &16a : string_16c : "is long and could be useful! " &2a2b 8d 26 15 STA &1526 ; object_states + &16 (OBJECT_ROPE) &2a2e a9 00 LDA #&00 # Set to zero to indicate rope isn't tied to anything &2a30 8d 03 15 STA &1503 ; rope_tied_state &2a33 8d 02 15 STA &1502 ; object_tied_to_rope &2a36 4c 9d 1a JMP &1a9d ; write_ok ; handle_read &2a39 20 7e 1c JSR &1c7e ; get_word &2a3c c0 ff CPY #&ff ; WORD_NONE &2a3e f0 2f BEQ &2a6f ; handle_read_nothing ; consider_next_word &2a40 c6 81 DEC &81 ; current_word &2a42 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2a45 c0 ff CPY #&ff ; WORD_NONE &2a47 d0 01 BNE &2a4a ; handle_read_word &2a49 60 RTS ; handle_read_word &2a4a c9 03 CMP #&03 ; WORD_OBJECT &2a4c f0 05 BEQ &2a53 ; handle_read_object &2a4e b0 31 BCS &2a81 ; handle_read_noun ; to_you_can't_do_that &2a50 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_read_object &2a53 bd 2e 15 LDA &152e,X ; object_locations &2a56 c9 ff CMP #&ff ; ROOM_CARRYING &2a58 f0 03 BEQ &2a5d ; handle_read_carried_object &2a5a 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; handle_read_carried_object &2a5d e0 03 CPX #&03 ; OBJECT_BOOK &2a5f f0 09 BEQ &2a6a ; read_book &2a61 e0 0c CPX #&0c ; OBJECT_LETTER &2a63 d0 eb BNE &2a50 ; to_you_can't_do_that ; read_letter &2a65 a2 8f LDX #&8f ; string_18f : "The letter says: Hukuj jvy avilav jvyp wo jo jvy booskvon cpz cks xol Jvy Jgyrhy Cnokjryk. " ["Visit the church then go to the bookshop and ask for The Twelve Apostles"] &2a67 4c 55 16 JMP &1655 ; write_string_and_newline ; read_book &2a6a a2 90 LDX #&90 ; string_190 : "Certain letters are underlined, forming the message: Jgmwxh rdg fktydwqsg zcgs mwqt hgsrcxm. Yggr k fgzzwo kegxr kr rdg Cig Sdtcxg. " ["Beyond the farmhouse lies your destiny. Meet a fellow agent at the Ice Shrine."] &2a6c 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_read_nothing &2a6f ad 0f 15 LDA &150f ; player_room &2a72 c9 26 CMP #&26 ; ROOM_26 ; "outside a Butcher's Shop" &2a74 d0 ca BNE &2a40 ; consider_next_word &2a76 20 a2 16 JSR &16a2 ; use_string_table_one &2a79 20 8e 16 JSR &168e ; end_string_without_punctuation &2a7c a2 9e LDX #&9e ; string_19e : "You can't understand it! " &2a7e 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_read_noun &2a81 e0 09 CPX #&09 ; NOUN_MARKINGS &2a83 f0 09 BEQ &2a8e ; read_markings &2a85 e0 11 CPX #&11 ; NOUN_TWELVE &2a87 d0 c7 BNE &2a50 ; to_you_can't_do_that &2a89 e6 81 INC &81 ; current_word &2a8b 4c 6a 2a JMP &2a6a ; read_book ; read_markings &2a8e ad 0f 15 LDA &150f ; player_room &2a91 c9 90 CMP #&90 ; ROOM_90 ; "in the cave" &2a93 f0 05 BEQ &2a9a ; read_markings_in_room_90 &2a95 a2 2c LDX #&2c ; string_12c : "It's nothing special. " &2a97 4c 55 16 JMP &1655 ; write_string_and_newline ; read_markings_in_room_90 &2a9a a2 9c LDX #&9c ; string_19c : "It says: "Galoop". " &2a9c 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_fire &2a9f 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2aa2 c0 ff CPY #&ff ; WORD_NONE &2aa4 d0 01 BNE &2aa7 ; handle_fire_word ; leave &2aa6 60 RTS ; handle_fire_word &2aa7 c9 00 CMP #&00 ; WORD_VERB &2aa9 f0 03 BEQ &2aae ; handle_fire_verb ; to_i_can't_make_head_nor_tail_of_that &2aab 4c 3f 1c JMP &1c3f ; i_can't_make_head_nor_tail_of_that ; handle_fire_verb &2aae e0 0b CPX #&0b ; VERB_ATTACK # Parse "FIRE ATTACK" or "FIRE KILL" as "ATTACK" &2ab0 d0 f9 BNE &2aab ; to_i_can't_make_head_nor_tail_of_that &2ab2 4c 5f 1d JMP &1d5f ; consider_word_as_verb ; handle_make &2ab5 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2ab8 c0 ff CPY #&ff ; WORD_NONE &2aba f0 ea BEQ &2aa6 ; leave &2abc c9 03 CMP #&03 ; WORD_OBJECT &2abe f0 03 BEQ &2ac3 ; handle_make_object ; to_you_can't_do_that &2ac0 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_make_object &2ac3 e0 02 CPX #&02 ; OBJECT_BOMB &2ac5 d0 f9 BNE &2ac0 ; to_you_can't_do_that &2ac7 ad 32 15 LDA &1532 ; object_locations + &4 (OBJECT_BOTTLE) &2aca c9 ff CMP #&ff ; ROOM_CARRYING &2acc f0 05 BEQ &2ad3 ; is_carrying_bottle ; you're_not_holding_the_bottle &2ace a2 04 LDX #&04 ; OBJECT_BOTTLE &2ad0 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_bottle &2ad3 ad 14 15 LDA &1514 ; object_states + 4 (OBJECT_BOTTLE) &2ad6 c9 02 CMP #&02 ; &140 - &13e : string_140 : "is full of petrol! " &2ad8 d0 e6 BNE &2ac0 ; to_you_can't_do_that &2ada ad 35 15 LDA &1535 ; object_locations + &7 (OBJECT_SEAT_COVER) &2add c9 ff CMP #&ff ; ROOM_CARRYING &2adf f0 05 BEQ &2ae6 ; is_carrying_cover &2ae1 a2 07 LDX #&07 ; OBJECT_SEAT_COVER &2ae3 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_cover &2ae6 a2 96 LDX #&96 ; string_196 : "You make a bomb from the bottle of petrol and the red rag. " &2ae8 a9 fd LDA #&fd ; ROOM_HIDDEN &2aea 8d 32 15 STA &1532 ; object_locations + &4 (OBJECT_BOTTLE) &2aed 8d 35 15 STA &1535 ; object_locations + &7 (OBJECT_SEAT_COVER) &2af0 a9 ff LDA #&ff ; ROOM_CARRYING &2af2 8d 30 15 STA &1530 ; object_locations + &2 (OBJECT_BOMB) &2af5 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_dismantle &2af8 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2afb c0 ff CPY #&ff ; WORD_NONE &2afd d0 01 BNE &2b00 ; handle_dismantle_word ; leave &2aff 60 RTS ; handle_dismantle_word &2b00 c9 03 CMP #&03 ; WORD_OBJECT &2b02 f0 03 BEQ &2b07 ; handle_dismantle_object ; to_you_can't_do_that &2b04 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_dismantle_object &2b07 e0 02 CPX #&02 ; OBJECT_BOMB &2b09 d0 f9 BNE &2b04 ; to_you_can't_do_that &2b0b ad 30 15 LDA &1530 ; object_locations + &2 (OBJECT_BOMB) &2b0e c9 ff CMP #&ff ; ROOM_CARRYING &2b10 f0 03 BEQ &2b15 ; dismantle_bomb &2b12 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; dismantle_bomb &2b15 ad 12 15 LDA &1512 ; object_states + &2 (OBJECT_BOMB) &2b18 c9 02 CMP #&02 ; &13b - &139 : string_13b : "is alight! Get rid of it! " &2b1a f0 e3 BEQ &2aff ; leave &2b1c ad 0f 15 LDA &150f ; player_room &2b1f 8d 32 15 STA &1532 ; object_locations + &4 (OBJECT_BOTTLE) &2b22 8d 35 15 STA &1535 ; object_locations + &7 (OBJECT_SEAT_COVER) &2b25 a9 fd LDA #&fd ; ROOM_HIDDEN &2b27 8d 30 15 STA &1530 ; object_locations + &2 (OBJECT_BOMB) &2b2a a2 97 LDX #&97 ; string_197 : "You dismantle the bomb, leaving the parts on the floor. " &2b2c 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_empty &2b2f 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2b32 c0 ff CPY #&ff ; WORD_NONE &2b34 d0 01 BNE &2b37 ; handle_empty_word &2b36 60 RTS ; handle_empty_word &2b37 c9 03 CMP #&03 ; WORD_OBJECT &2b39 f0 03 BEQ &2b3e ; handle_empty_object ; to_you_can't_do_that &2b3b 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_empty_object &2b3e bd 2e 15 LDA &152e,X ; object_locations &2b41 c9 ff CMP #&ff ; ROOM_CARRYING &2b43 f0 03 BEQ &2b48 ; handle_empty_carried_object &2b45 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; handle_empty_carried_object &2b48 e0 04 CPX #&04 ; OBJECT_BOTTLE &2b4a f0 1f BEQ &2b6b ; empty_bottle &2b4c e0 09 CPX #&09 ; OBJECT_GUN &2b4e d0 eb BNE &2b3b ; to_you_can't_do_that ; empty_gun &2b50 a9 05 LDA #&05 ; OBJECT_BULLET &2b52 8d fa 0c STA &0cfa ; object_of_verb &2b55 a9 01 LDA #&01 ; &14d - &14c : string_14d : "can be loaded with a single bullet. " &2b57 a0 ff LDY #&ff ; OBJECT_CARRYING ; empty_object &2b59 dd 10 15 CMP &1510,X ; object_states &2b5c f0 dd BEQ &2b3b ; to_you_can't_do_that &2b5e 9d 10 15 STA &1510,X ; object_states &2b61 98 TYA &2b62 ae fa 0c LDX &0cfa ; object_of_verb &2b65 9d 2e 15 STA &152e,X ; object_locations &2b68 4c 9d 1a JMP &1a9d ; write_ok ; empty_bottle &2b6b ad 14 15 LDA &1514 ; object_states + 4 (OBJECT_BOTTLE) &2b6e c9 02 CMP #&02 ; &140 - &13e : string_140 : "is full of petrol! " &2b70 f0 0d BEQ &2b7f ; empty_bottle_of_petrol &2b72 a9 00 LDA #&00 ; OBJECT_ALE ; empty_contents_of_bottle &2b74 8d fa 0c STA &0cfa ; object_of_verb &2b77 a9 03 LDA #&03 ; &141 - &13e : string_141 : "is empty. " &2b79 ac 0f 15 LDY &150f ; player_room &2b7c 4c 59 2b JMP &2b59 ; empty_object ; empty_bottle_of_petrol &2b7f a9 0f LDA #&0f ; OBJECT_PETROL &2b81 4c 74 2b JMP &2b74 ; empty_contents_of_bottle ; handle_fill &2b84 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2b87 c0 ff CPY #&ff ; WORD_NONE &2b89 d0 01 BNE &2b8c ; handle_fill_word ; leave &2b8b 60 RTS ; handle_fill_word &2b8c c9 03 CMP #&03 ; WORD_OBJECT &2b8e f0 03 BEQ &2b93 ; handle_fill_object ; to_you_can't_do_that &2b90 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_fill_object &2b93 8e fa 0c STX &0cfa ; object_of_verb &2b96 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2b99 c0 ff CPY #&ff ; WORD_NONE &2b9b f0 ee BEQ &2b8b ; leave &2b9d c9 03 CMP #&03 ; WORD_OBJECT &2b9f d0 ef BNE &2b90 ; to_you_can't_do_that &2ba1 e0 00 CPX #&00 ; OBJECT_ALE &2ba3 f0 39 BEQ &2bde ; fill_ale &2ba5 e0 05 CPX #&05 ; OBJECT_BULLET &2ba7 f0 3a BEQ &2be3 ; fill_bullet &2ba9 e0 0f CPX #&0f ; OBJECT_PETROL &2bab d0 e3 BNE &2b90 ; to_you_can't_do_that ; fill_petrol &2bad a0 02 LDY #&02 ; &140 - &13e : string_140 : "is full of petrol! " ; fill_bottle &2baf ad fa 0c LDA &0cfa ; object_of_verb &2bb2 c9 04 CMP #&04 ; OBJECT_BOTTLE &2bb4 d0 da BNE &2b90 ; to_you_can't_do_that &2bb6 ad 32 15 LDA &1532 ; object_locations + &4 (OBJECT_BOTTLE) &2bb9 c9 ff CMP #&ff ; ROOM_CARRYING &2bbb f0 03 BEQ &2bc0 ; is_carrying_bottle &2bbd 4c ce 2a JMP &2ace ; you're_not_holding_the_bottle ; is_carrying_bottle &2bc0 bd 2e 15 LDA &152e,X ; object_locations &2bc3 cd 0f 15 CMP &150f ; player_room &2bc6 f0 03 BEQ &2bcb ; fill_bottle_with_contents &2bc8 4c ac 1e JMP &1eac ; you_can't_see_it ; fill_bottle_with_contents &2bcb ad 14 15 LDA &1514 ; object_states + 4 (OBJECT_BOTTLE) &2bce c9 03 CMP #&03 ; WORD_OBJECT &2bd0 d0 be BNE &2b90 ; to_you_can't_do_that &2bd2 98 TYA &2bd3 8d 14 15 STA &1514 ; object_states + 4 (OBJECT_BOTTLE) &2bd6 a9 fd LDA #&fd ; ROOM_HIDDEN &2bd8 9d 2e 15 STA &152e,X ; object_locations &2bdb 4c 9d 1a JMP &1a9d ; write_ok ; fill_ale &2bde a0 01 LDY #&01 ; &13f - &13e : string_13f : "is full of ale. " &2be0 4c af 2b JMP &2baf ; fill_bottle ; fill_bullet &2be3 ad fa 0c LDA &0cfa ; object_of_verb &2be6 c9 09 CMP #&09 ; OBJECT_GUN &2be8 d0 a6 BNE &2b90 ; to_you_can't_do_that &2bea ad 37 15 LDA &1537 ; object_locations + &9 (OBJECT_GUN) &2bed c9 ff CMP #&ff ; ROOM_CARRYING &2bef f0 05 BEQ &2bf6 ; is_carrying_gun &2bf1 a2 09 LDX #&09 ; OBJECT_GUN ; to_you're_not_holding_the_object &2bf3 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; is_carrying_gun &2bf6 ad 33 15 LDA &1533 ; object_locations + &05 (OBJECT_BULLET) &2bf9 c9 ff CMP #&ff ; ROOM_CARRYING &2bfb d0 f6 BNE &2bf3 ; to_you're_not_holding_the_object ; load_gun &2bfd a9 fd LDA #&fd ; ROOM_HIDDEN &2bff 8d 33 15 STA &1533 ; object_locations + &05 (OBJECT_BULLET) &2c02 a9 02 LDA #&02 ; &14e - &14c : string_14e : "is loaded. " &2c04 8d 19 15 STA &1519 ; object_states + &9 (OBJECT_GUN) &2c07 4c 9d 1a JMP &1a9d ; write_ok ; handle_load &2c0a 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2c0d c0 ff CPY #&ff ; WORD_NONE &2c0f d0 01 BNE &2c12 ; handle_load_word &2c11 60 RTS ; handle_load_word &2c12 c9 03 CMP #&03 ; WORD_OBJECT &2c14 f0 03 BEQ &2c19 ; handle_load_object ; to_you_can't_do_that &2c16 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_load_object &2c19 bd 2e 15 LDA &152e,X ; object_locations &2c1c c9 ff CMP #&ff ; ROOM_CARRYING &2c1e d0 d3 BNE &2bf3 ; to_you're_not_holding_the_object &2c20 e0 09 CPX #&09 ; OBJECT_GUN &2c22 d0 f2 BNE &2c16 ; to_you_can't_do_that &2c24 ad 19 15 LDA &1519 ; object_states + &9 (OBJECT_GUN) &2c27 c9 02 CMP #&02 ; &14e - &14c : string_14e : "is loaded. " &2c29 f0 eb BEQ &2c16 ; to_you_can't_do_that &2c2b ad 33 15 LDA &1533 ; object_locations + &05 (OBJECT_BULLET) &2c2e c9 ff CMP #&ff ; ROOM_CARRYING &2c30 f0 cb BEQ &2bfd ; load_gun &2c32 a2 05 LDX #&05 ; OBJECT_BULLET &2c34 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; handle_eat &2c37 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2c3a c0 ff CPY #&ff ; WORD_NONE &2c3c d0 01 BNE &2c3f ; handle_eat_word ; leave &2c3e 60 RTS ; handle_eat_word &2c3f c9 03 CMP #&03 ; WORD_OBJECT &2c41 f0 03 BEQ &2c46 ; handle_eat_object ; to_you_can't_do_that &2c43 4c 99 1c JMP &1c99 ; you_can't_do_that ; handle_eat_object &2c46 bd 2e 15 LDA &152e,X ; object_locations &2c49 c9 ff CMP #&ff ; ROOM_CARRYING &2c4b f0 03 BEQ &2c50 ; handle_eat_carried_object &2c4d 4c 70 1f JMP &1f70 ; you're_not_holding_the_object ; handle_eat_carried_object &2c50 e0 11 CPX #&11 ; OBJECT_PORK_PIE &2c52 d0 ef BNE &2c43 ; to_you_can't_do_that &2c54 a9 fc LDA #&fc ; ROOM_DESTROYED &2c56 8d 3f 15 STA &153f ; object_locations + &11 (OBJECT_PORK_PIE) &2c59 a2 8e LDX #&8e ; string_18e : "Bleagh! Disgusting! " &2c5b 4c 55 16 JMP &1655 ; write_string_and_newline ; handle_drink &2c5e 20 57 1e JSR &1e57 ; get_word_or_i_can't_guess &2c61 c0 ff CPY #&ff ; WORD_NONE &2c63 f0 d9 BEQ &2c3e ; leave &2c65 c9 03 CMP #&03 ; WORD_OBJECT &2c67 d0 da BNE &2c43 ; to_you_can't_do_that &2c69 e0 00 CPX #&00 ; OBJECT_ALE &2c6b f0 21 BEQ &2c8e ; drink_ale &2c6d e0 0f CPX #&0f ; OBJECT_PETROL &2c6f d0 d2 BNE &2c43 ; to_you_can't_do_that ; drink_petrol &2c71 a2 02 LDX #&02 ; &140 - &13e : string_140 : "is full of petrol! " &2c73 a0 8e LDY #&8e ; string_18e : "Bleagh! Disgusting! " ; drink_contents_of_bottle &2c75 ad 32 15 LDA &1532 ; object_locations + &4 (OBJECT_BOTTLE) &2c78 c9 ff CMP #&ff ; ROOM_CARRYING &2c7a f0 03 BEQ &2c7f ; is_carrying_bottle &2c7c 4c ce 2a JMP &2ace ; you're_not_holding_the_bottle ; is_carrying_bottle &2c7f ec 14 15 CPX &1514 ; object_states + &4 (OBJECT_BOTTLE) &2c82 d0 bf BNE &2c43 ; to_you_can't_do_that &2c84 a9 03 LDA #&03 ; &141 - &13e : string_141 : "is empty. " &2c86 8d 14 15 STA &1514 ; object_states + &4 (OBJECT_BOTTLE) &2c89 98 TYA &2c8a aa TAX &2c8b 4c 55 16 JMP &1655 ; write_string_and_newline ; drink_ale &2c8e e8 INX ; &01 = &13f - &13e : string_13f : "is full of ale. " &2c8f a0 34 LDY #&34 ; string_134 : "The ale tastes rather like hamster vomit! " &2c91 4c 75 2c JMP &2c75 ; drink_contents_of_bottle ; unused &2c94 00 00 00 00 00 00 00 00 00 00 00 00 &2ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2cb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2cd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2cf0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d00 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2d90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2db0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2dd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2df0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e00 3b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2e90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2eb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ed0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ef0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f00 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2f90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2fb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2fd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &2ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3000 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3100 2a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &31a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &31b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &31c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &31d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &31e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &31f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3200 8d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3300 ad 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &33a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &33b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &33c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &33d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &33e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &33f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3400 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &34a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &34b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &34c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &34d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &34e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &34f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3500 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &35a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &35b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &35c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &35d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &35e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &35f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &36a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &36b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &36c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &36d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &36e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &36f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &37a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &37b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &37c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &37d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &37e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &37f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3800 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &38a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &38b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &38c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &38d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &38e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &38f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3900 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &39a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &39b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &39c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &39d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &39e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &39f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a00 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3a90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3ab0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3ad0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3af0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b00 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3b90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3ba0 00 00 00 00 00 00 00 00 00 00 ; vocabulary_values ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &3baa 00 01 01 30 31 32 33 34 34 35 35 36 36 37 37 38 ; &00 &3bba 39 3a 3b 3c 3d 3e 3f 40 02 03 04 05 06 07 08 09 ; &10 &3bca 0a 0b 0b 0c 0d 0d 0e 0f 10 42 11 11 12 13 14 15 ; &20 &3bda 16 17 18 19 1a 1b 1b 1c 1d 1e 1f 20 21 22 23 24 ; &30 &3bea 25 26 27 28 29 24 2a 2b 18 2c 2d 00 01 02 03 04 ; &40 &3bfa 14 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 ; &50 &3c0a 14 15 16 17 18 19 1a 1b 1c 1d 00 01 02 04 05 06 ; &60 &3c1a 07 07 08 09 0a 0b 0c 0d 0d 0e 0f 10 11 12 09 02 ; &70 &3c2a 2e 2e 2f 13 41 ; &80 ; vocabulary_types ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &3c2f 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 ; &00 &3c3f 01 01 01 02 02 02 02 02 00 00 00 00 00 00 00 00 ; &10 &3c4f 00 00 00 00 00 00 00 00 00 00 80 80 80 80 80 80 ; &20 &3c5f 00 00 00 80 80 00 00 80 80 80 80 00 80 00 00 00 ; &30 &3c6f 00 00 00 00 00 00 00 00 00 80 80 03 03 03 03 03 ; &40 &3c7f 04 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ; &50 &3c8f 03 03 03 03 03 03 03 03 03 03 04 04 04 04 04 04 ; &60 &3c9f 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ; &70 &3caf 00 00 00 04 00 ; &80 # &00 : WORD_VERB # &01 : WORD_DIRECTION # &02 : WORD_SYSTEM_VERB # &03 : WORD_OBJECT # &04 : WORD_NOUN # &80 : WORD_ACCEPTS_MULTIPLE_OBJECTS ; vocabulary value type handler &3cb4 0b 06 0f f0 ; &00 : "help" &00 &00 &2213 = handle_help &3cb8 04 ef ; &01 : "go" &01 &00 &20ea = handle_go &3cba 0e 0c 15 e5 ; &02 : "move" &01 &00 &20ea = handle_go &3cbe 0d 0c 11 17 e8 ; &03 : "north" &30 &01 &16a7 = handle_north &3cc3 10 0c 16 17 e8 ; &04 : "south" &31 &01 &16cf = handle_south &3cc8 06 02 10 f4 ; &05 : "east" &32 &01 &16d4 = handle_east &3ccc 14 06 10 f4 ; &06 : "west" &33 &01 &16d9 = handle_west &3cd0 0d 0c 11 17 0b 06 02 10 f4 ; &07 : "northeast" &34 &01 &16de = handle_northeast &3cd9 0d e5 ; &08 : "ne" &34 &01 &16de = handle_northeast &3cdb 0d 0c 11 17 0b 14 06 10 f4 ; &09 : "northwest" &35 &01 &16e3 = handle_northwest &3ce4 0d f7 ; &0a : "nw" &35 &01 &16e3 = handle_northwest &3ce6 10 0c 16 17 0b 06 02 10 f4 ; &0b : "southeast" &36 &01 &16e8 = handle_southeast &3cef 10 e5 ; &0c : "se" &36 &01 &16e8 = handle_southeast &3cf1 10 0c 16 17 0b 14 06 10 f4 ; &0d : "southwest" &37 &01 &16ed = handle_southwest &3cfa 10 f7 ; &0e : "sw" &37 &01 &16ed = handle_southwest &3cfc 16 f0 ; &0f : "up" &38 &01 &16f2 = handle_up &3cfe 07 0c 14 ee ; &10 : "down" &39 &01 &16f7 = handle_down &3d02 0a ee ; &11 : "in" &3a &01 &16fc = handle_in &3d04 0c 16 f4 ; &12 : "out" &3b &01 &1701 = handle_out &3d07 0e 0c 0d ef ; &13 : "mono" &3c &02 &1a95 = handle_mono &3d0b 00 0c 0f 0c 16 f2 ; &14 : "colour" &3d &02 &1aa8 = handle_colour &3d11 10 02 15 e5 ; &15 : "save" &3e &02 &0c2e = handle_save &3d15 11 06 10 17 0c 11 e5 ; &16 : "restore" &3f &02 &0c52 = handle_restore &3d1c 12 16 0a f4 ; &17 : "quit" &40 &02 &23a4 = handle_quit &3d20 0f 0c 0c eb ; &18 : "look" &02 &00 &156a = handle_look &3d24 10 06 02 11 00 e8 ; &19 : "search" &03 &00 &1c78 = handle_search &3d2a 14 02 0a f4 ; &1a : "wait" &04 &00 &1c72 = handle_wait &3d2e 0c 13 06 ee ; &1b : "open" &05 &00 &267f = handle_open &3d32 00 0f 0c 10 e5 ; &1c : "close" &06 &00 &2708 = handle_close &3d37 00 0f 0a 0e e2 ; &1d : "climb" &07 &00 &281b = handle_climb &3d3c 07 0a e7 ; &1e : "dig" &08 &00 &2307 = handle_dig &3d3f 09 16 0e f0 ; &1f : "jump" &09 &00 &1ca9 = handle_jump &3d43 02 10 eb ; &20 : "ask" &0a &00 &2947 = handle_ask &3d46 02 17 17 02 00 eb ; &21 : "attack" &0b &00 &2417 = handle_attack &3d4c 08 0a 0f ec ; &22 : "kill" &0b &00 &2417 = handle_attack &3d50 13 02 f9 ; &23 : "pay" &0c &00 &28f6 = handle_pay &3d53 0a 0d 15 06 0d 17 0c 11 f9 ; &24 : "inventory" &0d &00 &1a84 = handle_inventory &3d5c 0f 0a 10 f4 ; &25 : "list" &0d &00 &1a84 = handle_inventory &3d60 0e 02 08 e5 ; &26 : "make" &0e &00 &2ab5 = handle_make &3d64 07 0a 10 0e 02 0d 17 0f e5 ; &27 : "dismantle" &0f &00 &2af8 = handle_dismantle &3d6d 17 0a e5 ; &28 : "tie" &10 &00 &29a0 = handle_tie &3d70 16 0d 17 0a e5 ; &29 : "untie" &42 &00 &2a14 = handle_untie &3d75 04 06 f4 ; &2a : "get" &11 &80 &1e6f = handle_get &3d78 17 02 08 e5 ; &2b : "take" &11 &80 &1e6f = handle_get &3d7c 14 06 02 f2 ; &2c : "wear" &12 &80 &21c2 = handle_wear &3d80 07 11 0c f0 ; &2d : "drop" &13 &80 &1f48 = handle_drop &3d84 17 0b 11 0c f7 ; &2e : "throw" &14 &80 &20fc = handle_throw &3d89 01 11 06 02 eb ; &2f : "break" &15 &80 &2041 = handle_break &3d8e 0a 0d 10 06 11 f4 ; &30 : "insert" &16 &00 &2332 = handle_insert &3d94 13 0f 02 f9 ; &31 : "play" &17 &00 &20a2 = handle_play &3d98 13 11 06 10 f3 ; &32 : "press" &18 &00 &23f9 = handle_press &3d9d 06 1b 02 0e 0a 0d e5 ; &33 : "examine" &19 &80 &1fda = handle_examine &3da4 11 06 02 e4 ; &34 : "read" &1a &80 &2a39 = handle_read &3da8 02 15 0c 0a e4 ; &35 : "avoid" &1b &00 &25b1 = handle_avoid &3dad 07 0c 07 04 e5 ; &36 : "dodge" &1b &00 &25b1 = handle_avoid &3db2 01 16 11 ee ; &37 : "burn" &1c &80 &25ea = handle_burn &3db6 0f 0a 04 0b f4 ; &38 : "light" &1d &80 &2612 = handle_light &3dbb 00 16 f4 ; &39 : "cut" &1e &80 &28a4 = handle_cut &3dbe 07 11 0a 0d eb ; &3a : "drink" &1f &80 &2c5e = handle_drink &3dc3 07 11 0a 15 e5 ; &3b : "drive" &20 &00 &22b4 = handle_drive &3dc8 06 02 f4 ; &3c : "eat" &21 &80 &2c37 = handle_eat &3dcb 06 0e 13 17 f9 ; &3d : "empty" &22 &00 &2b2f = handle_empty &3dd0 05 0a 0f ec ; &3e : "fill" &23 &00 &2b84 = handle_fill &3dd4 05 0a 11 e5 ; &3f : "fire" &24 &00 &2a9f = handle_fire &3dd8 04 02 0f 0c 0c f0 ; &40 : "galoop" &25 &00 &228e = handle_galoop &3dde 0f 0c 02 e4 ; &41 : "load" &26 &00 &2c0a = handle_load &3de2 13 11 02 f9 ; &42 : "pray" &27 &00 &0ca5 = handle_pray &3de6 13 16 0f ec ; &43 : "pull" &28 &00 &286d = handle_pull &3dea 11 0a 0d e7 ; &44 : "ring" &29 &00 &0ce8 = handle_ring &3dee 10 0b 0c 0c f4 ; &45 : "shoot" &24 &00 &2a9f = handle_fire &3df3 10 0b 02 15 e5 ; &46 : "shave" &2a &00 &254e = handle_shave &3df8 10 14 0a ed ; &47 : "swim" &2b &00 &24ee = handle_swim &3dfc 17 1a 13 e5 ; &48 : "type" &18 &00 &23f9 = handle_press &3e00 14 02 15 e5 ; &49 : "wave" &2c &80 &2586 = handle_wave &3e04 14 02 f8 ; &4a : "wax" &2d &80 &0cab = handle_wax &3e07 02 0f e5 ; &4b : "ale" &00 &03 &3e0a 01 02 0d 07 0a f4 ; &4c : "bandit" &01 &03 &3e10 01 0c 0e e2 ; &4d : "bomb" &02 &03 &3e14 01 0c 0c eb ; &4e : "book" &03 &03 &3e18 01 0c 17 17 0f e5 ; &4f : "bottle" &04 &03 &3e1e 01 16 0f ec ; &50 : "bull" &14 &04 &3e22 01 16 0f 0f 06 f4 ; &51 : "bullet" &05 &03 &3e28 00 0c 11 13 10 e5 ; &52 : "corpse" &06 &03 &3e2e 00 0c 15 06 f2 ; &53 : "cover" &07 &03 &3e33 05 11 02 0e e5 ; &54 : "frame" &08 &03 &3e38 04 16 ee ; &55 : "gun" &09 &03 &3e3b 0b 0c 0c eb ; &56 : "hook" &0a &03 &3e3f 0a 0e 13 e9 ; &57 : "impi" &0b &03 &3e43 0f 06 17 17 06 f2 ; &58 : "letter" &0c &03 &3e49 0e 02 17 00 e8 ; &59 : "match" &0d &03 &3e4e 0e 0a 11 11 0c f2 ; &5a : "mirror" &0e &03 &3e54 13 06 17 11 0c ec ; &5b : "petrol" &0f &03 &3e5a 13 0b 0c 17 0c 04 11 02 13 e8 ; &5c : "photograph" &10 &03 &3e64 13 0a e5 ; &5d : "pie" &11 &03 &3e67 13 0c 0f 0a 10 e8 ; &5e : "polish" &12 &03 &3e6d 12 16 0b 16 f4 ; &5f : "quhut" &13 &03 &3e72 11 02 19 0c f2 ; &60 : "razor" &14 &03 &3e77 11 06 00 0c 11 07 06 f2 ; &61 : "recorder" &15 &03 &3e7f 11 0c 13 e5 ; &62 : "rope" &16 &03 &3e83 10 00 11 06 14 07 11 0a 15 06 f2 ; &63 : "screwdriver" &17 &03 &3e8e 10 08 0a f3 ; &64 : "skis" &18 &03 &3e92 10 13 02 0d 0d 06 f2 ; &65 : "spanner" &19 &03 &3e99 10 16 0a f4 ; &66 : "suit" &1a &03 &3e9d 17 1a 11 e5 ; &67 : "tyre" &1b &03 &3ea1 17 11 0c 14 06 ec ; &68 : "trowel" &1c &03 &3ea7 16 0d 0a 05 0c 11 ed ; &69 : "uniform" &1d &03 &3eae 01 02 11 17 06 0d 07 06 f2 ; &6a : "bartender" &00 &04 &3eb7 01 11 0a 07 04 e5 ; &6b : "bridge" &01 &04 &3ebd 00 02 f2 ; &6c : "car" &02 &04 &3ec0 07 0c 0c f2 ; &6d : "door" &04 &04 &3ec4 04 02 17 e5 ; &6e : "gate" &05 &04 &3ec8 04 16 02 11 e4 ; &6f : "guard" &06 &04 &3ecd 04 02 11 02 0d 17 fa ; &70 : "garantz" &07 &04 &3ed4 04 06 0d 06 11 02 ec ; &71 : "general" &07 &04 &3edb 09 06 06 f0 ; &72 : "jeep" &08 &04 &3edf 0e 02 11 08 0a 0d 04 f3 ; &73 : "markings" &09 &04 &3ee7 0c 11 04 02 ee ; &74 : "organ" &0a &04 &3eec 13 0a 02 0d ef ; &75 : "piano" &0b &04 &3ef1 11 0a 15 06 f2 ; &76 : "river" &0c &04 &3ef6 10 0b 0c 13 08 06 06 13 06 f2 ; &77 : "shopkeeper" &0d &04 &3f00 13 11 0c 13 11 0a 06 17 0c f2 ; &78 : "proprietor" &0d &04 &3f0a 0e 02 ee ; &79 : "man" &0e &04 &3f0d 0e 0c 16 10 e5 ; &7a : "mouse" &0f &04 &3f12 17 11 06 e5 ; &7b : "tree" &10 &04 &3f16 17 14 06 0f 15 e5 ; &7c : "twelve" &11 &04 &3f1c 02 13 0c 10 17 0f 06 f3 ; &7d : "apostles" &12 &04 &3f24 14 02 0f ec ; &7e : "wall" &09 &04 &3f28 02 16 17 0c 0e 0c 01 0a 0f e5 ; &7f : "automobile" &02 &04 &3f32 52 53 52 57 56 b6 ; &80 : "101456" &2e &00 &27ee = handle_101456 &3f38 52 5b 5a 54 b9 ; &81 : "18979" &2e &00 &27ee = handle_101456 &3f3d 52 5b 5a 54 b0 ; &82 : "18970" &2f &00 &2803 = handle_18970 &3f42 06 15 06 11 1a 17 0b 0a 0d e7 ; &83 : "everything" &13 &04 &3f4c 10 0f 06 06 f0 ; &84 : "sleep" &41 &00 &0c72 = handle_sleep &3f51 ff ; room_exit_data ; N S E W NE NW SE SW U D I O &3f52 02 05 01 ; room &00 : 02 05 01 &3f55 00 d5 ; room &01 : 00 d5 &3f57 00 ; room &02 : 00 &3f58 05 ; room &03 : 05 &3f59 06 ; room &04 : 06 &3f5a 00 06 03 ; room &05 : 00 06 03 &3f5d 04 05 07 ; room &06 : 04 05 07 &3f60 06 08 ; room &07 : 06 08 &3f62 09 07 ; room &08 : 09 07 &3f64 0a 08 ; room &09 : 0a 08 &3f66 09 0b ; room &0a : 09 0b &3f68 0c 0a ; room &0b : 0c 0a &3f6a 0b 0d ; room &0c : 0b 0d &3f6c 0c ; room &0d : 0c &3f6d 9e 0f ; room &0e : 9e 0f &3f6f 0e 10 ; room &0f : 0e 10 &3f71 11 0f ; room &10 : 11 0f &3f73 12 10 ; room &11 : 12 10 &3f75 11 13 ; room &12 : 11 13 &3f77 14 12 ; room &13 : 14 12 &3f79 13 15 ; room &14 : 13 15 &3f7b 16 14 ; room &15 : 16 14 &3f7d 15 17 ; room &16 : 15 17 &3f7f 20 16 18 ; room &17 : 20 16 18 &3f82 27 1f 17 19 ; room &18 : 27 1f 17 19 &3f86 28 18 1a ; room &19 : 28 18 1a &3f89 29 1d 19 1b ; room &1a : 29 1d 19 1b &3f8d 2a 1a ; room &1b : 2a 1a &3f8f 1d ; room &1c : 1d &3f90 1a 1e 1c ; room &1d : 1a 1e 1c &3f93 1f 1d ; room &1e : 1f 1d &3f95 18 20 1e ; room &1f : 18 20 1e &3f98 17 21 1f ; room &20 : 17 21 1f &3f9b 20 22 ; room &21 : 20 22 &3f9d 21 23 ; room &22 : 21 23 &3f9f 22 24 ; room &23 : 22 24 &3fa1 23 25 ; room &24 : 23 25 &3fa3 26 24 ; room &25 : 26 24 &3fa5 25 34 ; room &26 : 25 34 &3fa7 18 28 32 ; room &27 : 18 28 32 &3faa 2f 19 27 29 4a ; room &28 : 2f 19 27 29 4a &3faf 1a 28 2a ; room &29 : 1a 28 2a &3fb2 2b 1b 29 ; room &2a : 2b 1b 29 &3fb5 2c 2a ; room &2b : 2c 2a &3fb7 2b 33 ; room &2c : 2b 33 &3fb9 30 ; room &2d : 30 &3fba 2f 33 ; room &2e : 2f 33 &3fbc 2e 28 31 30 ; room &2f : 2e 28 31 30 &3fc0 2f 2d ; room &30 : 2f 2d &3fc2 2f ; room &31 : 2f &3fc3 27 ; room &32 : 27 &3fc4 52 2e 2c ; room &33 : 52 2e 2c &3fc7 35 26 ; room &34 : 35 26 &3fc9 36 34 37 ; room &35 : 36 34 37 &3fcc 35 ; room &36 : 35 &3fcd 38 35 ; room &37 : 38 35 &3fcf 39 37 ; room &38 : 39 37 &3fd1 3a 38 ; room &39 : 3a 38 &3fd3 3b 39 d6 ; room &3a : 3b 39 d6 &3fd6 3c 3a 40 ; room &3b : 3c 3a 40 &3fd9 3d 3b d8 ; room &3c : 3d 3b d8 &3fdc 3e 3c 41 ; room &3d : 3e 3c 41 &3fdf 3d 42 3f ; room &3e : 3d 42 3f &3fe2 3e ; room &3f : 3e &3fe3 3b ; room &40 : 3b &3fe4 3d ; room &41 : 3d &3fe5 3e ; room &42 : 3e &3fe6 50 45 44 ; room &43 : 50 45 44 &3fe9 43 ; room &44 : 43 &3fea 43 46 ; room &45 : 43 46 &3fec 47 45 ; room &46 : 47 45 &3fee 48 46 ; room &47 : 48 46 &3ff0 47 ; room &48 : 47 &3ff1 4e 4a ; room &49 : 4e 4a &3ff3 4d 49 4b 28 ; room &4a : 4d 49 4b 28 &3ff7 4c 4a ; room &4b : 4c 4a &3ff9 4b 51 ; room &4c : 4b 51 &3ffb 4a 50 ; room &4d : 4a 50 &3ffd 49 4f ; room &4e : 49 4f &3fff 4e 50 ; room &4f : 4e 50 &4001 4d 43 4f 51 ; room &50 : 4d 43 4f 51 &4005 4c 50 ; room &51 : 4c 50 &4007 54 33 53 ; room &52 : 54 33 53 &400a 55 52 ; room &53 : 55 52 &400c 55 52 ; room &54 : 55 52 &400e 56 54 53 ; room &55 : 56 54 53 &4011 57 55 65 ; room &56 : 57 55 65 &4014 56 58 ; room &57 : 56 58 &4016 59 57 ; room &58 : 59 57 &4018 5a 58 ; room &59 : 5a 58 &401a 5b 59 ; room &5a : 5b 59 &401c 5c 5a ; room &5b : 5c 5a &401e 5d 5b ; room &5c : 5d 5b &4020 5c 5e ; room &5d : 5c 5e &4022 5d 5f ; room &5e : 5d 5f &4024 60 5e 63 62 ; room &5f : 60 5e 63 62 &4028 5f 62 63 ; room &60 : 5f 62 63 &402b 62 ; room &61 : 62 &402c 63 60 5f 61 ; room &62 : 63 60 5f 61 &4030 62 5f 60 ; room &63 : 62 5f 60 &4033 69 ; room &64 : 69 &4034 66 69 56 ; room &65 : 66 69 56 &4037 68 65 ; room &66 : 68 65 &4039 75 74 77 76 73 ; room &67 : 75 74 77 76 73 &403e 66 ; room &68 : 66 &403f 65 64 6a ; room &69 : 65 64 6a &4042 69 6b ; room &6a : 69 6b &4044 6a 6c ; room &6b : 6a 6c &4046 6b ; room &6c : 6b &4047 6e ; room &6d : 6e &4048 6f 6d ; room &6e : 6f 6d &404a 71 6e 72 70 ; room &6f : 71 6e 72 70 &404e 78 71 6f ; room &70 : 78 71 6f &4051 6f 72 70 ; room &71 : 6f 72 70 &4054 81 73 71 6f ; room &72 : 81 73 71 6f &4058 77 74 72 67 ; room &73 : 77 74 72 67 &405c 67 73 77 ; room &74 : 67 73 77 &405f 67 76 77 ; room &75 : 67 76 77 &4062 77 75 67 ; room &76 : 77 75 67 &4065 76 73 67 75 74 ; room &77 : 76 73 67 75 74 &406a 79 70 ; room &78 : 79 70 &406c 7a 78 ; room &79 : 7a 78 &406e 7b 79 7d ; room &7a : 7b 79 7d &4071 7a 7c 7d ; room &7b : 7a 7c 7d &4074 84 85 7b ; room &7c : 84 85 7b &4077 7f 7a 7b ; room &7d : 7f 7a 7b &407a 7f ; room &7e : 7f &407b 80 7d 7e ; room &7f : 80 7d 7e &407e 7f 81 83 ; room &80 : 7f 81 83 &4081 80 72 82 ; room &81 : 80 72 82 &4084 81 ; room &82 : 81 &4085 80 ; room &83 : 80 &4086 85 86 7c ; room &84 : 85 86 7c &4089 84 7c ; room &85 : 84 7c &408b 84 87 ; room &86 : 84 87 &408d 88 86 ; room &87 : 88 86 &408f 89 87 ; room &88 : 89 87 &4091 88 ; room &89 : 88 &4092 90 8b 8c ; room &8a : 90 8b 8c &4095 8a ; room &8b : 8a &4096 8a 8d ; room &8c : 8a 8d &4098 8e 8c ; room &8d : 8e 8c &409a 8d 8f ; room &8e : 8d 8f &409c 91 8e ; room &8f : 91 8e &409e 8a ; room &90 : 8a &409f 8f 92 ; room &91 : 8f 92 &40a1 91 93 ; room &92 : 91 93 &40a3 92 94 ; room &93 : 92 94 &40a5 93 95 ; room &94 : 93 95 &40a7 97 94 ; room &95 : 97 94 &40a9 97 ; room &96 : 97 &40aa 96 db 95 ; room &97 : 96 db 95 &40ad db ; room &98 : db &40ae d7 ; room &99 : d7 &40af d7 ; room &9a : d7 &40b0 d7 ; room &9b : d7 &40b1 9d ; room &9c : 9d &40b2 9f 9c ; room &9d : 9f 9c &40b4 0e ; room &9e : 0e &40b5 9d a0 ; room &9f : 9d a0 &40b7 9f a4 ; room &a0 : 9f a4 &40b9 a5 a5 a2 a5 a1 a2 a5 a1 a1 a5 a1 a2 ; room &a1 : a5 a5 a2 a5 a1 a2 a5 a1 a1 a5 a1 a2 # "nosound" maze &40c5 a1 a1 a3 a3 a2 a3 a1 a2 a3 a3 a3 a2 ; room &a2 : a1 a1 a3 a3 a2 a3 a1 a2 a3 a3 a3 a2 # &40d1 a4 a2 a2 a3 a4 a2 a8 a2 a4 a8 a8 a7 ; room &a3 : a4 a2 a2 a3 a4 a2 a8 a2 a4 a8 a8 a7 # &40dd a3 a8 a8 a8 a4 a4 a8 a4 a8 a8 a8 a0 ; room &a4 : a3 a8 a8 a8 a4 a4 a8 a4 a8 a8 a8 a0 # &40e9 a1 a9 a2 a2 a2 a1 a9 a9 a1 a9 a1 a2 ; room &a5 : a1 a9 a2 a2 a2 a1 a9 a9 a1 a9 a1 a2 # &40f5 a2 a9 a1 a5 a3 a1 a9 a9 aa a3 a3 a7 ; room &a6 : a2 a9 a1 a5 a3 a1 a9 a9 aa a3 a3 a7 # &4101 a3 ab a8 a6 a4 a2 ac ac a3 ac a6 a8 ; room &a7 : a3 ab a8 a6 a4 a2 ac ac a3 ac a6 a8 # &410d a4 ac a8 a4 a4 a4 ac ac a4 a8 ac a4 ; room &a8 : a4 ac a8 a4 a4 a4 ac ac a4 a8 ac a4 # &4119 a5 ad a6 a5 a9 a1 ad ae a5 ad a6 a9 ; room &a9 : a5 ad a6 a5 a9 a1 ad ae a5 ad a6 a9 # &4125 af ae a9 ab a7 a5 ad ae a6 ae a9 a5 ; room &aa : af ae a9 ab a7 a5 ad ae a6 ae a9 a5 # &4131 a7 b0 ac a7 a8 a8 b0 ae a7 ab ab a6 ; room &ab : a7 b0 ac a7 a8 a8 b0 ae a7 ab ab a6 # &413d a8 b0 ac a8 a8 a8 b0 b0 a8 b0 ac b0 ; room &ac : a8 b0 ac a8 a8 a8 b0 b0 a8 b0 ac b0 # &4149 a9 ad ae a9 a9 a9 ad ad a9 ae ae a9 ; room &ad : a9 ad ae a9 a9 a9 ad ad a9 ae ae a9 # &4155 a9 a9 ae ad ad ad a9 ad ae ae a9 ae ; room &ae : a9 a9 ae ad ad ad a9 ad ae ae a9 ae # &4161 ab af b0 ae aa ac ae b0 ab b1 ac aa ; room &af : ab af b0 ae aa ac ae b0 ab b1 ac aa # &416d ac b0 ac ac ac b0 b0 ac ac b0 b0 b0 ; room &b0 : ac b0 ac ac ac b0 b0 ac ac b0 b0 b0 # &4179 af b2 ; room &b1 : af b2 &417b b1 b3 ; room &b2 : b1 b3 &417d bd ba b2 ; room &b3 : bd ba b2 &4180 ba ; room &b4 : ba &4181 bb ; room &b5 : bb &4182 bc ; room &b6 : bc &4183 bc ; room &b7 : bc &4184 bb ; room &b8 : bb &4185 ba ; room &b9 : ba &4186 b4 b9 b3 bb ; room &ba : b4 b9 b3 bb &418a b5 b8 ba bc ; room &bb : b5 b8 ba bc &418e b6 b7 bb ; room &bc : b6 b7 bb &4191 be b3 ; room &bd : be b3 &4193 bf bd ; room &be : bf bd &4195 c0 be cc ; room &bf : c0 be cc &4198 c1 bf ; room &c0 : c1 bf &419a c2 c0 ; room &c1 : c2 c0 &419c c3 c1 ; room &c2 : c3 c1 &419e c2 c5 ; room &c3 : c2 c5 &41a0 c5 ; room &c4 : c5 &41a1 c6 c3 c4 ; room &c5 : c6 c3 c4 &41a4 c7 c5 ; room &c6 : c7 c5 &41a6 c6 c8 ; room &c7 : c6 c8 &41a8 c7 ca cb ; room &c8 : c7 ca cb &41ab d4 cf d3 ce ; room &c9 : d4 cf d3 ce &41af c8 ; room &ca : c8 &41b0 c8 ; room &cb : c8 &41b1 bf cd ; room &cc : bf cd &41b3 cc ce ; room &cd : cc ce &41b5 cf d0 c9 d1 cd ; room &ce : cf d0 c9 d1 cd &41ba c9 ce ; room &cf : c9 ce &41bc d1 ce ; room &d0 : d1 ce &41be d2 d0 d3 ce ; room &d1 : d2 d0 d3 ce &41c2 d1 d3 ; room &d2 : d1 d3 &41c4 d4 d2 c9 d1 ; room &d3 : d4 d2 c9 d1 &41c8 c9 d3 ; room &d4 : c9 d3 &41ca 01 ; room &d5 : 01 &41cb 3a ; room &d6 : 3a # (deadly) &41cc db ; room &d7 : db # (deadly) &41cd 3c ; room &d8 : 3c # (deadly) &41ce 0e ; room &d9 : 0e &41cf d9 ; room &da : d9 &41d0 97 d7 d7 98 ; room &db : 97 d7 d7 98 ; unused &41d4 fb # Would be " " ; string_table_zero ; string_000 &41d5 fd 45 fb 51 fb db ; "You are " ; string_001 &41db fd 45 fc ed 59 db ; "You're " ; string_002 &41e1 48 3a 00 70 93 fb 49 5d ee 81 93 f9 df 73 66 6d ; "in the entrance hall of a small, deserted railway station. To the &41f1 5c 43 4b fb 74 6e 58 f6 47 3a 11 f9 5d b1 64 e4 ; north, a gothic archway leads into the waiting room, and worn &4201 de fb 6a 8f 4b fb 39 60 65 47 3a f2 dc 72 55 fb ; steps lead down to the street outside. The screeching of freight &4211 2f f9 3b f2 75 5a 37 60 39 fb 2d fb 47 3a 09 fb ; trains drifts in from the distance" &4221 50 32 f6 3a ee de 67 e0 8f 55 fb 49 e1 67 e4 56 &4231 fb 14 60 c9 e4 e1 ef 60 48 17 3a 8b 74 68 de e0 &4241 db ; string_003 &4242 48 5d 3d fb 74 dc 6c 4a 02 fb 50 32 fb dc 5a ea ; "in a wide station corridor outside an old telephone booth. The &4252 e7 5c 6d 7f c5 6f 59 91 ea 64 f6 3a 44 fb 70 60 ; door has been ripped off its hinges and is nowhere to be seen" &4262 c4 e0 5a ed e4 eb a6 5c ea e1 e1 fb 72 60 e3 55 &4272 e0 60 3b e4 60 aa cb 66 59 47 dd 59 46 e9 db ; string_004 &4281 48 5d 3d f9 ee 8e 90 5b 02 f6 12 fb e4 60 5d dd ; "in a wide, sunlit corridor. South is a battered ticket office long &4291 6e 6d 52 fb 6c ad e0 5b ea e1 e1 e4 de 59 23 ee ; since closed, its windows boarded up and covered in graffiti. To &42a1 65 de 59 15 df f9 72 60 2c ce 60 91 6a 7b 5c d4 ; the north an archway leads to the Buffet" &42b1 fb 3b de 33 e0 5c 48 e2 7c e1 e1 e4 6c f6 47 3a &42c1 11 fb dc 5a 6a 8f 4b fb 39 60 47 3a fd d6 e1 e1 &42d1 e0 ef db ; string_005 &42d4 48 3a f2 dc 72 55 fb 2f f9 72 60 e2 67 e0 5a d9 ; "in the waiting room, its green painted walls darkened by an age of &42e4 65 6d 5c 2a 60 30 6b e0 5c dd 5e dc 5a dc e2 59 ; filthy smoke. Cracks in the plaster walls give the only clue that &42f4 49 e1 a3 64 5e a0 ea e6 e0 f6 de 7c ad 60 48 3a ; seats once lined them" &4304 eb 87 ee 6d 5f 2a 60 c2 f1 59 3a 1d de e7 f0 59 &4314 1c 82 6e 60 6f de 59 e7 65 e0 5c 4c e8 db ; string_006 &4322 48 3a 6d 7f c5 6f 59 91 ea 64 f6 ee a1 e0 6f 59 ; "in the telephone booth. Someone called Kilroy has obviously been &4332 de 83 7f 5c fd e6 a3 9b 5e 70 60 ea dd f1 e4 57 ; here before you because his name is daubed above the shelf where &4342 e7 5e c4 e0 5a e3 66 59 c4 e1 75 59 45 fb c4 8d ; the 'phone used to be" &4352 cd 59 77 60 e9 92 59 e4 60 d1 f0 c4 5c 25 fb 3a &4362 ee 69 e7 e1 fb cb 66 59 3a fc c5 6f 59 f0 82 5c &4372 47 c4 db ; string_007 &4375 48 3a d6 e1 e1 e0 ef f9 74 4d 55 fb 92 6f e2 ee ; "in the buffet, standing amongst the dusty tables. The stench of &4385 5b 3a d0 74 5e 88 96 73 f6 3a 74 6b 8f fb 49 9b ; rotting food lingers in the air" &4395 ef ef 55 fb 84 ea 5c e7 55 66 60 48 3a b0 ed db ; string_008 &43a5 4a 5d 26 fb 0d fb 49 74 6f 59 37 60 39 55 fb d4 ; "on a short flight of stone steps leading up to the station and &43b5 fb 47 3a 74 dc 6c 4a 3b 2d fb 47 3a 09 f6 ee a1 ; down to the street. Someone below notices you and ducks behind a &43c5 e0 6f 59 24 fb aa 6c de e0 60 45 fb 3b d0 ad 60 ; parked car" &43d5 05 5d eb 6a e6 e0 5c de 6a db ; string_009 &43df 48 3a 2e fb b0 5f 50 32 fb fd cf 6e 3e fb db ; "in the open air outside Platform " ; string_00a &43ee fd 6f e0 f6 3a ef 83 e7 fb e2 dc 6d ee f9 15 5c ; "One. The tall gates, closed for many years, have rusted together. &43fe 84 5f e8 68 5e f4 e0 6a ee f9 70 f1 59 ed cd 6d ; Grey, iron steps lead up to a bridge" &440e 5c 7e 98 4c ed f6 e2 67 f4 f9 be 4a 37 60 39 fb &441e d4 fb 47 5d 07 db ; string_00b &4424 fd ef f2 ea f9 ee 78 7f 5c ea e1 e1 fb dd 5e 5d ; "Two, sealed off by a mesh fence, too high to climb" &4434 e8 73 e3 fb e1 6b de e0 f9 7e ea fb 77 9a fb 47 &4444 de 90 e8 dd db ; string_00c &4449 4a 5d 0d fb 49 be 4a 37 ee f6 d2 74 5e eb 6e de ; "on a flight of iron steps. Rusty patches surround the bulbous &4459 69 60 ee f0 ed ed 71 e9 5c 3a d6 e7 dd 57 fb ed ; rivets that line the metal walls" &4469 e4 79 ef 60 1c e7 65 59 3a ae ef 83 fb 2a ee db ; string_00d &4479 4a 5d e7 6a 98 f9 be 4a 07 fb 10 ee eb 68 60 3a ; "on a large, iron bridge which spans the railway below. Gazing down &4489 43 4b fb 24 f6 e2 dc f5 55 fb 2d fb 4f 3a e7 65 ; at the line you see that it is obviously in frequent use" &4499 59 45 fb 46 fb 1c e4 5b e4 60 ea dd f1 e4 57 e7 &44a9 5e 48 e1 67 ac 6b 5b f0 82 db ; string_00e &44b3 fd 48 3a 8b 74 68 de 59 5d 14 fb dc eb 94 ea b2 ; "In the distance a train approaches. " &44c3 69 ee f6 db ; string_00f &44c7 fd 3a 14 fb df 7c f2 60 86 51 ed f6 45 fb 46 fb ; "The train draws nearer. You see it is made up of an engine, three &44d7 e4 5b e4 60 81 df 59 d4 fb 49 dc 5a 6b e2 65 e0 ; wagons and a Guard's Van. " &44e7 f9 64 67 59 f2 dc e2 6f 60 3b 5d fd 13 fc 60 fd &44f7 f1 68 f6 db ; string_010 &44fb fd 8b 67 de ef e7 5e 24 fb 45 fb e4 60 dc 5a 6b ; "Directly below you is an engine. " &450b e2 65 e0 f6 db ; string_011 &4510 fd 5d d0 74 5e 7a 83 fb f2 dc e2 4a eb c6 82 60 ; "A dusty coal wagon passes underneath. " &4520 22 e9 78 64 f6 db ; string_012 &4526 fd 5d 6c e8 c4 5f f2 dc e2 4a 64 22 60 24 f6 db ; "A timber wagon thunders below. " ; string_013 &4536 fd 5d f2 dc e2 4a 16 5d de 6a b1 fb 49 74 6f 59 ; "A wagon with a cargo of stone chippings clatters underneath. " &4546 de 77 a7 55 60 de e7 6e ef 66 60 22 e9 78 64 f6 &4556 db ; string_014 &4557 fd 5d fd 13 fc 60 fd f1 dc 5a eb c6 82 60 22 fb ; "A Guard's Van passes under the bridge. " &4567 3a 07 f6 db ; string_015 &456b fd 3a 14 fb df 85 dc eb a6 6a 60 65 47 5d 30 fb ; "The train disappears into a dark tunnel. " &457b ef 8e 86 e7 f6 db ; string_016 &4581 4a 5d e7 6a 98 f9 cc 6e f9 de 6f de 67 ef 59 ee ; "on a large, flat, concrete slab outside a grimy, yellow workmen's &4591 87 dd fb 50 32 fb 5d 9d e4 e8 f4 f9 f4 89 99 62 ; hut" &45a1 f2 75 e6 e8 6b fc 60 a5 ef db ; string_017 &45ab 65 32 fb 3a f2 75 e6 e8 6b fc 60 a5 ef f6 90 56 ; "inside the workmen's hut. Light streams in through the exit, &45bb fb 74 67 92 60 48 64 ed 71 9a fb 3a 2b f9 ee a9 ; showing it to be small and dingy" &45cb f2 55 fb e4 5b 47 dd 59 0e 3b df 55 f4 db ; string_018 &45d9 4a 3a d9 79 e8 6b ef f6 ee a1 e0 cb 66 59 25 f9 ; "on the pavement. Somewhere above, a window breaks. In the time it &45e9 5d 2c ea 62 dd 67 bb ee f6 48 3a 6c e8 59 e4 5b ; takes to look up, there is the crack of gunfire and a bullet rips &45f9 88 e6 e0 60 47 34 fb d4 f9 4c ed 59 e4 60 3a de ; through your chest, hurling you to the floor" &4609 7c ad fb 49 e2 8e e1 be 59 3b 5d d6 e7 7f 5b ed &4619 e4 eb 60 64 ed 71 9a fb 45 5f de 69 74 f9 a5 ed &4629 e7 55 fb 45 fb 47 3a 20 db ; string_019 &4632 de e7 55 55 fb 47 3a 9b 49 49 3a fd 13 fc 60 fd ; "clinging to the roof of the Guard's Van, your hands closed around &4642 f1 68 f9 45 5f e3 4d 60 15 5c 6a 71 e9 5c 3a 9c ; the edge of a hole in a fanlight. Your eyes are narrowed against &4652 e2 59 49 5d a9 e7 59 48 5d e1 68 90 56 f6 45 5f ; the wind, as the train speeds on its way, making the landscape a &4662 e0 f4 e0 60 51 fb e9 6a 9b c1 5c dc e2 dc 65 ee ; technicolour blur! " &4672 5b 3a 2c f9 dc 60 3a 14 fb ee a6 9c 60 4a 72 60 &4682 4b f9 81 e6 55 fb 3a e7 4d ee 8d eb 59 5d 6d 8f &4692 e9 e4 7a e7 53 fb 96 f0 ed f8 db ; string_01a &469d 5d 30 fb ef 8e 86 e7 fb 99 a1 60 2d fb 3a ef 7c ; "a dark tunnel looms down the track" &46ad ad db ; string_01b &46af fd 3a 14 fb 8f 6a 98 60 65 47 3a ef 8e 86 e7 f6 ; "The train charges into the tunnel. Belatedly, you scramble for the &46bf c4 87 6d df e7 f4 f9 45 fb ee de 7c e8 96 59 84 ; hole and are almost through, when your head cannons into the &46cf 5f 3a a9 e7 59 3b 51 fb 83 bc ee 5b 64 ed 71 9a ; tunnel arch and bounces down the track! " &46df f9 f2 69 5a 45 5f 69 dc 5c de 68 e9 6f 60 65 47 &46ef 3a ef 8e 86 e7 fb 6a 8f fb 3b dd 71 e9 de e0 60 &46ff 2d fb 3a ef 7c ad f8 db ; string_01c &4707 48 3a fd 13 fc 60 fd f1 dc 5a 10 e4 60 7a e7 5c ; "in the Guard's Van which is cold and sparsely furnished. There is &4717 3b ee eb 6a 82 e7 5e e1 f0 ed e9 85 69 df f6 4c ; an unreachable hole in the fanlight above" &4727 ed 59 e4 60 dc 5a 8e 67 b2 70 96 59 a9 e7 59 48 &4737 3a e1 68 90 56 fb 25 db ; string_01d &473f fd dc 5a dc e2 e2 67 ee 8c f1 59 34 55 fb 13 fb ; "An aggressive looking guard strides menacingly towards you! " &474f 74 ed e4 7b 60 e8 6b b2 55 e7 5e 7e f2 6a df 60 &475f 45 f8 db ; string_01e &4762 fd 3a 13 f9 dc 5a b5 eb 66 5b 48 fd 75 e4 6b ef ; "The guard, an expert in Oriental fighting techniques, kicks you in &4772 83 fb e1 e4 56 55 fb 6d 8f e9 e4 ac 73 f9 e6 e4 ; the larynx and you collapse to the floor! " &4782 ad 60 45 fb 48 3a e7 6a f4 e9 f3 fb 3b 45 fb 7a &4792 e7 87 eb ee 59 47 3a 20 f8 db ; string_01f &479c fd 45 fb e7 8e e2 59 4f 3a 13 fb 16 3a ee eb 68 ; "You lunge at the guard with the spanner, but with the agility of a &47ac e9 66 f9 d6 5b 16 3a dc e2 a3 72 5e 49 5d eb 68 ; panther, he dodges to one side, slips and tumbles out of the van! &47bc 4c ed f9 e3 59 7d df 98 60 47 6f 59 32 f9 ee 90 ; " &47cc eb 60 3b ef 95 dd 7f 60 50 fb 49 3a f1 68 f8 db ; string_020 &47dc 48 5d 43 4b fb 8c df 55 fb de f0 5b 65 47 3a 32 ; "in a railway siding cut into the side of a grassy bank. Slate &47ec fb 49 5d e2 7c ee ee 5e dd 68 e6 f6 ba 6e 59 37 ; steps, cracked and pitted, lead to a winding path" &47fc ee f9 de 7c ad e0 5c 3b eb 72 6d df f9 39 fb 47 &480c 5d 2c 55 fb 31 db ; string_021 &4812 f6 3a 14 fb bc 79 60 ea e1 e1 db ; ". The train moves off" ; string_022 &481d 4f 3a 6b 5c 49 3a 8c df 55 fb 33 34 55 fb 5d 04 ; "at the end of the siding overlooking a village. Log buttresses &482d f6 99 e2 fb dd b6 ef 67 ee 82 60 2a fb 45 fb 65 ; wall you in, holding back the bank" &483d f9 a9 e7 df 55 fb 1e 3a dd 68 e6 db ; string_023 &4849 4a 5d 1b 8d ee 59 b5 8d f1 dc 6d 5c 17 3a 77 93 ; "on a staircase excavated from the hillside. Mosses and other small &4859 32 f6 bc ee 82 60 3b ea 4c 5f 0e cf 68 ef 60 de ; plants cover its crumbling slabs" &4869 33 fb 72 60 de ed 95 96 55 fb ee 87 dd ee db ; string_024 &4878 4a 5d 41 55 f9 e2 7c 79 e7 fb 31 fb 10 de be de ; "on a sloping, gravel path which circles down the hill. The small &4888 7f 60 2d fb 3a 77 93 f6 3a 0e 74 6f e0 60 51 fb ; stones are interspersed with nettles and grasses" &4898 65 ef 66 ee eb 66 82 5c 16 86 ef ef 7f 60 3b e2 &48a8 7c ee ee 73 db ; string_025 &48ad 4a 3a 50 ee e6 be ef 60 49 5d 0e 04 f9 16 e7 6f ; "on the outskirts of a small village, with long, straight terraces &48bd e2 f9 74 7c e4 56 fb 03 60 3b f2 77 6d f9 64 6e ; and white, thatched cottages. In the distance, a church steeple is &48cd de 69 5c 7a ef 88 e2 73 f6 48 3a 8b 74 68 de e0 ; silhouetted against the sky" &48dd f9 5d 0a fb ee 6d c0 e7 59 e4 60 8c e7 e3 71 e0 &48ed ef 6d 5c dc e2 dc 65 ee 5b 3a ee e6 f4 db ; string_026 &48fb 48 5d 15 5c 65 f9 7a dd dd 7f 5c 09 f6 b4 4c 5f ; "in a closed in, cobbled street. Either side of you, old terraced &490b 32 fb 49 45 f9 ea e7 5c 03 5c 1a ee f9 55 7c 65 ; houses, ingrained with a century's dirt, stretch for some way into &491b e0 5c 16 5d de 6b ef f0 ed f4 fc 60 8b ed ef f9 ; the distance" &492b 74 67 ef 8f fb 84 5f ee a1 59 4b fb 65 47 3a 8b &493b 74 68 de e0 db ; string_027 &4940 48 5d 2c 55 fb 09 f9 7d ef 6d 5c b4 4c 5f 32 fb ; "in a winding street, dotted either side of which are small, &4950 49 10 51 fb ee 81 93 f9 d9 65 6d 5c 7a ef 88 e2 ; painted cottages, gleaming white under the brilliant sun" &4960 73 f9 e2 e7 78 e8 55 fb cb 72 59 22 fb 3a d7 a3 &4970 90 68 5b ee 8e db ; string_028 &4976 48 3a 04 fb fd 81 48 fd 09 f6 b4 4c 5f 32 f9 3d ; "in the village Main Street. Either side, wide pavements stretch &4986 fb d9 79 e8 6b ef 60 74 67 ef 8f fb 72 60 e7 6b ; its length" &4996 e2 64 db ; string_029 &4999 50 32 fb 5d fd dd b6 8f 66 fc 60 fd ee a9 eb f6 ; "outside a Butcher's Shop. In the front bay window hang sausages, &49a9 48 3a d8 6f 5b dd dc 5e 2c ea 62 e3 68 e2 fb ab ; cut hams and large joints of meat which drip gore into white, &49b9 f0 ab e2 73 f9 de f0 5b 70 e8 60 3b 0f e5 ea 65 ; china dishes" &49c9 ef 60 49 ae 4f 10 c9 e4 eb fb e2 75 59 65 47 f2 &49d9 77 6d f9 8f 65 5d df 85 69 ee db ; string_02a &49e4 48 3a fd dd b6 8f 66 fc 60 fd ee a9 eb f6 3a 6c ; "in the Butcher's Shop. The tiled floor is bright and newly &49f4 7f 5c 20 fb e4 60 d7 e4 56 fb 3b 86 f2 e7 5e de ; cleaned" &4a04 7f 68 9c db ; string_02b &4a08 48 3a 7a dd dd 7f 5c 04 fb ee ac 51 f9 3a 84 de ; "in the cobbled village square, the focal point of which is an old &4a18 83 fb 97 65 5b 49 10 e4 60 dc 5a ea e7 5c 0a f6 ; church. The church steeple rises into the sky, casting shadow over &4a28 3a 0a fb ee 6d c0 e7 59 ed e4 82 60 65 47 3a ee ; much of the square" &4a38 e6 f4 f9 8d 74 55 fb ee 70 7d 62 33 fb e8 f0 8f &4a48 fb 49 3a ee ac 51 db ; string_02c &4a4f 4a 3a 04 fb e2 67 6b f6 e4 81 98 60 49 e7 78 4c ; "on the village green. Images of leather thudding against willow &4a5f 5f 64 f0 df df 55 fb dc e2 dc 65 ee 5b f2 e4 93 ; and triangular cucumber sandwiches fill your mind, as you notice &4a6f ea 62 3b c3 e4 68 e2 f0 87 5f de f0 de 95 c4 5f ; the bare patch in the centre of the lawn and the broken windows of &4a7f ee 4d f2 e4 de 69 60 e1 e4 93 fb 45 5f e8 65 df ; nearby houses" &4a8f f9 dc 60 45 fb aa 6c de 59 3a dd 51 fb eb 6e 8f &4a9f fb 48 3a de 6b c3 59 49 3a 87 f2 5a 3b 3a dd 9b &4aaf e6 e0 5a 2c ce 60 49 86 6a dd 5e 1a ee db ; string_02d &4abd 48 5d 46 df 5e dd dc ad 09 f9 15 5c 48 dd 5e ef ; "in a seedy backstreet, closed in by tall, rundown buildings" &4acd 83 e7 f9 4e 2d fb d6 a3 df 55 ee db ; string_02e &4ad9 4f 3a 29 fb 6b 5c 49 3a 46 df 5e dd dc ad 09 f9 ; "at the west end of the seedy backstreet, outside a shabby &4ae9 50 32 fb 5d ee 70 dd dd 5e 91 ea e6 ee a9 eb f6 ; bookshop. Through the filth encrusted window you can just make out &4af9 64 ed 71 9a fb 3a e1 a3 64 fb 6b de ed cd 6d 5c ; the filth encrusted proprietor" &4b09 2c ea 62 45 fb 8d 5a e5 cd 5b 81 e6 59 50 fb 3a &4b19 e1 a3 64 fb 6b de ed cd 6d 5c 94 ea 94 e4 e0 ef &4b29 75 db ; string_02f &4b2b 65 32 fb 3a 91 ea e6 ee a9 eb f6 3a 94 ea 94 e4 ; "inside the bookshop. The proprietor peers over the counter at you" &4b3b e0 7e 5f a6 66 60 33 fb 3a de 71 e9 6d 5f 4f 45 &4b4b db ; string_030 &4b4c 4f 3a 00 47 dc db ; "at the entrance to a" ; string_031 &4b52 48 4c db ; "in the" ; string_032 &4b55 4f 3a e1 dc 5f 6b 5c 49 4c db ; "at the far end of the" ; string_033 &4b5f fb e7 6f e2 f9 30 fb 21 f6 3a a0 89 e7 fb 49 83 ; " long, dark alley. The smell of alcohol and the sound of drunken &4b6f 7a a9 e7 fb 3b 3a ee 71 e9 5c 49 df 4e e6 e0 5a ; laughter drifts from the blackness" &4b7f 87 f0 56 e0 5f c9 e4 e1 ef 60 17 3a dd 87 ad e9 &4b8f 73 ee db ; string_034 &4b92 50 32 fb 5d a0 ea e6 5e 88 f1 66 e9 f6 de 67 bb ; "outside a smoky tavern. Creaking above your head hangs a sign with &4ba2 55 fb 25 fb 45 5f 69 dc 5c e3 68 e2 60 5d 8c e2 ; a picture of a large fish, a piece of string and some writing that &4bb2 5a 16 5d a8 de ef f0 ed 59 49 5d 0f e1 85 e3 f9 ; is foreign to you" &4bc2 5d a8 e0 de 59 49 74 ed 55 fb 3b ee a1 59 f2 ed &4bd2 72 55 fb 1c e4 60 84 67 d3 5a 47 45 db ; string_035 &4bdf 48 3a 00 eb c6 ab e2 59 49 3a 88 f1 66 e9 f6 3a ; "in the entrance passage of the tavern. The dazzle of flashing &4bef d1 f5 f5 e7 59 ea e1 fe e1 87 ca 55 fb 90 56 ee ; lights and an electronic tune draws your attention to a Bandit" &4bff fe 3b dc 5a e0 7f de c3 6f e4 de fb ef 8e 59 df &4c0f 7c f2 60 45 5f 6e ef 6b 6c 4a 47 5d fd dd 4d 72 &4c1f db ; string_036 &4c20 48 3a 88 f1 66 5a 74 4d 55 fb 86 f3 5b 47 5d e7 ; "in the tavern standing next to a long, mahogany bar. A staircase &4c30 6f e2 f9 81 a9 e2 68 5e dd 6a f6 5d 1b 8d ee 59 ; leads up to the first floor and coming from the north are the &4c40 39 60 d4 fb 47 3a e1 be ee 5b 20 fb 3b 7a e8 55 ; tinkling sounds of a piano" &4c50 fb 17 3a 11 fb 51 fb 3a ef 65 e6 e7 55 fb ee 71 &4c60 80 60 49 5d a8 68 ea db ; string_037 &4c68 48 3a e7 71 e9 98 f6 5d de 9b f2 5c 49 a6 ea cf ; "in the lounge. A crowd of people is gathered around a black grand &4c78 59 e4 60 e2 dc 4c 52 fb 6a 71 e9 5c 5d dd 87 ad ; piano listening to the husky tones of a blond singer, as she &4c88 fb 9d 3b a8 68 ea fb 90 74 6b 55 fb 47 3a a5 ee ; drones on about falling in love but not really wanting to" &4c98 e6 5e ef 6f e0 60 49 5d 96 6f 5c ee 55 66 f9 dc &4ca8 60 ca 59 c9 6f e0 60 4a dc dd 50 fb e1 83 e7 55 &4cb8 fb 48 99 f1 59 d6 5b aa 5b 67 83 e7 5e f2 68 ef &4cc8 55 fb 7e db ; string_038 &4ccc 4a 5d 1b 4b f9 de 33 e0 5c 48 5d 52 fb de 6a a6 ; "on a stairway, covered in a red carpet which is worn in places" &4cdc 5b 10 e4 60 f2 75 5a 48 eb 87 de 73 db ; string_039 &4ce9 4a 3a 99 c1 5f e7 4d 55 fb 49 3a 1b 8d 82 f6 34 ; "on the lower landing of the staircase. Looking down you can see &4cf9 55 fb 2d fb 45 fb 8d 5a 46 fb b2 9b ee 60 3a 88 ; across the tavern" &4d09 f1 66 e9 db ; string_03a &4d0d 4a 3a d4 a6 5f e7 4d 55 f6 47 3a 28 fb e4 60 3a ; "on the upper landing. To the east is the painted, wooden door of &4d1d d9 65 6d df f9 42 e0 5a 44 fb 49 fd dd 9c 2f fb ; Bedroom One. A long corridor stretches north and carpeted stairs &4d2d fd 6f e0 f6 5d 23 02 fb 74 67 ef de 69 60 11 fb ; lead down to the tavern" &4d3d 3b de 6a a6 6d 5c 1b 60 39 fb 2d fb 47 3a 88 f1 &4d4d 66 e9 db ; string_03b &4d50 48 5d 23 02 fb 4a 3a e1 be ee 5b 20 fb 49 3a 88 ; "in a long corridor on the first floor of the tavern. East of you &4d60 f1 66 e9 f6 28 fb 49 45 fb e4 60 5d d9 65 6d df ; is a painted, wooden door leading into a bedroom" &4d70 f9 42 e0 5a 44 fb 39 55 fb 65 47 5d dd 9c 2f db ; string_03c &4d80 4f 3a 11 66 5a 6b 5c 49 3a 02 f6 5d f2 77 6d f9 ; "at the northern end of the corridor. A white, panelled door leads &4d90 eb 68 89 7f 5c 44 fb 39 60 29 f9 f2 77 e7 59 47 ; west, while to the east is a door marked "Bedroom Five"" &4da0 3a 28 fb e4 60 5d 44 fb e8 6a e6 e0 5c ff fd dd &4db0 9c 2f fb fd e1 e4 79 ff db ; string_03d &4db9 48 5d ee 81 93 f9 6c 7f 5c dd dc 64 2f f6 5d ee ; "in a small, tiled bathroom. A scratched, enamel bath is set &4dc9 de ed 6e de 69 df f9 6b 92 89 fb dd dc 64 fb e4 ; against the north wall and a mirror hangs above the wash basin on &4dd9 60 82 5b dc e2 dc 65 ee 5b 3a 11 fb 2a fb 3b 5d ; the west wall. A door leads east" &4de9 bd ed 9b 5f e3 68 e2 60 25 fb 3a f2 c6 e3 fb dd &4df9 c6 48 4a 3a 29 fb 2a f6 5d 44 fb 39 60 28 db ; string_03e &4e08 48 fd dd 9c 2f fb fd 6f e0 f9 74 6a 55 fb 2d fb ; "in Bedroom One, staring down the dull, black barrel of a pistol, &4e18 3a d0 93 f9 dd 87 ad fb dd 6a 67 e7 fb 49 5d a8 ; at the smirking face of a figure in a military uniform! "I've been &4e28 74 ea e7 f9 4f 3a a0 be e6 55 fb e1 b2 59 49 5d ; waiting for you", he says, and gently squeezes the trigger" &4e38 e1 d3 f0 ed 59 48 5d e8 a3 72 6a 5e 8e e4 3e f8 &4e48 ff fd e4 fc f1 59 c4 e0 5a f2 dc 72 55 fb 84 5f &4e58 45 ff f9 e3 59 ab f4 ee f9 3b e2 6b ef e7 5e ee &4e68 ac c7 f5 e0 60 3a c3 d3 e2 66 db ; string_03f &4e73 48 3a 82 de 6f 5c dd 9c 2f fb 10 e4 60 8c a4 e7 ; "in the second bedroom which is simply furnished with a single bed &4e83 5e e1 f0 ed e9 85 69 5c 16 5d ee 55 e7 59 c4 5c ; pushed against the south wall. A door to the west leads into the &4e93 eb cd 69 5c dc e2 dc 65 ee 5b 3a 12 fb 2a f6 5d ; corridor" &4ea3 44 fb 47 3a 29 fb 39 60 65 47 3a 02 db ; string_040 &4eb0 48 fd dd 9c 2f fb fd 64 67 e0 f6 5d e7 71 5c ee ; "in Bedroom Three. A loud scream from a scantily clad female is &4ec0 de 67 dc 63 17 5d ee de 68 6c e7 5e de 87 5c e1 ; quickly followed by a loud crash from a china vase as it shatters &4ed0 e0 81 e7 59 e4 60 ac e4 ad e7 5e 84 93 ea c1 5c ; against your head and showers you with fragments" &4ee0 dd 5e 5d e7 71 5c de 7c ca fb 17 5d 8f 65 5d f1 &4ef0 c6 59 dc 60 e4 5b ca 6e ef 66 60 dc e2 dc 65 ee &4f00 5b 45 5f 69 dc 5c 3b ee a9 f2 66 60 45 fb 16 e1 &4f10 7c e2 e8 6b ef ee db ; string_041 &4f17 48 fd dd 9c 2f fb fd e1 53 f6 5d 44 fb 39 60 29 ; "in Bedroom Four. A door leads west into the corridor and a lattice &4f27 fb 65 47 3a 02 fb 3b 5d e7 6e 6c de 59 2c ea 62 ; window in the east wall gives you a view over the village. A &4f37 48 3a 28 fb 2a fb c2 79 60 45 fb 5d f1 e4 e0 62 ; double bed is positioned against the north wall" &4f47 33 fb 3a 04 f6 5d df 71 96 59 c4 5c e4 60 97 ee &4f57 72 58 e0 5c dc e2 dc 65 ee 5b 3a 11 fb 2a db ; string_042 &4f66 48 3a e1 e4 e1 64 fb dd 9c 2f fb 10 e4 60 ed e4 ; "in the fifth bedroom which is richly furnished in silks and &4f76 8f e7 5e e1 f0 ed e9 85 69 5c 48 8c e7 e6 60 3b ; satins. A window looks east, across the village and a painted, &4f86 ee 6e 65 ee f6 5d 2c ea 62 34 60 28 f9 b2 9b ee ; wooden door leads into the corridor" &4f96 60 3a 04 fb 3b 5d d9 65 6d df f9 42 e0 5a 44 fb &4fa6 39 60 65 47 3a 02 db ; string_043 &4fad 4f 3a 1e 49 5d 74 6f 59 0a f6 b5 ac 85 e4 6d e7 ; "at the back of a stone church. Exquisitely carved pillars form an &4fbd 5e de 6a 79 5c a8 93 6a 60 3e fb dc 5a 0b 3b 39 ; aisle and lead your gaze south, to a large altar" &4fcd fb 45 5f e2 dc f5 59 12 f9 47 5d 0f 83 ef 6a db ; string_044 &4fdd 48 5d 23 0b dd 5e 3a 28 fb 2a fb 49 3a 0a f6 47 ; "in a long aisle by the east wall of the church. To the west, &4fed 3a 29 f9 34 55 fb 33 fb 3a a6 f2 ee f9 45 fb 8d ; looking over the pews, you can see the central and western aisle" &4ffd 5a 46 fb 3a de 6b ef 7c e7 fb 3b 29 66 5a dc 85 &500d 7f db ; string_045 &500f 48 3a 3d fb de 6b ef 7c e7 fb 0b 49 3a 0a fb 39 ; "in the wide central aisle of the church leading to the altar. &501f 55 fb 47 3a 83 ef 6a f6 b4 4c 5f 32 fb 49 45 fb ; Either side of you are long, oak pews adjoining the east and west &502f 51 fb e7 6f e2 f9 ea bb fb a6 f2 60 b9 e5 ea 65 ; aisles" &503f 55 fb 3a 28 fb 3b 29 fb dc 85 e7 73 db ; string_046 &504c 48 5d 23 0b dd 5e 3a 29 fb 2a fb 49 3a 0a f6 4f ; "in a long aisle by the west wall of the church. At the end of the &505c 3a 6b 5c 49 3a 0b 45 fb 8d 5a 46 fb 3a 7c e4 82 ; aisle you can see the raised structure of the pulpit leading off &506c 5c 74 d2 de ef f0 ed 59 49 3a eb f0 e7 a8 5b 39 ; from the altar" &507c 55 fb ea e1 e1 fb 17 3a 83 ef 6a db ; string_047 &5088 4f 3a 6b 5c 49 3a 29 66 5a dc 85 7f f6 7e f2 66 ; "at the end of the western aisle. Towering over you is the ornately &5098 55 fb 33 fb 45 fb e4 60 3a 75 9f 6d e7 5e ee de ; sculptured pulpit. A polished frame holds a set of hymn numbers" &50a8 f0 e7 eb ef f0 52 fb eb f0 e7 eb 72 f6 5d 97 e7 &50b8 85 69 5c e1 7c e8 59 a9 e7 df 60 5d 82 5b 49 e3 &50c8 f4 e8 5a e9 95 dd 66 ee db ; string_048 &50d1 4f 3a 12 fb 6b 5c 49 3a de 6b ef 7c e7 fb dc 85 ; "at the south end of the central aisle. A single step, carpeted in &50e1 7f f6 5d ee 55 e7 59 37 f9 de 6a a6 6d 5c 48 52 ; red, leads through a brass rail onto the altar" &50f1 f9 39 60 64 ed 71 9a fb 5d dd 7c ee 60 43 fb 6f &5101 47 3a 83 ef 6a db ; string_049 &5107 4f 3a e1 dc 5f 6b 5c 49 3a 28 66 5a dc 85 7f f9 ; "at the far end of the eastern aisle, next to a huge pipe organ. A &5117 86 f3 5b 47 5d a5 e2 59 a8 eb 59 75 e2 68 f6 5d ; shining, brass altar rail halts your passage further south" &5127 ca 65 55 f9 dd 7c ee 60 83 88 5f 43 fb 70 e7 ef &5137 60 45 5f eb c6 ab e2 59 e1 f0 ed 4c 5f 12 db ; string_04a &5146 74 4d 55 fb 48 3a eb f0 e7 eb 72 f6 17 64 e4 60 ; "standing in the pulpit. From this elevated position you can look &5156 e0 7f f1 dc 6d 5c 97 8c 6c 4a 45 fb 8d 5a 34 fb ; out over the whole church. Spiraling steps lead back down to the &5166 50 fb 33 fb 3a f2 a9 e7 59 0a f6 ee a8 7c e7 55 ; altar" &5176 fb 37 60 39 fb 1e 2d fb 47 3a 83 ef 6a db ; string_04b &5184 4a 3a ed e4 8f e7 5e e1 f0 ed e9 85 69 5c 83 ef ; "on the richly furnished altar. Spiral steps lead up to the pulpit. &5194 6a f6 ee a8 7c e7 fb 37 60 39 fb d4 fb 47 3a eb ; A narrow archway is partially hidden in the shadows of the east &51a4 f0 e7 eb 72 f6 5d 06 6a 8f 4b fb e4 60 eb 6a 6c ; wall" &51b4 83 e7 5e 77 df 7b 5a 48 3a ee 70 7d f2 60 49 3a &51c4 28 fb 2a db ; string_04c &51c8 48 3a f1 73 c3 f4 f6 dc 5a 6a 8f 4b fb 39 60 29 ; "in the vestry. An archway leads west, onto the altar. Wooden steps &51d8 f9 6f 47 3a 83 ef 6a f6 42 e0 5a 37 60 dc e2 dc ; against the north wall of the room, disappear into the ceiling. " &51e8 65 ee 5b 3a 11 fb 2a fb 49 3a 2f f9 df 85 dc a7 &51f8 78 5f 65 47 3a de e0 a3 55 f6 db ; string_04d &5203 83 e7 fb e4 60 ac e4 e0 5b 3b ee 66 6b e0 db ; "all is quiet and serene" ; string_04e &5212 4c ed 59 51 fb ea dd f1 e4 57 fb 8c e2 e9 60 49 ; "there are obvious signs of a struggle and flecks of blood cover &5222 5d 74 d2 e2 e2 e7 59 3b e1 7f ad 60 49 96 9e 5c ; the floor" &5232 de 33 fb 3a 20 db ; string_04f &5238 4a dc 5a b5 ef 67 e8 89 5e 06 0d fb 49 42 e0 5a ; "on an extremely narrow flight of wooden steps which creak with &5248 37 60 10 de 67 bb fb 16 45 5f c8 66 5e bc 79 e8 ; your every movement" &5258 6b ef db ; string_050 &525b 48 5d 26 fb 02 fb 10 e4 60 bf fb 64 65 f9 45 5f ; "in a short corridor which is so thin, your shoulders rub against &526b ca 71 e7 df 66 60 d2 dd fb dc e2 dc 65 ee 5b 3a ; the wooden panels of the walls" &527b 42 e0 5a eb 68 89 60 49 3a 2a ee db ; string_051 &5287 48 3a 0a fb ee 6d c0 7f f6 64 ed 71 9a fb ba 72 ; "in the church steeple. Through slits in the walls you can look out &5297 60 48 3a 2a 60 45 fb 8d 5a 34 fb 50 fb 33 fb 3a ; over the village, and far above you a giant bell hangs motionless" &52a7 04 f9 3b e1 dc 5f 25 fb 45 fb 5d c2 68 5b dd 89 &52b7 e7 fb e3 68 e2 60 bc ef 58 38 db ; string_052 &52c2 4f 3a 74 6a 5b 49 dc db ; "at the start of a" ; string_053 &52ca 4a dc db ; "on a" ; string_054 &52cd fb e7 6f e2 f9 3d fb ef 6a 81 de fb 36 fb 10 82 ; " long, wide tarmac road which severs the land in a northerly &52dd f1 66 60 3a e7 3b 48 5d 11 66 e7 5e 8b 67 de ef ; direction. Either side of you, thick, green hedges, entwined with &52ed 58 f6 b4 4c 5f 32 fb 49 45 f9 64 e4 ad f9 e2 67 ; ivy and long grasses, run the length of the road" &52fd e0 5a 69 df e2 73 f9 6b ef f2 65 e0 5c 16 e4 f1 &530d 5e 3b 23 e2 7c ee ee 73 f9 4e fb 3a e7 6b e2 64 &531d fb 49 3a 36 db ; string_055 &5322 4a 5d ef 6a 81 de fb 36 f6 dc 5a 68 e4 81 e7 fb ; "on a tarmac road. An animal has forced its way through the hedge &5332 70 60 e1 75 de e0 5c 72 60 4b fb 64 ed 71 9a fb ; to the west of you, leaving a hole just large enough to allow you &5342 3a 69 df e2 59 47 3a 29 fb 49 45 f9 e7 78 f1 55 ; passage" &5352 fb 5d a9 e7 59 e5 cd 5b 0f 6b 71 9a fb 47 83 99 &5362 62 45 fb eb c6 ab 98 db ; string_056 &536a 4a 5d dd 6b 5c 48 3a 36 fb 10 b8 e0 c0 60 6a 71 ; "on a bend in the road which sweeps around towards the east" &537a e9 5c 7e f2 6a df 60 3a 28 db ; string_057 &5384 4a 5d 36 fb 74 67 ef 8f 55 fb 17 28 fb 47 29 f6 ; "on a road stretching from east to west. The tarmac " &5394 3a ef 6a 81 de fb db ; string_058 &539b 70 60 7b ef 66 54 dc 6d 5c 3b 3a 36 fb e4 60 ee ; "has deteriorated and the road is slightly pitted" &53ab 90 56 e7 5e eb 72 6d df db ; string_059 &53b4 e4 60 dd 9b e6 e0 5a 3b 97 64 ea 7f 60 dc dd 71 ; "is broken and potholes abound" &53c4 80 db ; string_05a &53c6 70 60 83 bc ee 5b de ed 95 dd 7f 5c dc 4b db ; "has almost crumbled away" ; string_05b &53d5 4a 5d 8b ed 5b ef 43 fb 39 55 fb 17 3a 36 fb 47 ; "on a dirt trail leading from the road to a desolate wasteland. The &53e5 5d df 73 ea e7 6e 59 f2 c6 6d e7 4d f6 3a 79 98 ; vegetation is dry and brittle, and has been tinged red by the &53f5 88 6c 4a e4 60 c9 5e 3b d7 72 ef 7f f9 3b 70 60 ; trail dust which hangs in the air" &5405 c4 e0 5a ef 55 e0 5c 52 fb dd 5e 3a ef 43 fb df &5415 cd 5b 10 e3 68 e2 60 48 3a b0 ed db ; string_05c &5421 48 5d e7 6f 89 f4 f9 df 73 ea e7 6e 59 eb 87 de ; "in a lonely, desolate place, where the trail disappears into the &5431 e0 f9 cb 66 59 3a ef 43 fb df 85 dc eb a6 6a 60 ; scrub of the wasteland" &5441 65 47 3a ee de d2 dd fb 49 3a f2 c6 6d e7 4d db ; string_05d &5451 48 3a df 67 6a 5e f2 c6 6d e7 4d ee f9 5d df 73 ; "in the dreary wastelands, a destitute figure, chilled by the &5461 6c ef b6 59 e1 d3 f0 67 f9 de 77 e7 7f 5c dd 5e ; biting wind which howls, like a banshee, around you! " &5471 3a dd 72 55 fb 2c fb 10 a9 f2 e7 ee f9 90 e6 59 &5481 5d dd 68 ee 69 e0 f9 6a 71 e9 5c 45 f8 db ; string_05e &548f 48 3a 8b 74 68 de 59 45 fb 8d 5a 46 fb 5d dd 6e ; "in the distance you can see a battered car" &549f 6d 52 fb de 6a db ; string_05f &54a5 3a d2 74 55 fb ee 69 93 fb 49 5d 8d 5f 90 e0 60 ; "the rusting shell of a car lies wrecked before you" &54b5 f2 67 ad e0 5c c4 e1 75 59 45 db ; string_060 &54c0 65 32 fb 3a ee de 7c eb a6 5c dc f0 7e bc d5 7f ; "inside the scrapped automobile. The windscreen has been shattered &54d0 f6 3a 2c ee de 67 e0 5a 70 60 c4 e0 5a ca 6e 6d ; and all that remains of its once beautiful interior, is the &54e0 52 fb 3b 83 e7 fb 1c 67 81 65 60 49 72 60 6f de ; passenger seat" &54f0 59 dd 78 f0 6c e1 f0 e7 fb 65 ef 66 54 f9 e4 60 &5500 3a eb c6 ee 6b 98 5f 82 6e db ; string_061 &550a 48 5d e8 f0 df df 5e 18 fb 47 3a 29 fb 49 10 ae ; "in a muddy field to the west of which meanders a river. " &551a 4d 66 60 5d ed e4 f1 66 f6 db ; string_062 &5524 3a 1f fb e4 60 f1 66 5e ed 71 9a fb 3b 64 9b f2 ; "the water is very rough and throws up a constant spray which soaks &5534 60 d4 fb 5d de 6f 74 68 5b ee eb 7c 5e 10 bf bb ; you" &5544 60 45 db ; string_063 &5547 5d 06 35 07 fb 16 e2 67 6b f9 ae ef 83 fb 43 60 ; "a narrow footbridge with green, metal rails crosses the river to &5557 de 9b ee 82 60 3a ed e4 79 5f 47 3a 29 db ; the west" ; string_064 &5565 47 3a 28 f9 5d e2 dc eb fb 48 3a 69 df e2 66 ea ; "to the east, a gap in the hedgerow leads through to the road. The &5575 62 39 60 64 ed 71 9a fb 47 3a 36 f6 3a ed e4 79 ; river swirls past you, white and frothing" &5585 5f b8 be e7 60 eb c6 5b 45 f9 cb 72 59 3b e1 9b &5595 64 55 db ; string_065 &5598 3a 1f fb e4 60 7b c0 fb 3b ed cd 69 60 dd 5e 4f ; "the water is deep and rushes by at great speed" &55a8 e2 67 4f ee a6 9c db ; string_066 &55af 3a 1f fb 46 e8 60 de 83 63 e3 66 e0 f9 d6 5b 34 ; "the water seems calm here, but looking down you see that the river &55bf 55 fb 2d fb 45 fb 46 fb 1c 3a ed e4 79 5f 4e 60 ; runs deep" &55cf 7b c0 db ; string_067 &55d2 4a 3a 35 07 f6 34 55 fb 33 fb 3a e2 67 6b f9 d9 ; "on the footbridge. Looking over the green, painted safety rail, &55e2 65 6d 5c ab e1 e0 ef 5e 43 f9 45 fb 46 fb 3a ed ; you see the river waters churning beneath" &55f2 e4 79 5f 1f 60 8f f0 ed e9 55 fb dd 6b 78 64 db ; string_068 &5602 4a 5d e7 78 e1 5e 31 fb 4e e9 55 fb 64 ed 71 9a ; "on a leafy path running through a wood of tall poplar trees. " &5612 fb 5d 42 fb 49 ef 83 e7 fb 97 eb 87 5f 40 ee f6 &5622 db ; string_069 &5623 3a 35 07 fb 39 60 28 fb b2 9b ee 60 3a f1 e4 ea ; "the footbridge leads east across the violent waters of the river" &5633 e7 6b 5b 1f 60 49 3a ed e4 f1 66 db ; string_06a &563f 45 5f 4b fb 47 3a 29 fb e4 60 96 ea ad e0 5c dd ; "your way to the west is blocked by a fallen tree" &564f 5e 5d e1 83 7f 5a 40 db ; string_06b &5657 3a 31 fb 28 fb e4 60 96 ea ad e0 5c dd 5e 5d e1 ; "the path east is blocked by a fallen tree" &5667 83 7f 5a 40 db ; string_06c &566c 3a ee f0 5a e1 a3 ef 66 60 64 ed 71 9a fb 3a 40 ; "the sun filters through the treetops, casting cool shadows broken, &567c 7e eb ee f9 8d 74 55 fb 7a ea e7 fb ee 70 7d f2 ; now and then, by beams of intense light" &568c 60 dd 9b e6 6b f9 aa 62 3b 4c e9 f9 dd 5e dd 78 &569c e8 60 49 65 ef 6b ee 59 90 56 db ; string_06d &56a7 4a 3a 29 66 5a dd 68 e6 fb 49 3a ed e4 79 5f 34 ; "on the western bank of the river looking west across the well &56b7 55 fb 29 fb b2 9b ee 60 3a f2 89 e7 fb 1f e0 5c ; watered pastures which lead to a dilapidated farmhouse" &56c7 d9 74 f0 67 60 10 39 fb 47 5d 8b 87 a8 d1 6d 5c &56d7 e1 6a e8 1a db ; string_06e &56dc f6 3a ed e4 79 5f e4 60 e1 6b de e0 5c ea e1 e1 ; ". The river is fenced off by high wire meshing" &56ec fb dd 5e 77 9a fb f2 be 59 e8 73 e3 55 db ; string_06f &56fa 48 5d e7 f0 ca fb e8 78 7d f2 f9 3a bc e4 74 f9 ; "in a lush meadow, the moist, green grass, flecked with the gentle &570a e2 67 e0 5a e2 7c ee ee f9 e1 7f ad e0 5c 16 3a ; colours of wild flowers. " &571a e2 6b ef e7 59 7a e7 53 60 49 f2 a3 5c e1 99 f2 &572a 66 ee f6 db ; string_070 &572e 5d 64 e4 ad fb 69 df e2 59 96 ea ad 60 45 5f 4b ; "a thick hedge blocks your way to the farmhouse west" &573e fb 47 3a e1 6a e8 1a fb 29 db ; string_071 &5748 3a d6 93 fb 70 60 de 7f 51 5c 5d 4b fb 47 3a e1 ; "the bull has cleared a way to the farmhouse" &5758 6a e8 1a db ; string_072 &575c fd 5d 74 f0 a8 5c 34 55 fb d6 93 fb e8 8e de 69 ; "A stupid looking bull munches the sweet grass. " &576c 60 3a b8 c7 5b e2 7c ee ee f6 db ; string_073 &5777 fd 3a d6 93 fb 46 60 45 fb f2 dc f1 55 fb 3a 52 ; "The bull sees you waving the red, ragged seat cover and charges &5787 f9 7c e2 98 5c 82 4f de 33 fb 3b 8f 6a 98 60 7e ; towards you! " &5797 f2 6a df 60 45 f8 db ; string_074 &579e ff fd ea e3 fb b1 93 5e b1 ca f8 1c a5 ed ef ff ; ""Oh golly gosh! That hurt", you say, as one of the bull's horns &57ae f9 45 fb ab f4 f9 dc 60 6f 59 49 3a d6 93 fc 60 ; pierces your left buttock. Then you disappear over the horizon. " &57be e3 75 e9 60 a8 66 de e0 60 45 5f 7f e1 5b dd b6 &57ce 7e ad f6 4c 5a 45 fb df 85 dc a7 78 5f 33 fb 3a &57de e3 75 e4 f5 6f f6 db ; string_075 &57e5 ff fd e7 f0 ad 5e fd 61 14 e0 5c dc 60 5d e8 6e ; ""Lucky I trained as a matador", you think, as the bull steams past &57f5 b9 75 ff f9 45 fb 64 65 e6 f9 dc 60 3a d6 93 fb ; like a train, demolishes the hedge and disappears into the &5805 ee 6d 92 60 eb c6 5b 90 e6 59 5d 14 f9 7b bc e7 ; distance! " &5815 85 69 60 3a 69 df e2 59 3b df 85 dc eb a6 6a 60 &5825 65 47 3a 8b 74 68 de e0 f8 db ; string_076 &582f 4a 5d 06 e8 f0 df df 5e 31 fb 10 39 60 6a 71 e9 ; "on a narrow muddy path which leads around the farm. The path has &583f 5c 3a e1 6a e8 f6 3a 31 fb 70 60 c4 e0 5a 8f f0 ; been churned up by the charging bull" &584f ed 86 5c d4 fb dd 5e 3a 8f 6a e2 55 fb d6 93 db ; string_077 &585f 4f 3a 12 66 5a b5 ef 67 e8 72 5e 49 5d 0f e1 6a ; "at the southern extremity of a large farmyard outside a small &586f e8 f4 6a 5c 50 32 fb 5d 0e ee 69 df f9 de d2 7b ; shed, crudely constructed from wooden planks" &587f e7 5e de 6f 74 d2 de 6d 5c 17 42 e0 5a cf 68 e6 &588f ee db ; string_078 &5891 48 3a bd df ee 5b 49 3a e1 6a e8 f4 6a 5c 50 32 ; "in the midst of the farmyard outside the crumbling remains of a &58a1 fb 3a de ed 95 96 55 fb 67 81 65 60 49 5d 6f de ; once impressive farmhouse" &58b1 59 e4 a4 67 ee 8c f1 59 e1 6a e8 1a db ; string_079 &58be 50 32 fb 5d a5 e2 59 dd 6a 5a 4f 3a 11 fb 6b 5c ; "outside a huge barn at the north end of the farmyard. The barn is &58ce 49 3a e1 6a e8 f4 6a df f6 3a dd 6a 5a e4 60 d6 ; built from concrete blocks and has a corrugated, metal roof" &58de a3 5b 17 de 6f de 67 ef 59 96 ea ad 60 3b 70 60 &58ee 5d de 75 d2 e2 dc 6d df f9 ae ef 83 fb 9b ea e1 &58fe db ; string_07a &58ff 48 3a 42 e0 5a ee 69 df f6 7a dd c1 dd 60 e3 68 ; "in the wooden shed. Cobwebs hang from the ceiling, touching your &590f e2 fb 17 3a de e0 a3 55 f9 ef 71 8f 55 fb 45 5f ; face with their delicate threads" &591f e1 b2 59 16 4c e4 5f 7b 90 de 6e 59 64 67 b9 ee &592f db ; string_07b &5930 4a 3a de 6f de 67 ef 59 84 67 de 53 5b 49 5d a6 ; "on the concrete forecourt of a petrol station. The floor is &5940 ef 9b e7 fb 74 6e 58 f6 3a 20 fb e4 60 a0 e0 51 ; smeared with patches of thick engine oil and the aroma of gasoline &5950 5c 16 eb 6e de 69 60 49 64 e4 ad fb 6b e2 65 59 ; fills the air" &5960 ea a3 fb 3b 3a 6a a1 5d 49 e2 dc bf e7 65 59 e1 &5970 e4 93 60 3a b0 ed db ; string_07c &5977 65 32 fb 3a 8b 87 a8 d1 6d 5c e1 6a e8 1a f6 5d ; "inside the dilapidated farmhouse. A fall of rubble prevents you &5987 e1 83 e7 fb 49 d2 dd 96 59 eb 67 f1 6b ef 60 45 ; from exploring the house further" &5997 fb 17 b5 cf 75 55 fb 3a 1a fb e1 f0 ed 4c ed db ; string_07d &59a7 f2 b9 55 fb 64 ed 71 9a fb 5d 74 6b 8f 55 fb eb ; "wading through a stenching patch of freshly dug manure! Over a &59b7 6e 8f fb 49 e1 67 ca e7 5e d0 e2 fb e8 68 f0 67 ; wooden fence to the north you can see a hill rising to a sheer &59c7 f8 33 fb 5d 42 e0 5a e1 6b de 59 47 3a 11 fb 45 ; cliff. South of you is the side wall of the house" &59d7 fb 8d 5a 46 fb 5d 77 93 fb ed 85 55 fb 47 5d ee &59e7 69 e0 5f 19 f6 12 fb 49 45 fb e4 60 3a 32 fb 2a &59f7 fb 49 3a 1a db ; string_07e &59fc 48 3a dd 6a e9 f6 0e e0 f4 e0 60 a6 c0 fb 50 fb ; "in the barn. Small eyes peep out at you from the blackness of the &5a0c 4f 45 fb 17 3a dd 87 ad e9 73 60 49 3a e1 dc 5f ; far corners, where bails of hay are stacked against the walls" &5a1c de 75 e9 66 ee f9 cb 66 59 dd dc a3 60 49 70 5e &5a2c 51 fb 74 dc ad e0 5c dc e2 dc 65 ee 5b 3a 2a ee &5a3c db ; string_07f &5a3d 4a 5d 41 55 fb 31 fb 10 39 60 d4 fb 5d 42 e0 5c ; "on a sloping path which leads up a wooded hill. Some distance up &5a4d 77 93 f6 ee a1 59 8b 74 68 de 59 d4 fb 3a 31 f9 ; the path, a giant cliff rears into the sky" &5a5d 5d c2 68 5b 19 fb 67 6a 60 65 47 3a ee e6 f4 db ; string_080 &5a6d 4a 5d dd 6a 67 5a eb 87 6d dc f0 fb 33 ee 70 7d ; "on a barren plateau overshadowed by a high cliff wall. To the east &5a7d c1 5c dd 5e 5d 77 9a fb 19 fb 2a f6 47 3a 28 fb ; you can just make out the shape of a log cabin" &5a8d 45 fb 8d 5a e5 cd 5b 81 e6 59 50 fb 3a ee 70 eb &5a9d 59 49 5d 99 e2 fb 8d dd 65 db ; string_081 &5aa7 50 32 fb 3a 99 e2 fb 8d dd 65 f6 e4 5b e4 60 ee ; "outside the log cabin. It is small, but sturdily built. A door of &5ab7 81 93 f9 d6 5b 74 f0 ed 8b e7 5e d6 a3 ef f6 5d ; wooden planks leads inside" &5ac7 44 fb 49 42 e0 5a cf 68 e6 60 39 60 65 32 db ; string_082 &5ad6 65 32 fb 3a ee 55 e7 59 2f fb 49 3a 99 e2 fb 8d ; "inside the single room of the log cabin. A wooden door leads &5ae6 dd 65 f6 5d 42 e0 5a 44 fb 39 60 50 32 f6 4f 3a ; outside. At the far end of the room, to the east, a simple grate &5af6 e1 dc 5f 6b 5c 49 3a 2f f9 47 3a 28 f9 5d 8c a4 ; is set into the wall" &5b06 e7 59 9d 6e 59 e4 60 82 5b 65 47 3a 2a db ; string_083 &5b14 dd 5e 3a 69 6a 64 f6 e4 5b e4 60 e1 a3 7f 5c 16 ; "by the hearth. It is filled with the cold, grey ashes of a fire &5b24 3a 7a e7 df f9 e2 67 5e c6 69 60 49 5d e1 be 59 ; that has long since died away. An alcove lies to the north" &5b34 1c 70 60 23 ee 65 de 59 8b e0 5c dc 4b f6 dc 5a &5b44 08 fb 90 e0 60 47 3a 11 db ; string_084 &5b4d 4f 3a 35 fb 49 3a c2 68 5b 19 fb 10 99 a1 ee f9 ; "at the foot of the giant cliff which looms, ominously, over you! A &5b5d a1 65 57 e7 f4 f9 33 fb 45 f8 5d 06 0c e5 b6 60 ; narrow ledge juts out from the rock face far above you" &5b6d 50 fb 17 3a 9b ad fb e1 b2 59 e1 dc 5f 25 fb 45 &5b7d db ; string_085 &5b7e 48 3a 08 fb 10 e4 60 eb 68 89 7f 5c 48 e3 6a df ; "in the alcove which is panelled in hardwood" &5b8e 42 db ; string_086 &5b90 77 9a fb d4 fb 3a e1 b2 59 49 3a 19 f9 74 4d 55 ; "high up the face of the cliff, standing on a narrow ledge. Far &5ba0 fb 4a 5d 06 7f df 98 f6 e1 dc 5f 24 fb 45 fb 51 ; below you are the places you have visited on your journey. North &5bb0 fb 3a eb 87 de e0 60 45 fb 70 f1 59 f1 85 e4 6d ; is the entrance to a minute cave" &5bc0 5c 4a 45 5f e5 53 86 f4 f6 11 fb e4 60 3a 00 47 &5bd0 5d e8 65 b6 59 8d 79 db ; string_087 &5bd8 eb 67 ee 82 5c 1e dc e2 dc 65 ee 5b 3a 19 fb 2a ; "pressed back against the cliff wall, your fingers searching for &5be8 f9 45 5f e1 55 66 60 82 6a 8f 55 fb 84 5f de 7c ; cracks and crevices to hold. The ledge halts suddenly and, looking &5bf8 ad 60 3b de 67 f1 e4 de e0 60 47 a9 e7 df f6 3a ; down, the cabin is a mere speck on the landscape" &5c08 0c 70 e7 ef 60 ee f0 df df 6b e7 5e 4d f9 34 55 &5c18 fb 2d f9 3a 8d dd 48 e4 60 5d e8 66 59 ee a6 ad &5c28 fb 4a 3a e7 4d ee 8d a6 db ; string_088 &5c31 48 3a 8d 79 f6 5d ee 70 e1 5b 49 90 56 fb dd 78 ; "in the cave. A shaft of light beaming through the entrance shows &5c41 e8 55 fb 64 ed 71 9a fb 3a 00 ee a9 f2 60 d4 fb ; up simplistic markings on the walls" &5c51 8c a4 e7 85 6c de fb e8 6a e6 55 60 4a 3a 2a ee &5c61 db ; string_089 &5c62 4a 5d 7f df 98 f9 dc dd 50 fb 5d ae c3 59 3d f9 ; "on a ledge, about a metre wide, which curves towards the north &5c72 10 de f0 ed 79 60 7e f2 6a df 60 3a 11 fb 6a 71 ; around a pinnacle" &5c82 e9 5c 5d eb 65 9f de 7f db ; string_08a &5c8b ee ac c7 f5 e0 5c c4 ef c1 e0 5a 3a de 7c e2 e2 ; "squeezed between the craggy walls of a deep fissure. A narrow &5c9b 5e 2a 60 49 5d 7b c0 fb e1 85 ee f0 67 f6 5d 06 ; crawlway is visible to the northeast" &5cab de 7c f2 e7 4b fb e4 60 f1 85 e4 96 59 47 3a 11 &5cbb 28 db ; string_08b &5cbd 4f 3a eb 78 e6 fb 49 3a 01 f9 45 5f dd 67 dc 64 ; "at the peak of the mountain, your breath freezing in the icy &5ccd fb e1 67 e0 f5 55 fb 48 3a e4 de 5e de 6f df 72 ; conditions. The snowy slopes drag your gaze down to the east, &5cdd 58 ee f6 3a ee aa f2 5e 41 e0 60 df 7c e2 fb 45 ; where a long road leads to a white dome of enormous dimensions" &5ced 5f e2 dc f5 59 2d fb 47 3a 28 f9 cb 66 59 5d 23 &5cfd 36 fb 39 60 47 5d cb 72 59 7d e8 59 49 6b 75 e8 &5d0d 57 fb 8b e8 6b ee 58 ee db ; string_08c &5d16 4f 3a fd e4 de 59 fd ca ed 65 e0 f9 5d eb 87 de ; "at the Ice Shrine, a place of great, natural beauty, where &5d26 59 49 e2 67 6e f9 e9 6e f0 7c e7 fb dd 78 f0 af ; pilgrims came to worship in more peaceful times. The snow is &5d36 f9 cb 66 59 eb a3 9d e4 e8 60 8d e8 59 47 f2 75 ; coloured red, and frozen in the ice below you is the body of your &5d46 ee 77 eb fb 48 e8 75 59 eb 78 de e0 e1 f0 e7 fb ; Contact" &5d56 6c e8 73 f6 3a ee aa 62 e4 60 7a e7 71 52 fb 52 &5d66 f9 3b e1 9b f5 e0 5a 48 3a e4 de 59 24 fb 45 fb &5d76 e4 60 3a 91 df 5e 49 45 5f fd de 6f 88 de ef db ; string_08d &5d86 4f 3a 7e eb fb 49 dc 5a e4 de 5e 41 e0 f9 cb 72 ; "at the top of an icy slope, white from a fresh fall of snow. Far &5d96 59 17 5d e1 67 ca fb e1 83 e7 fb 49 ee aa f2 f6 ; below, leading into the crater, you can see a road" &5da6 e1 dc 5f 24 f9 39 55 fb 65 47 3a de ed 6e 66 f9 &5db6 45 fb 8d 5a 46 fb 5d 36 db ; string_08e &5dbf 4a 5d ee 6d c0 fb 41 59 10 e4 60 de 33 e0 5c 48 ; "on a steep slope which is covered in a thick, white blanket of &5dcf 5d 64 e4 ad f9 cb 72 59 96 68 e6 e0 5b 49 ee aa ; snow" &5ddf f2 db ; string_08f &5de1 de ed 71 de 69 5c 48 5d df 6b ee 59 64 e4 ad e0 ; "crouched in a dense thicket looking south onto a long, straight &5df1 5b 34 55 fb 12 fb 6f 47 5d e7 6f e2 f9 74 7c e4 ; road. A narrow crawlway exits north" &5e01 56 fb 36 f6 5d 06 de 7c f2 e7 4b fb 2b 60 11 db ; string_090 &5e11 fd 4c ed 59 e4 60 3a ee 71 e9 5c 49 5d 79 77 de ; "There is the sound of a vehicle approaching from the west. " &5e21 e7 59 dc eb 94 ea dc 8f 55 fb 17 3a 29 f6 db ; string_091 &5e30 fd 3a 79 77 de e7 59 df 7c f2 60 86 51 ed f6 45 ; "The vehicle draws nearer. You can see that it's a jeep. " &5e40 fb 8d 5a 46 fb 1c 72 fc 60 5d 27 f6 db ; string_092 &5e4d fd 3a 27 fb eb c6 82 60 8b 67 de ef e7 5e 48 d8 ; "The jeep passes directly in front of you. " &5e5d 6f 5b 49 45 f6 db ; string_093 &5e63 fd 3a 27 fb b2 de 89 66 dc 6d 60 65 47 3a 8b 74 ; "The jeep accelerates into the distance. " &5e73 68 de e0 f6 db ; string_094 &5e78 fd 45 fb 64 9b 62 3a a6 ef 9b e7 fb 91 e8 dd fb ; "You throw the petrol bomb in front of the jeep. It explodes in &5e88 48 d8 6f 5b 49 3a 27 f6 e4 5b b5 eb 99 7b 60 48 ; searing ball of flame. The jeep swerves and screeches to a halt. " &5e98 82 6a 55 fb dd 83 e7 fb 49 e1 87 ae f6 3a 27 fb &5ea8 b8 66 79 60 3b ee de 67 e0 de 69 60 47 5d 70 e7 &5eb8 ef f6 db ; string_095 &5ebb fd 45 fb a5 ed e7 fb 3a a6 ef 9b e7 fb 91 e8 dd ; "You hurl the petrol bomb into the jeep. There is a brilliant flash &5ecb fb 65 47 3a 27 f6 4c ed 59 e4 60 5d d7 a3 90 68 ; and the jeep is blasted into a thousand pieces, one of which &5edb 5b e1 87 ca fb 3b 3a 27 fb e4 60 dd 87 ee 6d 5c ; happens to lodge in your temple. " &5eeb 65 47 5d 64 57 3b a8 e0 de 73 f9 6f 59 49 10 70 &5efb a7 6b 60 47 99 df e2 59 48 45 5f 6d a4 7f f6 db ; string_096 &5f0b 77 df 7b 5a 48 3a 64 e4 ad fb 22 e2 9b f2 64 f9 ; "hidden in the thick undergrowth, surrounded by a natural wall of &5f1b ee f0 ed ed 71 e9 7b 5c dd 5e 5d e9 6e f0 7c e7 ; dense, entwined vegetation. To the south is a hole large enough &5f2b fb 2a fb 49 df 6b 82 f9 6b ef f2 65 e0 5c 79 98 ; for you to crawl through" &5f3b ef 6e 58 f6 47 3a 12 fb e4 60 5d a9 e7 59 0f 6b &5f4b 71 9a fb 84 5f 45 fb 47 de 7c f2 e7 fb 64 ed 71 &5f5b 9a db ; string_097 &5f5d 74 4d 55 fb 48 3a 23 36 fb 10 4e 60 17 28 fb 47 ; "standing in the long road which runs from east to west. There is a &5f6d 29 f6 4c ed 59 e4 60 5d d2 74 e7 55 fb 05 45 fb ; rustling behind you and you spin round just in time to see the &5f7d 3b 45 fb ee eb 48 ed 71 e9 5c e5 cd 5b 48 6c e8 ; glint of polished steel before it slices through your flesh" &5f8d 59 47 46 fb 3a e2 e7 65 5b 49 97 e7 85 69 5c ee &5f9d 6d 89 fb c4 e1 75 59 e4 5b ee 90 de e0 60 64 ed &5fad 71 9a fb 45 5f cc 73 e3 db ; string_098 &5fb6 fd 45 fc 93 fb 98 5b 4e fb 33 f8 db ; "You'll get run over! " ; string_099 &5fc2 74 4d 55 fb 4a 5d e7 6f e2 f9 74 7c e4 56 fb 36 ; "standing on a long, straight road which runs from east to west. To &5fd2 fb 10 4e 60 17 28 fb 47 29 f6 47 3a 11 fb e4 60 ; the north is a dense thicket of vegetation. " &5fe2 5d df 6b ee 59 64 e4 ad e0 5b 49 79 98 ef 6e 58 &5ff2 f6 db ; string_09a &5ff4 83 e7 fb e4 60 ac e4 e0 ef db ; "all is quiet" ; string_09b &5ffe 5d 27 fb 70 60 ee e6 e4 df 7b 5c b2 9b ee 60 3a ; "a jeep has skidded across the road but does not seem to be &600e 36 fb d6 5b 7d e0 60 aa 5b 46 63 47 dd 59 d1 81 ; damaged. The driver is sprawled in the road" &601e 98 df f6 3a c9 e4 79 5f e4 60 ee eb 7c f2 7f 5c &602e 48 3a 36 db ; string_09c &6032 ee 72 ef 55 fb 48 3a 8e 7a e8 e1 75 88 96 59 c9 ; "sitting in the uncomfortable driver's seat of the jeep. " &6042 e4 f1 66 fc 60 82 4f 49 3a 27 f6 db ; string_09d &604e 50 32 f9 e7 f4 55 fb c4 32 fb 3a df 6b ee 59 64 ; "outside, lying beside the dense thicket, is the corpse of the &605e e4 ad e0 ef f9 e4 60 3a de 75 eb ee 59 49 3a c9 ; driver" &606e e4 f1 66 db ; string_09e &6072 64 ed 71 9a fb 3a 2c ee de 67 6b f9 45 fb 8d 5a ; "through the windscreen, you can see the gates of a large, military &6082 46 fb 3a e2 dc 6d 60 49 5d e7 6a 98 f9 e8 a3 72 ; establishment in the distance" &6092 6a 5e 73 88 96 85 e3 e8 6b 5b 48 3a 8b 74 68 de &60a2 e0 db ; string_09f &60a4 50 32 fb 51 fb 3a 81 ee 8c f1 59 e2 dc 6d 60 47 ; "outside are the massive gates to the base which are closed. A &60b4 3a 3f fb 10 51 fb 15 df f6 5d 13 fb a6 66 60 4f ; guard peers at you, suspiciously" &60c4 45 f9 ee cd a8 de e4 57 e7 f4 db ; string_0a0 &60cf 50 32 f9 3a e2 dc 6d 60 47 3a 3f fb 51 fb 2e db ; "outside, the gates to the base are open" ; string_0a1 &60df ff fd 45 fc ed 59 aa 5b 6f 59 49 53 fb c9 e4 f1 ; ""You're not one of our drivers! You're an imposter", shouts the &60ef 66 ee f8 45 fc ed 59 dc 5a e4 e8 97 74 66 ff f9 ; guard, and splatters your brains over the windscreen with two &60ff ca 50 60 3a 13 f9 3b ee cf 6e ef 66 60 45 5f dd ; shots from his rifle! " &610f 7c 65 60 33 fb 3a 2c ee de 67 e0 5a 16 ef f2 ea &611f fb ee a9 ef 60 17 77 60 ed e4 e1 7f f8 db ; string_0a2 &612d ff fd eb c6 b8 75 df ff f9 e3 59 ab f4 ee f9 dd ; ""Password", he says, barely opening his mouth. " &613d 51 e7 5e 2e 55 fb 77 60 e8 50 e3 f6 db ; string_0a3 &614a ff fd f2 89 e7 f9 f2 89 e7 f9 f2 89 e7 f9 f2 89 ; ""Well, well, well, well, well! What have we here? Looks like &615a e7 f9 f2 89 e7 f8 cb 4f 70 f1 59 f2 59 e3 66 e0 ; you're an imposter, chum", says the guard, and blows a gaping hole &616a f7 34 60 90 e6 59 45 fc ed 59 dc 5a e4 e8 97 74 ; in your chest with his rifle! " &617a 66 f9 8f 95 ff f9 ab f4 60 3a 13 f9 3b 96 ce 60 &618a 5d e2 dc eb 55 fb a9 e7 59 48 45 5f de 69 ee 5b &619a 16 77 60 ed e4 e1 7f f8 db ; string_0a4 &61a3 ff fd 6b ef 66 ff f9 ab f4 60 3a 13 fb 64 ed 71 ; ""Enter", says the guard through his teeth. " &61b3 9a fb 77 60 6d e0 64 f6 db ; string_0a5 &61bc 64 ed 71 9a fb 3a 2c ee de 67 e0 5a 45 fb 8d 5a ; "through the windscreen you can see a large, tarmac area forming a &61cc 46 fb 5d e7 6a 98 f9 ef 6a 81 de fb 51 5d 3e 55 ; carpark. A low building looms before you" &61dc fb 5d de 6a eb 6a e6 f6 5d 99 62 d6 a3 df 55 fb &61ec 99 a1 60 c4 e1 75 59 45 db ; string_0a6 &61f5 74 4d 55 fb 48 3a de 6a eb 6a e6 fb dd 5e 3a dd ; "standing in the carpark by the battered frame of the jeep. To the &6205 6e 6d 52 fb e1 7c e8 59 49 3a 27 f6 47 3a 12 f9 ; south, a covered walkway leads into a low, concrete building" &6215 5d de 33 e0 5c f2 83 e6 4b fb 39 60 65 47 5d 99 &6225 f2 f9 de 6f de 67 ef 59 d6 a3 df 55 db ; string_0a7 &6232 48 5d ef 65 f4 f9 de f4 e7 65 c9 e4 de 83 fb 2f ; "in a tiny, cylindrical room. The curving walls have been covered &6242 f6 3a de f0 ed f1 55 fb 2a 60 70 f1 59 c4 e0 5a ; in shiny, aluminium foil to make them look really futuristic. A &6252 de 33 e0 5c 48 ca 65 f4 f9 83 95 65 e4 f0 63 84 ; sliding door leads east" &6262 a3 fb 47 81 e6 59 4c 63 34 fb 67 83 e7 5e e1 b6 &6272 f0 ed 85 6c de f6 5d ee 90 df 55 fb 44 fb 39 60 &6282 28 db ; string_0a8 &6284 48 5d 7b de 6f 88 e8 65 dc 6c 4a de 70 e8 dd 66 ; "in a decontamination chamber. A sliding door leads west and a &6294 f6 5d ee 90 df 55 fb 44 fb 39 60 29 fb 3b 5d 77 ; hissing sound emanates from a curtain of purified air which cloaks &62a4 ee ee 55 fb ee 71 e9 5c a2 68 dc 6d 60 17 5d de ; a circular exit" &62b4 f0 ed 88 48 49 eb f0 ed e4 e1 e4 e0 5c b0 5f 10 &62c4 de 99 bb 60 5d de be de f0 87 5f 2b db ; string_0a9 &62d1 48 5d e7 6a 98 f9 dd 87 ad fb 2f f9 72 60 2a 60 ; "in a large, black room, its walls padded with thick, foam rubber. &62e1 eb b9 7b 5c 16 64 e4 ad f9 84 dc 63 d2 dd dd 66 ; There is a deathly silence which sets your flesh crawling" &62f1 f6 4c ed 59 e4 60 5d df 78 64 e7 5e 8c e7 6b de &6301 59 10 82 ef 60 45 5f cc 73 e3 fb de 7c f2 e7 55 &6311 db ; string_0aa &6312 4a 5d 23 0d fb 49 ae ef 83 90 de fb 37 60 10 b6 ; "on a long flight of metallic steps which utter resounding clangs &6322 6d 5f 67 ee 71 80 55 fb de e7 68 e2 60 16 c8 66 ; with every footstep! Steel rails run their length" &6332 5e 35 37 f8 ee 6d 89 fb 43 60 4e fb 4c e4 5f e7 &6342 6b e2 64 db ; string_0ab &6346 4a 5d ae ef 83 fb cf 6e 3e fb 4f 3a 91 ef 7e 63 ; "on a metal platform at the bottom of the steps. To the east a &6356 49 3a 37 ee f6 47 3a 28 fb 5d de 6e f2 83 e6 fb ; catwalk travels into the distance. A short corridor leads west" &6366 ef 7c 79 e7 60 65 47 3a 8b 74 68 de e0 f6 5d 26 &6376 fb 02 fb 39 60 29 db ; string_0ac &637d 48 5d 06 02 fb 4e e9 55 fb 17 28 fb 47 29 f6 3a ; "in a narrow corridor running from east to west. The walls are &638d 2a 60 51 fb d9 65 6d 5c dc 5a 68 6c 82 eb 6c de ; painted an antiseptic white" &639d fb f2 77 6d db ; string_0ad &63a2 4f 3a 6b 5c 49 3a 02 f6 6a 8f 4b 60 39 fb 11 fb ; "at the end of the corridor. Archways lead north and south" &63b2 3b 12 db ; string_0ae &63b5 4a 5d 23 de 6e f2 83 e6 fb 10 e4 60 82 5b dc e2 ; "on a long catwalk which is set against the southern wall of the &63c5 dc 65 ee 5b 3a 12 66 5a 2a fb 49 3a 7a a4 7f f3 ; complex. Far below you, through the heavy mesh of the floor, you &63d5 f6 e1 dc 5f 24 fb 45 f9 64 ed 71 9a fb 3a 69 dc ; can see the gleaming warheads of towering missiles" &63e5 f1 5e e8 73 e3 fb 49 3a 20 f9 45 fb 8d 5a 46 fb &63f5 3a e2 e7 78 e8 55 fb f2 6a 69 b9 60 49 7e f2 66 &6405 55 fb e8 85 8c e7 73 db ; string_0af &640d 4a 5d e7 6f e2 f9 ae ef 83 fb de 6e f2 83 e6 fb ; "on a long, metal catwalk overlooking row upon row of nuclear &641d 33 34 55 fb 9b 62 d4 4a 9b 62 49 e9 f0 de e7 78 ; missiles. A ladder leads over the side, into the depths below" &642d 5f e8 85 8c e7 73 f6 5d 87 df 7b 5f 39 60 33 fb &643d 3a 32 f9 65 47 3a 7b eb 64 60 24 db ; string_0b0 &6449 4a 5d 3d f9 74 f0 ed df 5e cf 6e 3e fb 39 55 fb ; "on a wide, sturdy platform leading across the abyss, to a dark &6459 b2 9b ee 60 3a dc dd f4 ee ee f9 47 5d 30 fb a9 ; hole in the east wall" &6469 e7 59 48 3a 28 fb 2a db ; string_0b1 &6471 4f 3a e1 dc 5f 6b 5c 49 3a cf 6e 3e fb 10 e4 60 ; "at the far end of the platform which is set against the eastern &6481 82 5b dc e2 dc 65 ee 5b 3a 28 66 5a 2a fb 49 3a ; wall of the base. Below you are the missiles. A perfectly circular &6491 3f f6 24 fb 45 fb 51 fb 3a e8 85 8c e7 73 f6 5d ; hole leads east" &64a1 eb 66 e1 e0 de ef e7 5e de be de f0 87 5f a9 e7 &64b1 59 39 60 28 db ; string_0b2 &64b6 48 5d d7 e4 56 e7 5e e4 93 95 65 dc 6d 5c 7a a4 ; "in a brightly illuminated computer room. The walls are lined with &64c6 f0 6d 5f 2f f6 3a 2a 60 51 fb e7 65 e0 5c 16 3a ; the very latest products from the silicon age. Steps lead down &64d6 f1 66 5e 87 6d ee 5b 94 ea d0 de ef 60 17 3a 8c ; through a hole in the floor" &64e6 90 de 4a dc 98 f6 37 60 39 fb 2d fb 64 ed 71 9a &64f6 fb 5d a9 e7 59 48 3a 20 db ; string_0b3 &64ff 4f 3a 6b 5c 49 3a 7a a4 f0 6d 5f 2f f6 dc 5a ea ; "at the end of the computer room. An operator sits in front of a &650f eb 66 6e ea 5f ee 72 60 48 d8 6f 5b 49 5d e1 92 ; familiar, cream computer, too engrossed in a game of "Banjax" to &651f e4 90 6a f9 de 67 dc 63 7a a4 b6 66 f9 7e ea fb ; notice you! An alcove is to the south" &652f 6b e2 9b ee 82 5c 48 5d e2 92 59 49 ff fd dd 68 &653f e5 dc f3 ff fb 47 aa 6c de 59 45 f8 dc 5a 08 fb &654f e4 60 47 3a 12 db ; string_0b4 &6555 48 5d 0f dd 8e e6 66 f9 b5 8d f1 dc 6d 5c 17 3a ; "in a large bunker, excavated from the natural bedrock and lined &6565 e9 6e f0 7c e7 fb dd 9c 9b ad fb 3b e7 65 e0 5c ; with metre thick, reinforced concrete" &6575 16 ae c3 59 64 e4 ad f9 67 65 e1 75 de e0 5c de &6585 6f de 67 6d db ; string_0b5 &658a 48 5d 7a ee 5e 67 74 2f f9 d9 65 6d 5c 48 7b 90 ; "in a cosy restroom, painted in delicate pastel shades and &659a de 6e 59 eb c6 6d e7 fb ee 70 7b 60 3b e1 f0 ed ; furnished with comfortable chairs" &65aa e9 85 69 5c 16 7a e8 e1 75 88 96 59 de 70 be ee &65ba db ; string_0b6 &65bb 48 5d bd ed 9b 52 fb f2 c6 e3 2f fb 10 ee eb 6a ; "in a mirrored washroom which sparkles with a Cleanofresh &65cb e6 7f 60 16 5d fd de 7f 68 ea e1 67 ca fb de 7f ; cleanliness. Powerful jets of thick bleach have wiped out the germ &65db 68 e7 65 73 ee f6 97 f2 66 e1 f0 e7 fb e5 e0 ef ; population, even under the rim" &65eb 60 49 64 e4 ad fb 96 78 8f fb 70 f1 59 f2 e4 a6 &65fb 5c 50 fb 3a e2 66 63 97 eb f0 e7 6e 58 f9 e0 79 &660b 5a 22 fb 3a ed e4 e8 db ; string_0b7 &6613 48 5d 0e df 65 55 fb 51 5d e1 a3 7f 5c 16 eb 87 ; "in a small dining area filled with plastic coated chairs and &6623 ee 6c de fb 7a dc 6d 5c de 70 be 60 3b 88 96 73 ; tables" &6633 db ; string_0b8 &6634 48 5d 74 ea 67 2f f9 8b e8 e7 5e 90 5b dd 5e 5d ; "in a storeroom, dimly lit by a flickering, neon tube. The walls &6644 e1 90 ad 66 55 f9 86 4a ef f0 c4 f6 3a 2a 60 51 ; are hidden by the innumerable shelves which line them" &6654 fb 77 df 7b 5a dd 5e 3a 65 e9 95 66 dc 96 59 ee &6664 69 e7 79 60 10 e7 65 59 4c e8 db ; string_0b9 &666f de e7 b6 8f 55 fb 47 3a 7a e7 df f9 ae ef 83 fb ; "clutching to the cold, metal rungs of the ladder. Your head swoons &667f 4e e2 60 49 3a 87 df df 66 f6 45 5f 69 dc 5c b8 ; as you peer down into the abyss" &668f ea 6f 60 dc 60 45 fb a6 e0 5f 2d fb 65 47 3a dc &669f dd f4 ee ee db ; string_0ba &66a4 51 fb 4f 3a 35 fb 49 3a 87 df 7b 5f 10 bf 6a 60 ; "are at the foot of the ladder which soars up to the catwalk far &66b4 d4 fb 47 3a de 6e f2 83 e6 fb e1 dc 5f 25 f6 c2 ; above. Giant missiles, shimmering in the strange, artificial &66c4 68 5b e8 85 8c e7 73 f9 ee 77 e8 e8 66 55 fb 48 ; light, surround you" &66d4 3a 74 ed 68 98 f9 6a 6c e1 e4 de e4 83 fb 90 56 &66e4 f9 ee f0 ed ed 71 e9 5c 45 db ; string_0bb &66ee 92 6f e2 ee 5b 3a 6b 75 e8 57 fb e9 f0 de e7 78 ; "amongst the enormous nuclear missiles which form an artificial &66fe 5f e8 85 8c 7f 60 10 3e fb dc 5a 6a 6c e1 e4 de ; forest of titanium around you! Far above you is the domed roof of &670e e4 83 fb 84 67 ee 5b 49 6c ef 68 e4 f0 63 6a 71 ; the base" &671e e9 5c 45 f8 e1 dc 5f 25 fb 45 fb e4 60 3a 7d ae &672e 5c 9b 49 49 3a 3f db ; string_0bc &6735 48 3a 7a a4 f0 6d 5f 2f fb 08 f6 82 5b 65 47 3a ; "in the computer room alcove. Set into the wall beside you is a &6745 2a fb c4 32 fb 45 fb e4 60 5d e9 95 66 e4 de fb ; numeric keypad. A sliding door leads south" &6755 e6 e0 f4 eb b9 f6 5d ee 90 df 55 fb 44 fb 39 60 &6765 12 db ; string_0bd &6767 48 3a de 6b ef 7c e7 fb de 6f ef 9b e7 fb 2f f6 ; "in the central control room. Banks of flickering diodes are pushed &6777 dd 68 e6 60 49 e1 90 ad 66 55 fb 8b ea 7b 60 51 ; against the walls. A flight of stairs leads up through the ceiling &6787 fb eb cd 69 5c dc e2 dc 65 ee 5b 3a 2a ee f6 5d ; and sliding doors lead north and south" &6797 0d fb 49 1b 60 39 60 d4 fb 64 ed 71 9a fb 3a de &67a7 e0 a3 55 fb 3b ee 90 df 55 fb 44 60 39 fb 11 fb &67b7 3b 12 db ; string_0be &67ba 48 dc 5a e0 8f ea 55 fb de 70 e8 c4 5f 10 70 60 ; "in an echoing chamber which has no adventure significance, but has &67ca aa fb b9 f1 6b ef f0 ed 59 8c e2 e9 e4 e1 e4 de ; been included to irritate and generally annoy you" &67da 68 de e0 f9 d6 5b 70 60 c4 e0 5a 65 de e7 f0 7b &67ea 5c 47 be ed 72 6e 59 3b e2 6b 66 83 e7 5e 68 aa &67fa 5e 45 db ; string_0bf &67fd 48 3a e8 85 8c e7 59 7a e8 e8 3b 2f f6 ee 72 ef ; "in the missile command room. Sitting on a black, plastic swivel &680d 55 fb 4a 5d dd 87 ad f9 eb 87 ee 6c de fb b8 e4 ; chair in front of a large video display panel is General Garantz. &681d 79 e7 fb de 70 e4 5f 48 d8 6f 5b 49 5d 0f f1 e4 ; He cackles, maniacally, and lunges towards a red button on the &682d 7b ea fb df 85 eb 87 5e eb 68 89 fb e4 60 fd e2 ; console" &683d 6b 66 83 fb fd e2 6a 68 ef f5 f6 e3 59 8d ad e7 &684d 73 f9 e8 68 e4 b2 83 e7 f4 f9 3b e7 8e 98 60 7e &685d f2 6a df 60 5d 52 fb dd b6 ef 4a 4a 3a de 6f bf &686d 7f db ; string_0c0 &686f fd 7e ea fb 87 6d f8 3a fd e2 6b 66 83 fb eb 67 ; "Too late! The General presses the button! " &687f ee 82 60 3a dd b6 ef 6f f8 db ; string_0c1 &6889 fd 45 fb ca 9e 5b 4f 3a fd e2 6b 66 83 f8 3a ee ; "You shoot at the General! The single bullet tears into his flesh, &6899 55 e7 59 d6 e7 7f 5b 6d 6a 60 65 47 77 60 cc 73 ; throwing him onto the button! " &68a9 e3 f9 64 9b f2 55 fb 77 63 6f 47 3a dd b6 ef 6f &68b9 f8 db ; string_0c2 &68bb 4c ed 59 e4 60 5d 9d 6e 55 fb aa 85 59 dc 60 3a ; "there is a grating noise as the domed roof opens, then a deafening &68cb 7d ae 5c 9b 49 2e ee f9 4c 5a 5d df 78 e1 6b 55 ; roar from the missile silos below! You have failed. . . " &68db fb 9b dc 5f 17 3a e8 85 8c e7 59 8c 99 60 24 f8 &68eb 45 fb 70 f1 59 e1 b0 7f df f6 f6 f6 db ; string_0c3 &68f8 ff fd 72 fc 60 33 f9 fd e2 6a 68 ef f5 ff f9 45 ; ""It's over, Garantz", you say, and pulling back his head, you draw &6908 fb ab f4 f9 3b eb f0 93 55 fb 1e 77 60 69 b9 f9 ; the razor across his throat. The General's body slumps to the &6918 45 fb df 7c 62 3a 7c f5 ea 5f b2 9b ee 60 77 60 ; floor in a pool of blood. You have succeeded in your mission, but &6928 64 9b 6e f6 3a fd e2 6b 66 83 fc 60 91 df 5e ba ; the taste of victory is not sweet. . . " &6938 95 eb 60 47 3a 20 fb 48 5d 97 ea e7 fb 49 96 9e &6948 df f6 45 fb 70 f1 59 ee f0 de de c7 7b 5c 48 45 &6958 5f e8 85 ee 58 f9 d6 5b 3a 88 74 59 49 f1 e4 de &6968 ef 75 5e e4 60 aa 5b b8 c7 ef f6 f6 f6 db ; string_0c4 &6976 ab f4 60 3a ee a9 eb e6 e0 c0 66 f6 db ; "says the shopkeeper. " ; string_0c5 &6983 ff fd 61 e6 aa 62 e8 5e ee a9 eb fc 60 aa 5b e8 ; ""I know my shop's not much, but I don't serve stubble faced &6993 f0 8f f9 d6 5b fd 61 7d 3c ee 66 f1 59 74 f0 dd ; louts"" &69a3 96 59 e1 b2 e0 5c e7 50 ee ff db ; string_0c6 &69ae ff fd cb 4f 91 ea e6 fb f2 71 e7 5c 45 fb 90 e6 ; ""What book would you like, sir? We have a few to choose from"" &69be e0 f9 8c ed f7 f2 59 70 f1 59 5d e1 e0 62 47 8f &69ce 9e ee 59 e1 9b e8 ff db ; string_0c7 &69d6 ff fd e4 fc 63 b3 7c e4 5c f2 59 7d 3c 74 ea ad ; ""I'm afraid we don't stock that one"" &69e6 fb 1c 6f e0 ff db ; string_0c8 &69ec ff fd ea e3 f9 45 fb e8 cd 5b dd 59 1c dd b6 8f ; ""Oh, you must be that butch secret agent! Here take it with my &69fc fb 82 de 67 5b dc e2 6b ef f8 e3 66 59 88 e6 59 ; compliments"" &6a0c e4 5b 16 e8 5e 7a a4 90 e8 6b ef ee ff db ; string_0c9 &6a1a fd 3a ee aa 62 e4 60 f1 66 5e 7b c0 fb 3b 45 fb ; "The snow is very deep and you sink in it up to your neck! " &6a2a ee 65 e6 fb 48 e4 5b d4 fb 47 45 5f 86 ad f8 db ; string_0ca &6a3a fd 3a ee e6 e4 60 7d fb aa 5b bc f1 59 e1 67 89 ; "The skis do not move freely over the snow and you stumble! " &6a4a 5e 33 fb 3a ee aa 62 3b 45 fb 74 95 dd 7f f8 db ; string_0cb &6a5a fd 45 fb c9 e4 f1 59 3a 27 fb 74 7c e4 56 fb 65 ; "You drive the jeep straight into the " &6a6a 47 3a db ; string_0cc &6a6d e2 dc 6d f8 db ; "gate! " ; string_0cd &6a72 d6 a3 df 55 f8 db ; "building! " ; string_0ce &6a78 fd 45 fb e7 78 eb fb 17 3a 07 fb 3b db ; "You leap from the bridge and " ; string_0cf &6a85 cf 95 ae 5b 47 45 5f df 78 64 fb 4a 3a ef 7c ad ; "plummet to your death on the tracks far below! " &6a95 60 e1 dc 5f 24 f8 db ; string_0d0 &6a9c dd 71 e9 de 59 ea e1 e1 fb 3a ee a6 9c 55 fb 6b ; "bounce off the speeding engine! " &6aac e2 65 e0 f8 db ; string_0d1 &6ab1 ee eb 90 5b 45 5f 69 dc 5c 2e fb 4a 5d 0f e7 95 ; "split your head open on a large lump of coal in the cargo wagon! " &6ac1 eb fb 49 7a 83 fb 48 3a de 6a b1 fb f2 dc e2 6f &6ad1 f8 db ; string_0d2 &6ad3 e7 3b 48 3a 6c e8 c4 5f f2 dc e2 6f f9 df 85 99 ; "land in the timber wagon, dislodging a heavy log which rolls on &6ae3 df e2 55 fb 5d 69 dc f1 5e 99 e2 fb 10 9b 93 60 ; top of you! " &6af3 4a 7e eb fb 49 45 f8 db ; string_0d3 &6afb e1 83 e7 fb 92 6f e2 ee 5b 3a 7c f5 ea 5f ca 6a ; "fall amongst the razor sharp chippings! " &6b0b eb fb de 77 a7 55 ee f8 db ; string_0d4 &6b14 ab f4 60 3a dd 6a ef 6b df 66 db ; "says the bartender" ; string_0d5 &6b1f ff fd 69 93 ea f9 d8 e4 6b df f8 e4 5b 1d 7a 74 ; ""Hello, friend! It only costs one Quhut for a room overnight"" &6b2f 60 6f 59 fd ac a5 5b 84 5f 5d 2f fb 33 e9 e4 56 &6b3f ff db ; string_0d6 &6b41 ff fd 45 fb 8d 3c b1 fb d4 1b 60 f2 e4 64 50 fb ; ""You can't go upstairs without paying, sir"" &6b51 d9 f4 55 f9 8c ed ff db ; string_0d7 &6b59 ff fd 64 68 e6 fb 45 f9 8c ed f8 88 e6 59 2f fb ; ""Thank you, sir! Take room four, oh, and have a bottle of ale on &6b69 e1 53 f9 ea e3 f9 3b 70 f1 59 5d 91 ef ef e7 59 ; the house"" &6b79 49 83 59 4a 3a 1a ff db ; string_0d8 &6b81 fd 3a e1 d2 e4 5b 81 8f 65 59 eb 87 f4 60 5d e5 ; "The fruit machine plays a jolly tune and one Quhut falls to the &6b91 ea 93 5e ef 8e 59 3b 6f 59 fd ac a5 5b e1 83 e7 ; floor! " &6ba1 60 47 3a 20 f8 db ; string_0d9 &6ba7 fd 3a 91 e8 dd fb b5 eb 99 7b 60 48 3a 8b 74 68 ; "The bomb explodes in the distance! " &6bb7 de e0 f8 db ; string_0da &6bbb 4f 3a 91 ef 7e 63 49 3a ee e6 61 41 e0 f9 df f2 ; "at the bottom of the ski slope, dwarfed by the mountain which &6bcb 6a e1 e0 5c dd 5e 3a 01 fb 10 67 b2 69 60 65 47 ; reaches into the eastern heavens" &6bdb 3a 28 66 5a 69 dc f1 6b ee db ; string_0db &6be5 fd 4c ed 59 e4 60 5d df 78 e1 6b 55 fb 9b dc 5f ; "There is a deafening roar as a missile streaks overhead! You have &6bf5 dc 60 5d e8 85 8c e7 59 74 67 bb 60 33 69 b9 f8 ; failed. . " &6c05 45 fb 70 f1 59 e1 b0 7f df f6 f6 db ; string_table_one ; string_100 &6c11 11 db ; "north" ; string_101 &6c13 12 db ; "south" ; string_102 &6c15 28 db ; "east" ; string_103 &6c17 29 db ; "west" ; string_104 &6c19 11 28 db ; "northeast" ; string_105 &6c1c 11 29 db ; "northwest" ; string_106 &6c1f 12 28 db ; "southeast" ; string_107 &6c22 12 29 db ; "southwest" ; string_108 &6c25 d4 db ; "up" ; string_109 &6c27 2d db ; "down" ; string_10a &6c29 65 db ; "in" ; string_10b &6c2b 50 db ; "out" ; string_10c &6c2d fb 3b db ; " and " ; string_10d &6c30 fd 4c ed 59 51 fb f1 85 e4 96 59 2b 60 db ; "There are visible exits " ; string_10e &6c3e fd 3a 1d f1 85 e4 96 59 2b fb e4 60 db ; "The only visible exit is " ; string_10f &6c4b fd 45 fb 8d 3c b1 fb db ; "You can't go " ; string_110 &6c53 fd 3a db ; "The " ; string_111 &6c56 fb 44 fb e4 60 db ; " door is " ; string_112 &6c5c 15 df f6 db ; "closed. " ; string_113 &6c60 2e f6 db ; "open. " ; string_114 &6c63 fd 45 fb d9 cd 59 84 5f 5d f2 77 7f f6 f6 db ; "You pause for a while. . " ; string_115 &6c72 fd ea fd e6 db ; "OK" ; string_116 &6c77 fd 45 fb 51 fb a9 e7 df 55 fb db ; "You are holding " ; string_117 &6c82 fd 45 fb 51 fb c1 6a 55 fb db ; "You are wearing " ; string_118 &6c8c aa 64 55 db ; "nothing" ; string_119 &6c90 fd 61 8d 3c e2 f0 73 ee f8 db ; "I can't guess! " ; string_11a &6c9a fd 45 fb ee de 7c eb 59 4f 3a 20 fb 16 45 5f dd ; "You scrape at the floor with your bare hands, leaving them cut and &6caa 51 fb e3 4d ee f9 e7 78 f1 55 fb 4c 63 de f0 5b ; bruised! " &6cba 3b dd d2 e4 82 df f8 db ; string_11b &6cc2 fd 3a d2 74 5e ef 9b f2 89 fb dd 67 bb 60 3b 45 ; "The rusty trowel breaks and you throw it away in disgust. " &6cd2 fb 64 9b 62 e4 5b dc 4b fb 48 df 85 e2 f0 74 f6 &6ce2 db ; string_11c &6ce3 fd 45 fb 86 e0 5c 5d 9b eb 59 47 de 90 e8 dd f6 ; "You need a rope to climb. " &6cf3 db ; string_11d &6cf4 fd 45 fb 8d 3c de 90 e8 dd fb e3 66 e0 f6 db ; "You can't climb here. " ; string_11e &6d03 fd 45 fb 70 f1 59 4c db ; "You have the" ; string_11f &6d0b fd 45 fc ed 59 83 67 b9 5e a9 e7 df 55 fb 3a db ; "You're already holding the " ; string_120 &6d1b fd 45 fb 8d 3c 7d fb 64 6e f8 db ; "You can't do that! " ; string_121 &6d26 fd 45 fb dd 67 bb fb 72 f9 4c 5a 74 92 eb fb 3a ; "You break it, then stamp the fragments out of existence! " &6d36 e1 7c e2 e8 6b ef 60 50 fb 49 b5 e4 74 6b de e0 &6d46 f8 db ; string_122 &6d48 fd 51 fb 45 fb ee f0 67 f7 db ; "Are you sure? " ; string_123 &6d52 fd 45 fb f2 78 5f 3a db ; "You wear the " ; string_124 &6d5a fd 45 fc ed 59 c1 6a 55 fb 72 f8 db ; "You're wearing it! " ; string_125 &6d66 fd 45 fb e1 65 5c db ; "You find " ; string_126 &6d6d fd 45 fb ee de 7c eb 59 4f 3a 9d 71 e9 5c 16 3a ; "You scrape at the ground with the trowel and dig up a gun! " &6d7d ef 9b f2 89 fb 3b 8b e2 fb d4 fb 5d e2 8e f8 db ; string_127 &6d8d 5d db ; "a " ; string_128 &6d8f dc 5a db ; "an " ; string_129 &6d92 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, sorry! " &6da2 64 6e f9 ee 75 ed f4 f8 db ; string_12a &6dab fd 61 7d 3c 22 74 3b 64 6e f8 c3 5e eb b6 ef 55 ; "I don't understand that! Try putting it more simply. " &6dbb fb e4 5b e8 75 59 8c a4 e7 f4 f6 db ; string_12b &6dc7 fd eb 6a df 6f f7 db ; "Pardon? " ; string_12c &6dce fd 72 fc 60 aa 64 55 fb ee a6 de e4 83 f6 db ; "It's nothing special. " ; string_12d &6ddd 11 f9 28 fb 3b 11 28 f6 db ; "north, east and northeast. " ; string_12e &6de6 fd 5d 74 ed 68 e2 59 81 5a c1 6a 55 fb 5d 81 ad ; "A strange man wearing a mackintosh with the collar turned up, a &6df6 65 7e ca fb 16 3a 7a e7 87 5f ef f0 ed 86 5c d4 ; hat and a pair of dark glasses is here! " &6e06 f9 5d e3 4f 3b 5d eb b0 5f 49 30 fb e2 87 ee 82 &6e16 60 e4 60 e3 66 e0 f8 db ; string_12f &6e1e fd 3a 81 5a df 7c f2 60 5d e2 f0 5a 3b ca 9e ef ; "The man draws a gun and shoots you! " &6e2e 60 45 f8 db ; string_130 &6e32 fd 5d ee ac 78 e6 55 fb e8 57 59 ee de b6 ef 7f ; "A squeaking mouse scuttles around you! " &6e42 60 6a 71 e9 5c 45 f8 db ; string_131 &6e4a fd 3a e8 57 59 e4 60 7e ea fb e1 c6 5b 84 5f 45 ; "The mouse is too fast for you! " &6e5a f8 db ; string_132 &6e5c fd 3a e8 57 59 df 6a ef 60 eb c6 5b 45 fb d4 fb ; "The mouse darts past you up the rope, gnaws through it and you &6e6c 3a 9b a6 f9 e2 9f f2 60 64 ed 71 9a fb e4 5b 3b ; plummet to the ground! " &6e7c 45 fb cf 95 ae 5b 47 3a 9d 71 80 f8 db ; string_133 &6e89 fd 3a 9b df 6b 5b e9 e4 dd dd 7f 60 4f 3a a8 e0 ; "The rodent nibbles at the pie, says the mousy equivalent of "I &6e99 f9 ab f4 60 3a e8 57 5e e0 ac e4 f1 83 6b 5b 49 ; think I'm going to be sick", and scurries off somewhere! " &6ea9 ff fd 61 64 65 e6 fb fd e4 fc 63 b1 55 fb 47 dd &6eb9 59 8c ad ff f9 3b ee de f0 ed ed e4 e0 60 ea e1 &6ec9 e1 fb ee a1 e0 cb 66 e0 f8 db ; string_134 &6ed3 fd 3a 83 59 88 ee 6d 60 7c 4c 5f 90 e6 59 70 e8 ; "The ale tastes rather like hamster vomit! " &6ee3 ee 6d 5f f1 a1 72 f8 db ; string_135 &6eeb 97 ea e7 fb 49 dc 7f db ; "pool of ale" ; string_136 &6ef3 34 60 8e cd f0 83 e7 5e 90 e6 59 70 e8 ee 6d 5f ; "looks unusually like hamster vomit! " &6f03 f1 a1 72 f8 db ; string_137 &6f08 6f 59 6a ae 5c dd 4d 72 db ; "one armed bandit" ; string_138 &6f11 b2 de c0 ef 60 7a 65 60 49 0e df 6b a1 65 6e 58 ; "accepts coins of small denomination. " &6f21 f6 db ; string_139 &6f23 91 e8 dd db ; "bomb" ; string_13a &6f27 34 60 df 68 e2 66 57 f8 db ; "looks dangerous! " ; string_13b &6f30 e4 60 83 e4 56 f8 98 5b ed e4 5c 49 72 f8 db ; "is alight! Get rid of it! " ; string_13c &6f3f e7 78 4c 5f dd 71 e9 5c 91 ea e6 db ; "leather bound book" ; string_13d &6f4b e4 60 de 83 7f 5c ff fd 3a fd ef f2 89 f1 59 fd ; "is called "The Twelve Apostles". " &6f5b dc 97 74 e7 73 ff f6 db ; string_13e &6f63 91 ef ef 7f db ; "bottle" ; string_13f &6f68 e4 60 e1 f0 93 fb 49 dc 7f f6 db ; "is full of ale. " ; string_140 &6f73 e4 60 e1 f0 93 fb 49 a6 ef 9b e7 f8 db ; "is full of petrol! " ; string_141 &6f80 e4 60 a2 eb af f6 db ; "is empty. " ; string_142 &6f87 d6 e7 7f ef db ; "bullet" ; string_143 &6f8c e4 60 e1 c6 e3 58 e0 5c 17 97 e7 85 69 5c 8c e7 ; "is fashioned from polished silver! " &6f9c f1 66 f8 db ; string_144 &6fa0 de 75 eb 82 db ; "corpse" ; string_145 &6fa5 e4 60 df 67 ee 82 5c 48 5d e8 a3 72 6a 5e 8e e4 ; "is dressed in a military uniform. " &6fb5 3e f6 db ; string_146 &6fb8 e4 60 ee eb 7c f2 7f 5c 48 3a 36 f6 db ; "is sprawled in the road. " ; string_147 &6fc5 52 fb 82 4f de 33 db ; "red seat cover" ; string_148 &6fcc e4 60 7c e2 98 df f8 db ; "is ragged! " ; string_149 &6fd4 dd 7c ee 60 e1 7c ae db ; "brass frame" ; string_14a &6fdc a9 e7 df 60 3a 84 93 ce 55 fb e3 f4 e8 5a e9 95 ; "holds the following hymn numbers: ten, fourteen and fifty six. " &6fec dd 66 ee fa ef 6b f9 e1 53 6d e0 5a 3b e1 e4 e1 &6ffc ef 5e 8c f3 f6 db ; string_14b &7002 70 60 3a e3 f4 e8 5a e9 95 dd 66 60 b4 56 e0 6b ; "has the hymn numbers eighteen, nine and seventy. " &7012 f9 e9 65 59 3b 82 f1 6b af f6 db ; string_14c &701d e2 8e db ; "gun" ; string_14d &7020 8d 5a dd 59 99 dc 7b 5c 16 5d ee 55 e7 59 d6 e7 ; "can be loaded with a single bullet. " &7030 7f ef f6 db ; string_14e &7034 e4 60 99 dc 7b df f6 db ; "is loaded. " ; string_14f &703c dd b6 8f 66 fc 60 e3 9e e6 db ; "butcher's hook" ; string_150 &7046 e4 60 81 df 59 49 74 dc 65 38 fb ee 6d 89 fb 3b ; "is made of stainless steel and has a loop at one end. " &7056 70 60 5d 99 ea eb fb 4f 6f 59 6b df f6 db ; string_151 &7064 fd e4 a4 e4 db ; "Impi" ; string_152 &7069 e4 60 5d 7a 48 49 0e df 6b a1 65 6e 58 f6 db ; "is a coin of small denomination. " ; string_153 &7078 7f ef ef 66 db ; "letter" ; string_154 &707d e4 60 f2 ed 72 6d 5a 4a 5d ee de 7c a7 5e a8 e0 ; "is written on a scrappy piece of paper. " &708d de 59 49 d9 eb 66 f6 db ; string_155 &7095 e8 6e 8f db ; "match" ; string_156 &7099 70 60 5d eb 65 e6 f9 ee f0 e7 eb a5 5f 69 b9 f6 ; "has a pink, sulphur head. " &70a9 db ; string_157 &70aa e4 60 5d 8f 6a 52 f9 d6 ed e9 5b 50 fb 74 95 eb ; "is a charred, burnt out stump. " &70ba f6 db ; string_158 &70bc bd ed ed 75 db ; "mirror" ; string_159 &70c1 ee a9 f2 60 45 fb 47 dd 59 8e ee 70 f1 6b f6 db ; "shows you to be unshaven. " ; string_15a &70d1 ee a9 f2 60 45 fb 47 dd 59 de e7 78 5a ee 70 f1 ; "shows you to be clean shaven. " &70e1 6b f6 db ; string_15b &70e4 eb f0 df df e7 59 49 a6 ef 9b e7 db ; "puddle of petrol" ; string_15c &70f0 e4 60 77 9a e7 5e e1 87 e8 81 dd 7f f8 db ; "is highly flammable! " ; string_15d &70fe 8f 6a 52 fb eb a9 7e e2 7c c5 db ; "charred photograph" ; string_15e &7109 e4 60 d6 ed e9 5b 6a 71 e9 5c 3a 9c e2 73 f9 d6 ; "is burnt around the edges, but the face staring at you is &7119 5b 3a e1 b2 59 74 6a 55 fb 4f 45 fb e4 60 8e bd ; unmistakably yours! " &7129 74 bb dc 96 5e 45 ed ee f8 db ; string_15f &7133 eb 75 e6 fb a8 e0 db ; "pork pie" ; string_160 &713a e4 60 ea e7 df f9 74 83 59 3b e8 71 e7 df f4 f6 ; "is old, stale and mouldy. " &714a db ; string_161 &714b ef 48 49 20 fb 97 e7 85 e3 db ; "tin of floor polish" ; string_162 &7155 c4 6a 60 3a 7f e2 6b 5c ff fd f2 dc f3 ff f6 db ; "bears the legend "Wax". " ; string_163 &7165 fd ac a5 ef db ; "Quhut" ; string_164 &716a e4 60 5d 7a 48 49 0f df 6b a1 65 6e 58 f6 db ; "is a coin of large denomination. " ; string_165 &7179 7c f5 75 db ; "razor" ; string_166 &717d e4 60 3a af eb 59 fd b8 e0 6b e0 5e fd 7e df 5c ; "is the type Sweeney Todd would have used! " &718d f2 71 e7 5c 70 f1 59 f0 82 df f8 db ; string_167 &7199 88 eb 59 67 de 75 df 66 db ; "tape recorder" ; string_168 &71a2 70 60 5d ee 55 e7 59 dd b6 ef 4a e8 6a e6 e0 5c ; "has a single button marked "Play". " &71b2 ff fd eb 87 f4 ff f6 db ; string_169 &71ba e4 60 dc dd 50 fb 47 b5 eb 99 7b f8 db ; "is about to explode! " ; string_16a &71c7 9b a6 db ; "rope" ; string_16b &71ca e4 60 6e 88 de 69 5c 47 5d dd 89 e7 f6 db ; "is attached to a bell. " ; string_16c &71d8 e4 60 23 3b de 71 e7 5c dd 59 f0 82 e1 f0 e7 f8 ; "is long and could be useful! " &71e8 db ; string_16d &71e9 e4 60 6c e0 5c 47 dc db ; "is tied to a" ; string_16e &71f1 ee de 67 f2 c9 e4 f1 66 db ; "screwdriver" ; string_16f &71fa 70 60 5d cc 4f 69 b9 f6 db ; "has a flat head. " ; string_170 &7203 eb b0 5f 49 ee e6 85 db ; "pair of skis" ; string_171 &720b 51 fb 23 3b ba 6b 7b 5f 16 de f0 ed 79 df f9 97 ; "are long and slender with curved, pointed tips. " &721b 65 6d 5c 6c eb ee f6 db ; string_172 &7223 51 fb f2 89 e7 fb f2 dc f3 e0 5c 3b 67 b9 5e 84 ; "are well waxed and ready for use. " &7233 5f f0 82 f6 db ; string_173 &7238 ee eb 68 e9 66 db ; "spanner" ; string_174 &723e e4 60 f1 66 5e 69 dc f1 f4 f8 db ; "is very heavy! " ; string_175 &7249 ee f0 72 db ; "suit" ; string_176 &724d e4 60 f2 ea 79 5a 17 dc 5a b5 eb 6b 8c f1 59 de ; "is woven from an expensive cloth, you slick devil, you! " &725d 99 64 f9 45 fb ee 90 ad fb 7b f1 a3 f9 45 f8 db ; string_177 &726d af 67 db ; "tyre" ; string_178 &7270 e4 60 81 df 59 49 d2 dd dd 66 f6 db ; "is made of rubber. " ; string_179 &727c ef 9b f2 89 db ; "trowel" ; string_17a &7281 e4 60 83 bc ee 5b ed cd 6d 5c 64 ed 71 9a fb 3b ; "is almost rusted through and its wooden handle is rotten. " &7291 72 60 42 e0 5a e3 4d e7 59 e4 60 9b ef ef 6b f6 &72a1 db ; string_17b &72a2 8e e4 3e db ; "uniform" ; string_17c &72a6 c4 6a 60 3a 65 8c e2 e9 e4 5d 49 5d fd e2 6a 68 ; "bears the insignia of a Garantz soldier. " &72b6 ef f5 fb bf e7 8b 66 f6 db ; string_17d &72bf fd 4c ed 59 e4 60 5d 77 ee 60 dc 60 3a 88 eb 59 ; "There is a hiss as the tape begins to play. . . " &72cf c4 e2 65 60 47 eb 87 f4 f6 f6 f6 db ; string_17e &72db dc e2 6b 5b fd e3 68 ee 6f f9 64 e4 60 e4 60 fd ; "agent Hanson, this is Control. General Garantz has gone too far &72eb de 6f ef 9b e7 f6 e2 6b 66 83 fb fd e2 6a 68 ef ; this time! He's threatening to nuke the lot of us if we don't &72fb f5 fb 70 60 e2 6f 59 7e ea fb e1 dc 5f 64 e4 60 ; comply with certain demands he's making! You've gotta stop him! &730b 6c ae f8 69 fc 60 64 67 6e 6b 55 fb 47 e9 f0 e6 ; Assassinate him, Rick, it's our only chance! " &731b 59 3a 99 5b 49 f0 60 e4 e1 fb f2 59 7d 3c 7a a4 &732b e7 5e 16 de 66 88 48 7b e8 4d 60 69 fc 60 81 e6 &733b 55 f8 45 fc f1 59 b1 ef ef 5d 74 ea eb fb 77 e8 &734b f8 c6 ab ee ee 65 6e 59 77 e8 f9 fd ed e4 ad f9 &735b 72 fc 60 53 fb 1d 8f 68 de e0 f8 db ; string_17f &7367 74 dc 5e 3a e9 e4 56 fb 4f 3a 88 f1 66 5a 48 3a ; "stay the night at the tavern in the next village and you'll &7377 86 f3 5b 04 fb 3b 45 fc 93 fb 67 de b4 f1 59 e1 ; receive further instructions. Good luck! Hey Rick, I nearly &7387 f0 ed 4c 5f 65 74 d2 de ef 58 ee f6 e2 9e 5c e7 ; forgot, this tape will self destruct almost immediately! " &7397 f0 ad f8 69 5e fd ed e4 ad f9 fd 61 86 6a e7 5e &73a7 e1 75 b1 ef f9 64 e4 60 88 eb 59 f2 e4 93 fb 82 &73b7 e7 e1 fb df 73 c3 f0 de 5b 83 bc ee 5b e4 e8 ae &73c7 8b dc 6d e7 f4 f8 db ; string_180 &73ce fd dd fb 5d 5a e2 f8 3a 67 de 75 7b 5f b5 eb 99 ; "B a n g! The recorder explodes! " &73de df 73 f8 db ; string_181 &73e2 eb 69 f2 f8 1c f2 dc 60 5d 15 fb 6f e0 f8 db ; "phew! That was a close one! " ; string_182 &73f1 fd 3a 81 5a 69 6a 60 3a 88 eb 59 3b ca 9e ef 60 ; "The man hears the tape and shoots you! " &7401 45 f8 db ; string_183 &7404 fd 45 fb a5 ed e7 fb 3a 9b eb 59 d4 fb 3a 19 f6 ; "You hurl the rope up the cliff. " &7414 db ; string_184 &7415 e4 5b e3 72 60 3a e1 b2 59 16 5d ee 81 ad fb 3b ; "it hits the face with a smack and falls back to earth. " &7425 e1 83 e7 60 1e 47 e0 6a 64 f6 db ; string_185 &7430 3a e3 9e e6 fb 99 df 98 60 48 5d de 67 f1 e4 de ; "the hook lodges in a crevice above the ledge and the rope hangs &7440 59 25 fb 3a 0c 3b 3a 9b eb 59 e3 68 e2 60 2d f9 ; down, invitingly! " &7450 65 f1 72 55 e7 f4 f8 db ; string_186 &7458 fd 45 fb 8b f1 59 65 47 3a ed e4 f1 66 f9 dd b6 ; "You dive into the river, but" &7468 db ; string_187 &7469 fb 3a de f0 ed 67 e9 5b e4 60 7e ea fb 74 ed 6f ; " the current is too strong. Your head ducks beneath the surface &7479 e2 f6 45 5f 69 dc 5c d0 ad 60 dd 6b 78 64 fb 3a ; for the third time and everything goes black! " &7489 ee f0 ed e1 b2 59 84 5f 3a 64 be 5c 6c e8 59 3b &7499 c8 66 f4 64 55 fb b1 e0 60 dd 87 ad f8 db ; string_188 &74a7 fd e0 79 5a 16 3a d6 ea f4 68 5b af 67 db ; "Even with the buoyant tyre" ; string_189 &74b5 fd 3a d6 ea f4 68 5b af ed 59 e6 e0 c0 60 45 fb ; "The buoyant tyre keeps you afloat and you cross the calm stretch &74c5 b3 99 4f 3b 45 fb de 9b ee 60 3a de 83 63 74 67 ; of water. As you scramble to the west bank, you lose your grip on &74d5 ef 8f fb 49 1f f6 dc 60 45 fb ee de 7c e8 96 59 ; the tyre and it is carried downstream. " &74e5 47 3a 29 fb dd 68 e6 f9 45 fb 99 ee 59 45 5f 9d &74f5 e4 eb fb 4a 3a af ed 59 3b e4 5b e4 60 de 6a ed &7505 e4 e0 5c 2d 74 67 92 f6 db ; string_18a &750e fd 45 fb de 90 e8 dd fb 3a 9b a6 f6 dc 60 45 fb ; "You climb the rope. As you pull yourself up to the ledge, the hook &751e eb f0 93 fb 45 ed 82 e7 e1 fb d4 fb 47 3a 7f df ; dislodges and the rope falls out of sight. " &752e 98 f9 3a e3 9e e6 fb df 85 99 df 98 60 3b 3a 9b &753e eb 59 e1 83 e7 60 50 fb 49 8c 56 f6 db ; string_18b &754b fd 45 fb e7 78 eb fb 17 3a eb 67 de e4 a8 de 59 ; "You leap from the precipice and land with a thud on the floor far &755b 3b e7 3b 16 5d 64 f0 5c 4a 3a 20 fb e1 dc 5f 24 ; below, decorating it with your entrails! " &756b f9 7b de 75 6e 55 fb e4 5b 16 45 5f 6b ef 43 ee &757b f8 db ; string_18c &757d fd 4c ed 59 e4 60 5d 77 ee 60 17 25 fb 45 f9 3b ; "There is a hiss from above you, and the room begins to fill with a &758d 3a 2f fb c4 e2 65 60 47 e1 e4 93 fb 16 5d 96 f0 ; blue smoke! The acrid gas sears your lungs and you collapse to the &759d 59 a0 ea e6 e0 f8 3a b2 ed e4 5c e2 dc 60 82 6a ; floor! " &75ad 60 45 5f e7 8e e2 60 3b 45 fb 7a e7 87 eb ee 59 &75bd 47 3a 20 f8 db ; string_18d &75c2 fd 3a 91 e8 dd fb b5 eb 99 7b 60 48 5d dd 83 e7 ; "The bomb explodes in a ball of flame, leaving your blackened &75d2 fb 49 e1 87 ae f9 e7 78 f1 55 fb 45 5f dd 87 ad ; remains scattered all around. " &75e2 6b e0 5c 67 81 65 60 ee de 6e 6d 52 fb 83 e7 fb &75f2 6a 71 80 f6 db ; string_18e &75f7 fd 96 78 9a f8 df 85 e2 f0 74 55 f8 db ; "Bleagh! Disgusting! " ; string_18f &7604 fd 3a 7f ef 6d 5f ab f4 ee fa fd a5 e6 f0 e5 fb ; "The letter says: Hukuj jvy avilav jvyp wo jo jvy booskvon cpz cks &7614 e5 f1 5e dc f1 e4 87 f1 fb e5 f1 f4 eb fb f2 ea ; xol Jvy Jgyrhy Cnokjryk. " &7624 fb e5 ea fb e5 f1 5e 91 ea ee e6 f1 4a de eb f5 ; &7634 fb ad 60 f3 ea e7 fb fd e5 f1 5e fd e5 e2 f4 ed ; ["Visit the church then go to the bookshop and ask for the Twelve &7644 e3 5e fd de aa e6 e5 ed f4 e6 f6 db ; Apostles"] ; string_190 &7650 fd de 66 88 48 7f ef ef 66 60 51 fb 22 e7 65 9c ; "Certain letters are underlined, forming the message: Jgmwxh rdg &7660 f9 3e 55 fb 3a e8 73 ab 98 fa fd e5 e2 e8 f2 f3 ; fktydwqsg zcgs mwqt hgsrcxm. Yggr k fgzzwo kegxr kr rdg Cig &7670 e3 fb ed df e2 fb e1 e6 af df f2 ec ee e2 fb f5 ; Sdtcxg. " &7680 de e2 60 e8 f2 ec 5b e3 e2 ee ed de f3 e8 f6 f4 ; &7690 e2 e2 5f e6 fb e1 e2 f5 f5 f2 ea fb e6 e0 e2 f3 ; ["Beyond the farmhouse lies your destiny. Meet a fellow agent at &76a0 5f e6 5f ed df e2 fb fd de d3 fb fd ee df ef de ; the Ice Shrine"] &76b0 f3 e2 f6 db ; string_191 &76b4 fd 72 fc 60 5d f2 67 ad f8 db ; "It's a wreck! " ; string_192 &76be fd 45 fb eb f0 93 fb 3a 9b eb 59 3b 3a dd 89 e7 ; "You pull the rope and the bell emits a loud clang! " &76ce fb a2 72 60 5d e7 71 5c de e7 68 e2 f8 db ; string_193 &76dc fd 45 fb de f0 5b 3a 9b eb 59 3b 5d 23 a8 e0 de ; "You cut the rope and a long piece lands at your feet. " &76ec 59 e7 4d 60 4f 45 5f e1 c7 ef f6 db ; string_194 &76f8 fd 45 fb de f0 5b 3a 9b eb 59 65 47 ee 81 e7 7f ; "You cut the rope into smaller and smaller pieces and throw them &7708 5f 3b ee 81 e7 7f 5f a8 e0 de e0 60 3b 64 9b 62 ; away! " &7718 4c 63 dc 4b f8 db ; string_195 &771e fd aa fb 4b f9 6a ee 6f e4 74 f8 db ; "No way, arsonist! " ; string_196 &772a fd 45 fb 81 e6 59 5d 91 e8 dd fb 17 3a 91 ef ef ; "You make a bomb from the bottle of petrol and the red rag. " &773a e7 59 49 a6 ef 9b e7 fb 3b 3a 52 fb 7c e2 f6 db ; string_197 &774a fd 45 fb df 85 e8 68 ef e7 59 3a 91 e8 dd f9 e7 ; "You dismantle the bomb, leaving the parts on the floor. " &775a 78 f1 55 fb 3a eb 6a ef 60 4a 3a 20 f6 db ; string_198 &7768 fd 3a 81 48 7a e8 e8 4d 60 64 e4 60 94 b7 7c 63 ; "The main commands this program understands are: " &7778 22 74 4d 60 51 fa db ; string_199 &777f fd 45 fb f2 9c e2 59 3a ee de 67 f2 c9 e4 79 5f ; "You wedge the screwdriver into a gap between the door and its &778f 65 47 5d e2 dc eb fb c4 ef c1 e0 5a 3a 44 fb 3b ; frame and the door slides open! " &779f 72 60 e1 7c e8 59 3b 3a 44 fb ee 90 7b 60 2e f8 &77af db ; string_19a &77b0 fd 3a 44 fb ee 90 7b 60 2e f8 db ; "The door slides open! " ; string_19b &77bb fd aa 64 55 fb 70 a7 6b ee f6 db ; "Nothing happens. " ; string_19c &77c6 fd e4 5b ab f4 ee fa ff fd e2 83 9e eb ff f6 db ; "It says: "Galoop". " ; string_19d &77d6 fd 45 fb 51 fb df 78 df f8 db ; "You are dead! " ; string_19e &77e0 fd 45 fb 8d 3c 22 74 3b 72 f8 db ; "You can't understand it! " ; string_19f &77eb fd f2 89 e7 fb df 6f e0 f8 45 fb 70 f1 59 7a a4 ; "Well done! You have completed the game! " &77fb 7f 6d 5c 3a e2 92 e0 f8 db ; string_1a0 &7804 fd eb 67 ee ee fe fd 67 ef f0 ed e9 fe 47 eb 87 ; "Press Return to play" &7814 f4 db ; string_1a1 &7816 fd f2 89 7a e8 59 47 ff fd c6 ab ee ee 65 ff fb ; "Welcome to "Assassin" by Rob and Mike O'Leary. Programmed by Rob &7826 dd 5e fd 9b dd fb 3b fd bd e6 59 fd ea fc fd 7f ; O'Leary" &7836 6a f4 f6 94 b7 7c e8 ae 5c dd 5e fd 9b dd fb fd &7846 ea fc fd 7f 6a f4 db ; string_1a2 &784d fd 5d 7f ef 6d 5f e4 60 eb cd 69 5c 22 fb 3a 44 ; "A letter is pushed under the door! " &785d f8 db ; string_1a3 &785f fd 72 fc 60 99 ad 9c f8 db ; "It's locked! " ; string_1a4 &7868 fd e4 5b 4e 60 64 ed 71 9a fb 45 5f e1 55 66 ee ; "It runs through your fingers! " &7878 f8 db ; string_1a5 &787a fd 72 fc 60 e4 e8 bc f1 dc dd 7f f8 db ; "It's immovable! " ; string_1a6 &7887 fb db ; " " ; string_1a7 &7889 f8 db ; "! " ; string_1a8 &788b fb db ; " " ; fragments &788d 45 4e 54 52 41 4e 43 45 20 40 ; &00 : "ENTRANCE @" &7897 4d 4f 55 4e 54 41 49 4e 40 ; &01 : "MOUNTAIN@" &78a0 43 4f 52 52 49 44 4f 52 40 ; &02 : "CORRIDOR@" &78a9 54 45 52 52 41 43 45 40 ; &03 : "TERRACE@" &78b1 56 49 4c 4c 41 47 45 40 ; &04 : "VILLAGE@" &78b9 42 45 48 49 4e 44 20 40 ; &05 : "BEHIND @" &78c1 4e 41 52 52 4f 57 20 40 ; &06 : "NARROW @" &78c9 42 52 49 44 47 45 40 ; &07 : "BRIDGE@" &78d0 41 4c 43 4f 56 45 40 ; &08 : "ALCOVE@" &78d7 53 54 52 45 45 54 40 ; &09 : "STREET@" &78de 43 48 55 52 43 48 40 ; &0a : "CHURCH@" &78e5 41 49 53 4c 45 20 40 ; &0b : "AISLE @" &78ec 4c 45 44 47 45 20 40 ; &0c : "LEDGE @" &78f3 46 4c 49 47 48 54 40 ; &0d : "FLIGHT@" &78fa 53 4d 41 4c 4c 20 40 ; &0e : "SMALL @" &7901 4c 41 52 47 45 20 40 ; &0f : "LARGE @" &7908 57 48 49 43 48 20 40 ; &10 : "WHICH @" &790f 4e 4f 52 54 48 40 ; &11 : "NORTH@" &7915 53 4f 55 54 48 40 ; &12 : "SOUTH@" &791b 47 55 41 52 44 40 ; &13 : "GUARD@" &7921 54 52 41 49 4e 40 ; &14 : "TRAIN@" &7927 43 4c 4f 53 45 40 ; &15 : "CLOSE@" &792d 57 49 54 48 20 40 ; &16 : "WITH @" &7933 46 52 4f 4d 20 40 ; &17 : "FROM @" &7939 46 49 45 4c 44 40 ; &18 : "FIELD@" &793f 43 4c 49 46 46 40 ; &19 : "CLIFF@" &7945 48 4f 55 53 45 40 ; &1a : "HOUSE@" &794b 53 54 41 49 52 40 ; &1b : "STAIR@" &7951 54 48 41 54 20 40 ; &1c : "THAT @" &7957 4f 4e 4c 59 20 40 ; &1d : "ONLY @" &795d 42 41 43 4b 20 40 ; &1e : "BACK @" &7963 57 41 54 45 52 40 ; &1f : "WATER@" &7969 46 4c 4f 4f 52 40 ; &20 : "FLOOR@" &796f 41 4c 4c 45 59 40 ; &21 : "ALLEY@" &7975 55 4e 44 45 52 40 ; &22 : "UNDER@" &797b 4c 4f 4e 47 20 40 ; &23 : "LONG @" &7981 42 45 4c 4f 57 40 ; &24 : "BELOW@" &7987 41 42 4f 56 45 40 ; &25 : "ABOVE@" &798d 53 48 4f 52 54 40 ; &26 : "SHORT@" &7993 4a 45 45 50 40 ; &27 : "JEEP@" &7998 45 41 53 54 40 ; &28 : "EAST@" &799d 57 45 53 54 40 ; &29 : "WEST@" &79a2 57 41 4c 4c 40 ; &2a : "WALL@" &79a7 45 58 49 54 40 ; &2b : "EXIT@" &79ac 57 49 4e 44 40 ; &2c : "WIND@" &79b1 44 4f 57 4e 40 ; &2d : "DOWN@" &79b6 4f 50 45 4e 40 ; &2e : "OPEN@" &79bb 52 4f 4f 4d 40 ; &2f : "ROOM@" &79c0 44 41 52 4b 40 ; &30 : "DARK@" &79c5 50 41 54 48 40 ; &31 : "PATH@" &79ca 53 49 44 45 40 ; &32 : "SIDE@" &79cf 4f 56 45 52 40 ; &33 : "OVER@" &79d4 4c 4f 4f 4b 40 ; &34 : "LOOK@" &79d9 46 4f 4f 54 40 ; &35 : "FOOT@" &79de 52 4f 41 44 40 ; &36 : "ROAD@" &79e3 53 54 45 50 40 ; &37 : "STEP@" &79e8 4c 45 53 53 40 ; &38 : "LESS@" &79ed 4c 45 41 44 40 ; &39 : "LEAD@" &79f2 54 48 45 20 40 ; &3a : "THE @" &79f7 41 4e 44 20 40 ; &3b : "AND @" &79fc 4e 27 54 20 40 ; &3c : "N'T @" &7a01 57 49 44 45 40 ; &3d : "WIDE@" &7a06 46 4f 52 4d 40 ; &3e : "FORM@" &7a0b 42 41 53 45 40 ; &3f : "BASE@" &7a10 54 52 45 45 40 ; &40 : "TREE@" &7a15 53 4c 4f 50 40 ; &41 : "SLOP@" &7a1a 57 4f 4f 44 40 ; &42 : "WOOD@" &7a1f 52 41 49 4c 40 ; &43 : "RAIL@" &7a24 44 4f 4f 52 40 ; &44 : "DOOR@" &7a29 59 4f 55 40 ; &45 : "YOU@" &7a2d 53 45 45 40 ; &46 : "SEE@" &7a31 54 4f 20 40 ; &47 : "TO @" &7a35 49 4e 20 40 ; &48 : "IN @" &7a39 4f 46 20 40 ; &49 : "OF @" &7a3d 4f 4e 20 40 ; &4a : "ON @" &7a41 57 41 59 40 ; &4b : "WAY@" &7a45 54 48 45 40 ; &4c : "THE@" &7a49 41 4e 44 40 ; &4d : "AND@" &7a4d 52 55 4e 40 ; &4e : "RUN@" &7a51 41 54 20 40 ; &4f : "AT @" &7a55 4f 55 54 40 ; &50 : "OUT@" &7a59 41 52 45 40 ; &51 : "ARE@" &7a5d 52 45 44 40 ; &52 : "RED@" &7a61 4f 55 52 40 ; &53 : "OUR@" &7a65 49 4f 52 40 ; &54 : "IOR@" &7a69 49 4e 47 40 ; &55 : "ING@" &7a6d 47 48 54 40 ; &56 : "GHT@" &7a71 4f 55 53 40 ; &57 : "OUS@" &7a75 49 4f 4e 40 ; &58 : "ION@" &7a79 45 20 40 ; &59 : "E @" &7a7c 4e 20 40 ; &5a : "N @" &7a7f 54 20 40 ; &5b : "T @" &7a82 44 20 40 ; &5c : "D @" &7a85 41 20 40 ; &5d : "A @" &7a88 59 20 40 ; &5e : "Y @" &7a8b 52 20 40 ; &5f : "R @" &7a8e 53 20 40 ; &60 : "S @" &7a91 49 20 40 ; &61 : "I @" &7a94 57 20 40 ; &62 : "W @" &7a97 4d 20 40 ; &63 : "M @" &7a9a 54 48 40 ; &64 : "TH@" &7a9d 49 4e 40 ; &65 : "IN@" &7aa0 45 52 40 ; &66 : "ER@" &7aa3 52 45 40 ; &67 : "RE@" &7aa6 41 4e 40 ; &68 : "AN@" &7aa9 48 45 40 ; &69 : "HE@" &7aac 41 52 40 ; &6a : "AR@" &7aaf 45 4e 40 ; &6b : "EN@" &7ab2 54 49 40 ; &6c : "TI@" &7ab5 54 45 40 ; &6d : "TE@" &7ab8 41 54 40 ; &6e : "AT@" &7abb 4f 4e 40 ; &6f : "ON@" &7abe 48 41 40 ; &70 : "HA@" &7ac1 4f 55 40 ; &71 : "OU@" &7ac4 49 54 40 ; &72 : "IT@" &7ac7 45 53 40 ; &73 : "ES@" &7aca 53 54 40 ; &74 : "ST@" &7acd 4f 52 40 ; &75 : "OR@" &7ad0 4e 54 40 ; &76 : "NT@" &7ad3 48 49 40 ; &77 : "HI@" &7ad6 45 41 40 ; &78 : "EA@" &7ad9 56 45 40 ; &79 : "VE@" &7adc 43 4f 40 ; &7a : "CO@" &7adf 44 45 40 ; &7b : "DE@" &7ae2 52 41 40 ; &7c : "RA@" &7ae5 44 4f 40 ; &7d : "DO@" &7ae8 54 4f 40 ; &7e : "TO@" &7aeb 4c 45 40 ; &7f : "LE@" &7aee 4e 44 40 ; &80 : "ND@" &7af1 4d 41 40 ; &81 : "MA@" &7af4 53 45 40 ; &82 : "SE@" &7af7 41 4c 40 ; &83 : "AL@" &7afa 46 4f 40 ; &84 : "FO@" &7afd 49 53 40 ; &85 : "IS@" &7b00 4e 45 40 ; &86 : "NE@" &7b03 4c 41 40 ; &87 : "LA@" &7b06 54 41 40 ; &88 : "TA@" &7b09 45 4c 40 ; &89 : "EL@" &7b0c 49 53 40 ; &8a : "IS@" &7b0f 44 49 40 ; &8b : "DI@" &7b12 53 49 40 ; &8c : "SI@" &7b15 43 41 40 ; &8d : "CA@" &7b18 55 4e 40 ; &8e : "UN@" &7b1b 43 48 40 ; &8f : "CH@" &7b1e 4c 49 40 ; &90 : "LI@" &7b21 42 4f 40 ; &91 : "BO@" &7b24 41 4d 40 ; &92 : "AM@" &7b27 4c 4c 40 ; &93 : "LL@" &7b2a 50 52 40 ; &94 : "PR@" &7b2d 55 4d 40 ; &95 : "UM@" &7b30 42 4c 40 ; &96 : "BL@" &7b33 50 4f 40 ; &97 : "PO@" &7b36 47 45 40 ; &98 : "GE@" &7b39 4c 4f 40 ; &99 : "LO@" &7b3c 47 48 40 ; &9a : "GH@" &7b3f 52 4f 40 ; &9b : "RO@" &7b42 45 44 40 ; &9c : "ED@" &7b45 47 52 40 ; &9d : "GR@" &7b48 4f 4f 40 ; &9e : "OO@" &7b4b 4e 41 40 ; &9f : "NA@" &7b4e 53 4d 40 ; &a0 : "SM@" &7b51 4f 4d 40 ; &a1 : "OM@" &7b54 45 4d 40 ; &a2 : "EM@" &7b57 49 4c 40 ; &a3 : "IL@" &7b5a 4d 50 40 ; &a4 : "MP@" &7b5d 48 55 40 ; &a5 : "HU@" &7b60 50 45 40 ; &a6 : "PE@" &7b63 50 50 40 ; &a7 : "PP@" &7b66 50 49 40 ; &a8 : "PI@" &7b69 48 4f 40 ; &a9 : "HO@" &7b6c 4e 4f 40 ; &aa : "NO@" &7b6f 53 41 40 ; &ab : "SA@" &7b72 51 55 40 ; &ac : "QU@" &7b75 43 4b 40 ; &ad : "CK@" &7b78 4d 45 40 ; &ae : "ME@" &7b7b 54 59 40 ; &af : "TY@" &7b7e 41 49 40 ; &b0 : "AI@" &7b81 47 4f 40 ; &b1 : "GO@" &7b84 41 43 40 ; &b2 : "AC@" &7b87 41 46 40 ; &b3 : "AF@" &7b8a 45 49 40 ; &b4 : "EI@" &7b8d 45 58 40 ; &b5 : "EX@" &7b90 55 54 40 ; &b6 : "UT@" &7b93 4f 47 40 ; &b7 : "OG@" &7b96 53 57 40 ; &b8 : "SW@" &7b99 41 44 40 ; &b9 : "AD@" &7b9c 53 4c 40 ; &ba : "SL@" &7b9f 41 4b 40 ; &bb : "AK@" &7ba2 4d 4f 40 ; &bc : "MO@" &7ba5 4d 49 40 ; &bd : "MI@" &7ba8 49 52 40 ; &be : "IR@" &7bab 53 4f 40 ; &bf : "SO@" &7bae 45 50 40 ; &c0 : "EP@" &7bb1 57 45 40 ; &c1 : "WE@" &7bb4 47 49 40 ; &c2 : "GI@" &7bb7 54 52 40 ; &c3 : "TR@" &7bba 42 45 40 ; &c4 : "BE@" &7bbd 50 48 40 ; &c5 : "PH@" &7bc0 41 53 40 ; &c6 : "AS@" &7bc3 45 45 40 ; &c7 : "EE@" &7bc6 45 56 40 ; &c8 : "EV@" &7bc9 44 52 40 ; &c9 : "DR@" &7bcc 53 48 40 ; &ca : "SH@" &7bcf 57 48 40 ; &cb : "WH@" &7bd2 46 4c 40 ; &cc : "FL@" &7bd5 55 53 40 ; &cd : "US@" &7bd8 4f 57 40 ; &ce : "OW@" &7bdb 50 4c 40 ; &cf : "PL@" &7bde 44 55 40 ; &d0 : "DU@" &7be1 44 41 40 ; &d1 : "DA@" &7be4 52 55 40 ; &d2 : "RU@" &7be7 49 47 40 ; &d3 : "IG@" &7bea 55 50 40 ; &d4 : "UP@" &7bed 42 49 40 ; &d5 : "BI@" &7bf0 42 55 40 ; &d6 : "BU@" &7bf3 42 52 40 ; &d7 : "BR@" &7bf6 46 52 40 ; &d8 : "FR@" &7bf9 50 41 40 ; &d9 : "PA@" &7bfc 41 59 40 ; &da : "AY@" &7bff 40 ; &db : "@"