Myorem (Saga of a Spy - The Rick Hanson Trilogy, Part 3) disassembly ==================================================================== Myorem is a text adventure published by Robico Software for the BBC Micro in 1986. It was written by Mike O'Leary and Robert O'Leary, and is the third part of the Saga of a Spy trilogy, after Rick Hanson and Project Thesius. 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 176 rooms, 56 objects and approximately 23k of compressed text. The parser understands 247 words, including 124 verbs. The game uses a similar memory layout and engine to its predecessor, Project Thesius. The parser extends the one in Project Thesius to permit the use of adjectives to distinguish ambiguous nouns (e.g. "large chest", "small chest"). The text compression scheme is also extended, allowing greater compression. Game disassembly ================ ; MY ; 001900 001901 000069 ; tape_filing_system_number &1900 01 ; entry_point &1902 a9 ff LDA #&ff &1903 85 74 STA &74 ; tape_version &1905 a9 c8 LDA #&c8 ; Read/Write BREAK/ESCAPE effect &1907 a2 03 LDX #&03 ; Clear memory on next reset &1909 a0 00 LDY #&00 &190b 20 f4 ff JSR &fff4 ; OSBYTE &190e a9 d2 LDA #&d2 ; Read/Write sound supression flag &1910 a2 01 LDX #&01 ; disable sound &1912 a0 00 LDY #&00 &1914 20 f4 ff JSR &fff4 ; OSBYTE &1917 a9 e1 LDA #&e1 ; Read/Write Interpretation of characters &80-&8F &1919 a2 00 LDX #&00 ; ignore &191b a0 00 LDY #&00 &191d 20 f4 ff JSR &fff4 ; OSBYTE &1920 a0 00 LDY #&00 &1922 a9 00 LDA #&00 ; Read filing system number &1924 20 da ff JSR &ffda ; OSARGS &1927 cd 00 19 CMP &1900 ; tape_filing_system_number &192a d0 02 BNE &192e ; not_tape_filing_system &192c e6 74 INC &74 ; tape_version ; not_tape_filing_system &192e a2 43 LDX #&43 &1930 a0 19 LDY #&19 ; &1943 = load_adcode1_string &1932 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ADCODE1 &1935 a2 50 LDX #&50 &1937 a0 19 LDY #&19 ; &1950 = load_adcode2_string &1939 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ADCODE2 &193c a2 5d LDX #&5d &193e a0 19 LDY #&19 ; &195d = run_adcode3_string &1940 4c f7 ff JMP &fff7 ; OSCLI # *RUN ADCODE3 ; load_adcode1_string &1943 4c 4f 41 44 20 41 44 43 4f 44 45 31 0d ; "LOAD ADCODE1" ; load_adcode2_string &1950 4c 4f 41 44 20 41 44 43 4f 44 45 32 0d ; "LOAD ADCODE2" ; run_adcode3_string &195d 52 55 4e 20 41 44 43 4f 44 45 33 0d ; "RUN ADCODE3" ; ADCODE1 ; 0008c0 0008c0 000440 ; room_exits_count_and_nsew ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &08c0 c2 c2 c2 42 01 c2 c2 c2 81 01 02 00 00 d5 00 54 ; &00 # ....8421 number of exits &08d0 b5 12 42 83 12 e4 c2 e3 32 c2 b3 62 32 93 81 52 ; &10 # ...1.... set if room has exit north &08e0 92 32 21 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 42 01 ; &20 # ..2..... set if room has exit south &08f0 52 81 01 01 42 81 32 32 32 32 74 75 b5 b4 53 75 ; &30 # .4...... set if room has exit east &0900 b5 a3 22 02 42 92 32 32 32 32 62 c2 82 42 92 32 ; &40 # 8....... set if room has exit west &0910 62 02 c3 42 03 22 12 34 01 32 22 22 12 a2 32 32 ; &50 &0920 32 92 c2 42 52 fa fa fa fa fa fa fa fa fa fa fa ; &60 &0930 fa fa 42 02 02 12 82 fa 22 02 02 02 22 52 02 02 ; &70 &0940 32 32 00 f4 f4 b3 73 41 82 02 12 73 73 f4 c3 c2 ; &80 &0950 c2 81 81 81 01 41 21 81 41 41 02 12 32 00 82 52 ; &90 &0960 11 32 32 22 d4 52 92 a2 e3 62 32 73 00 32 33 00 ; &a0 ; room_exits_other_directions ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0970 00 00 00 10 20 00 00 00 00 20 30 00 00 03 00 03 ; &00 # .......1 set if room has exit northeast &0980 03 04 02 05 08 02 00 00 00 00 00 00 00 10 00 00 ; &10 # ......2. set if room has exit northwest &0990 00 00 00 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 40 80 ; &20 # .....4.. set if room has exit southeast &09a0 00 00 20 20 20 00 00 00 00 00 04 05 0a 02 01 05 ; &30 # ....8... set if room has exit southwest &09b0 0a 08 10 30 20 00 00 00 00 00 00 00 04 02 00 00 ; &40 # ...1.... set if room has exit up &09c0 00 30 08 08 0d 01 04 42 80 00 04 02 02 00 00 00 ; &50 # ..2..... set if room has exit down &09d0 00 00 00 01 00 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ; &60 # .4...... set if room has exit in &09e0 3f 3f 10 30 30 20 10 3f 20 30 30 30 10 00 30 30 ; &70 # 8....... set if room has exit out &09f0 00 00 00 00 00 00 00 00 10 30 20 00 00 00 04 00 ; &80 &0a00 00 00 00 00 02 00 00 00 00 00 30 10 00 00 20 00 ; &90 &0a10 00 00 00 10 20 00 00 00 00 00 00 00 00 00 40 00 ; &a0 ; room_exit_data ; N S E W NE NW SE SW U D I O &0a20 05 01 ; room &00 : 05 01 &0a22 00 02 ; room &01 : 00 02 &0a24 01 03 ; room &02 : 01 03 &0a26 02 04 ; room &03 : 02 04 &0a28 03 ; room &04 : 03 &0a29 06 00 ; room &05 : 06 00 &0a2b 07 05 ; room &06 : 07 05 &0a2d 08 06 ; room &07 : 08 06 &0a2f 07 ; room &08 : 07 &0a30 02 ; room &09 : 02 &0a31 0b 09 ; room &0a : 0b 09 ; room &0b : # (deadly) ; room &0c : &0a33 0e 10 0f 0e 0e ; room &0d : 0e 10 0f 0e 0e ; room &0e : # (deadly) &0a38 0e 0d 0e 0e ; room &0f : 0e 0d 0e 0e &0a3c 0e 11 0d 0e 0e ; room &10 : 0e 11 0d 0e 0e &0a41 10 12 ; room &11 : 10 12 &0a43 13 11 ; room &12 : 13 11 &0a45 12 14 15 ; room &13 : 12 14 15 &0a48 42 13 ; room &14 : 42 13 &0a4a 36 1e 16 13 ; room &15 : 36 1e 16 13 &0a4e 15 17 ; room &16 : 15 17 &0a50 18 16 19 ; room &17 : 18 16 19 &0a53 17 1a ; room &18 : 17 1a &0a55 17 23 ; room &19 : 17 23 &0a57 18 30 1b ; room &1a : 18 30 1b &0a5a 1c 1a ; room &1b : 1c 1a &0a5c 1b 1d ; room &1c : 1b 1d &0a5e 1c 52 34 ; room &1d : 1c 52 34 &0a61 15 ; room &1e : 15 &0a62 3d 20 ; room &1f : 3d 20 &0a64 21 1f ; room &20 : 21 1f &0a66 22 20 ; room &21 : 22 20 &0a68 21 ; room &22 : 21 &0a69 28 27 19 28 2b 28 2c 25 ; room &23 : 28 27 19 28 2b 28 2c 25 # Jungle maze &0a71 29 25 27 26 28 2a 27 26 ; room &24 : 29 25 27 26 28 2a 27 26 # &0a79 24 28 27 26 23 24 28 2b ; room &25 : 24 28 27 26 23 24 28 2b # &0a81 28 27 25 2c 23 2c 25 26 ; room &26 : 28 27 25 2c 23 2c 25 26 # &0a89 23 28 2c 25 23 26 27 2c ; room &27 : 23 28 2c 25 23 26 27 2c # &0a91 23 2b 2b 26 25 27 2c 23 ; room &28 : 23 2b 2b 26 25 27 2c 23 # &0a99 25 24 2b 28 2c 23 29 2c ; room &29 : 25 24 2b 28 2c 23 29 2c # &0aa1 26 2d 28 2b 23 2c 24 2a ; room &2a : 26 2d 28 2b 23 2c 24 2a # &0aa9 23 2c 28 29 27 26 23 2b ; room &2b : 23 2c 28 29 27 26 23 2b # &0ab1 23 2b 27 26 28 2b 2c 23 ; room &2c : 23 2b 27 26 28 2b 2c 23 # &0ab9 2a 26 28 2e 2c 2b 25 26 ; room &2d : 2a 26 28 2e 2c 2b 25 26 # &0ac1 2d 2f ; room &2e : 2d 2f &0ac3 2e ; room &2f : 2e &0ac4 1a 31 ; room &30 : 1a 31 &0ac6 30 ; room &31 : 30 &0ac7 30 ; room &32 : 30 &0ac8 30 ; room &33 : 30 &0ac9 35 1d ; room &34 : 35 1d &0acb 34 ; room &35 : 34 &0acc 15 37 ; room &36 : 15 37 &0ace 36 38 ; room &37 : 36 38 # (deadly) &0ad0 37 3a ; room &38 : 37 3a &0ad2 36 38 ; room &39 : 36 38 &0ad4 38 3b 41 40 ; room &3a : 38 3b 41 40 &0ad8 3a 3f 40 41 3c ; room &3b : 3a 3f 40 41 3c &0add 40 3d 3f 3b 3e ; room &3c : 40 3d 3f 3b 3e &0ae2 3c 1f 3e 3f ; room &3d : 3c 1f 3e 3f &0ae6 3f 3d 3c ; room &3e : 3f 3d 3c &0ae9 3b 3e 3c 40 3d ; room &3f : 3b 3e 3c 40 3d &0aee 41 3c 3b 3a 3f ; room &40 : 41 3c 3b 3a 3f &0af3 40 3a 3b ; room &41 : 40 3a 3b &0af6 14 43 ; room &42 : 14 43 &0af8 44 42 ; room &43 : 44 42 &0afa 45 43 ; room &44 : 45 43 &0afc 46 44 ; room &45 : 46 44 &0afe 47 45 ; room &46 : 47 45 &0b00 48 46 ; room &47 : 48 46 &0b02 49 47 ; room &48 : 49 47 &0b04 4a 48 ; room &49 : 4a 48 &0b06 49 4b ; room &4a : 49 4b &0b08 4c 4a ; room &4b : 4c 4a &0b0a 4b 4d ; room &4c : 4b 4d &0b0c 4e 4c ; room &4d : 4e 4c &0b0e 4f 4d ; room &4e : 4f 4d &0b10 50 4e ; room &4f : 50 4e &0b12 4f 76 ; room &50 : 4f 76 &0b14 65 76 ; room &51 : 65 76 &0b16 1d 53 63 ; room &52 : 1d 53 63 &0b19 52 54 ; room &53 : 52 54 &0b1b 53 5b 55 ; room &54 : 53 5b 55 &0b1e 56 54 ; room &55 : 56 54 &0b20 55 57 ; room &56 : 55 57 &0b22 59 64 56 58 ; room &57 : 59 64 56 58 &0b26 57 ; room &58 : 57 # (deadly) &0b27 5a 57 ; room &59 : 5a 57 &0b29 59 5c ; room &5a : 59 5c &0b2b 5c 54 ; room &5b : 5c 54 &0b2d 5b 5a ; room &5c : 5b 5a &0b2f 5e 63 ; room &5d : 5e 63 &0b31 5d 5f ; room &5e : 5d 5f &0b33 5e 60 ; room &5f : 5e 60 &0b35 5f 61 ; room &60 : 5f 61 &0b37 60 62 ; room &61 : 60 62 &0b39 61 64 ; room &62 : 61 64 &0b3b 5d 52 ; room &63 : 5d 52 &0b3d 57 62 ; room &64 : 57 62 &0b3f 6b 6e 66 6e 68 6d 67 6f 66 51 ; room &65 : 6b 6e 66 6e 68 6d 67 6f 66 51 # Mountain maze &0b49 68 67 6e 65 66 6b 6f 67 68 67 ; room &66 : 68 67 6e 65 66 6b 6f 67 68 67 # &0b53 66 67 6e 6f 6e 65 6f 67 66 66 ; room &67 : 66 67 6e 6f 6e 65 6f 67 66 66 # &0b5d 68 66 6d 6b 6c 6e 6f 6f 6f 67 ; room &68 : 68 66 6d 6b 6c 6e 6f 6f 6f 67 # &0b67 68 68 6d 6b 6c 66 77 65 6e 6f ; room &69 : 68 68 6d 6b 6c 66 77 65 6e 6f # &0b71 6a 69 68 66 6c 6c 6c 6a 6a 6a ; room &6a : 6a 69 68 66 6c 6c 6c 6a 6a 6a # &0b7b 68 65 68 6b 68 68 6e 6f 68 68 ; room &6b : 68 65 68 6b 68 68 6e 6f 68 68 # &0b85 6c 6a 6c 6c 68 68 68 68 6a 68 ; room &6c : 6c 6a 6c 6c 68 68 68 68 6a 68 # &0b8f 6c 6e 68 6b 68 6c 65 6c 6c 6c ; room &6d : 6c 6e 68 6b 68 6c 65 6c 6c 6c # &0b99 6d 6f 68 68 68 68 68 68 68 68 ; room &6e : 6d 6f 68 68 68 68 68 68 68 68 # &0ba3 6e 67 66 6e 65 68 68 67 68 68 ; room &6f : 6e 67 66 6e 65 68 68 67 68 68 # &0bad 69 6c 71 72 77 77 68 6c 68 68 ; room &70 : 69 6c 71 72 77 77 68 6c 68 68 # &0bb7 71 6a 77 70 77 77 6a 6a 6a 6a ; room &71 : 71 6a 77 70 77 77 6a 6a 6a 6a # &0bc1 70 73 ; room &72 : 70 73 &0bc3 7e 72 ; room &73 : 7e 72 &0bc5 75 7e ; room &74 : 75 7e &0bc7 78 74 ; room &75 : 78 74 &0bc9 50 51 ; room &76 : 50 51 &0bcb 77 77 77 71 68 68 68 68 68 68 ; room &77 : 77 77 77 71 68 68 68 68 68 68 # Mountain maze &0bd5 75 79 ; room &78 : 75 79 &0bd7 78 7a ; room &79 : 78 7a &0bd9 79 7b ; room &7a : 79 7b &0bdb 7a 7f ; room &7b : 7a 7f &0bdd 80 7f ; room &7c : 80 7f &0bdf 80 7d ; room &7d : 80 7d &0be1 74 73 ; room &7e : 74 73 &0be3 7b 7c ; room &7f : 7b 7c &0be5 7c 7d ; room &80 : 7c 7d &0be7 83 82 ; room &81 : 83 82 ; room &82 : # (deadly) &0be9 84 81 88 87 ; room &83 : 84 81 88 87 &0bed 85 83 97 99 ; room &84 : 85 83 97 99 &0bf1 86 84 98 ; room &85 : 86 84 98 &0bf4 9d 85 9e ; room &86 : 9d 85 9e &0bf7 83 ; room &87 : 83 &0bf8 83 89 ; room &88 : 83 89 &0bfa 8a 88 ; room &89 : 8a 88 &0bfc 8b 89 ; room &8a : 8b 89 &0bfe 8c 8a 8e ; room &8b : 8c 8a 8e &0c01 8d 8b 8f ; room &8c : 8d 8b 8f &0c04 96 8c 90 95 ; room &8d : 96 8c 90 95 &0c08 93 8b 94 ; room &8e : 93 8b 94 &0c0b 92 8c ; room &8f : 92 8c &0c0d 91 8d ; room &90 : 91 8d &0c0f 90 ; room &91 : 90 &0c10 8f ; room &92 : 8f &0c11 8e ; room &93 : 8e &0c12 8e ; room &94 : 8e &0c13 8d ; room &95 : 8d &0c14 8d ; room &96 : 8d &0c15 84 ; room &97 : 84 &0c16 85 ; room &98 : 85 &0c17 84 ; room &99 : 84 &0c18 9e 9b ; room &9a : 9e 9b &0c1a 9c 9a ; room &9b : 9c 9a &0c1c 9d 9b ; room &9c : 9d 9b ; room &9d : # (deadly) &0c1e 86 9a ; room &9e : 86 9a &0c20 a0 85 ; room &9f : a0 85 &0c22 a1 ; room &a0 : a1 &0c23 a2 a0 ; room &a1 : a2 a0 &0c25 a3 a1 ; room &a2 : a3 a1 &0c27 a2 a4 ; room &a3 : a2 a4 &0c29 aa a6 a5 a3 ; room &a4 : aa a6 a5 a3 &0c2d ad a4 ; room &a5 : ad a4 &0c2f ab a4 ; room &a6 : ab a4 &0c31 ab a8 ; room &a7 : ab a8 &0c33 aa a7 a9 ; room &a8 : aa a7 a9 &0c36 ad a8 ; room &a9 : ad a8 &0c38 a8 a4 ; room &aa : a8 a4 &0c3a a7 a6 ac ; room &ab : a7 a6 ac ; room &ac : # (deadly) &0c3d a9 a5 ; room &ad : a9 a5 &0c3f a9 a5 af ; room &ae : a9 a5 af ; room &af : ; room_string_ids ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0c42 03 03 03 03 08 03 03 03 0a 0c 10 14 01 16 18 16 ; &00 &0c52 16 1a 1a 1c 1a 1a 1a 1c 1a 1e 25 25 25 25 1e 2c ; &10 &0c62 2c 2c 2c 23 23 23 23 23 23 23 23 23 23 31 33 35 ; &20 &0c72 37 39 3a 3b 41 3d 43 46 4a 48 4c 4c 4c 4c 4c 4c ; &30 &0c82 4c 4c 1e 4e 50 50 54 54 54 54 50 1a 1a 1a 1a 56 ; &40 &0c92 5f 5f 1c 1a 1c 58 58 5b 5d 58 58 58 58 1a 1a 1a ; &50 &0ca2 58 58 58 58 58 5f 63 63 63 63 63 63 63 63 63 63 ; &60 &0cb2 63 63 65 65 65 67 5f 63 69 6d 6d 6d 6b 70 65 6d ; &70 &0cc2 72 76 78 7a 7a 7a 7a 7e 80 82 84 7a 7a 7a 87 89 ; &80 &0cd2 8b 8e 8e 8e 90 90 92 94 a3 96 9a 9c 9f a1 98 a3 ; &90 &0ce2 a8 a8 aa a8 ad ad ad ad ad ad b2 ad ba ad ad b4 ; &a0 ; rather_silly_string &0cf2 52 61 74 68 65 72 20 73 69 6c 6c 79 21 0d ; "Rather silly!\r" ; ADCODE3 ; 001100 0020ad 002d06 ; door_rooms &1100 1a 30 30 31 80 7d a3 a4 a8 aa a4 aa ab 81 83 87 &1110 84 97 84 99 85 98 9f 86 9c 9b 9c 8b 8e 8e 93 8e &1120 94 8c 8f 8f 92 8d 90 90 91 8d 96 8d 95 &112d ff ; door_numbers &112e 00 00 01 01 02 02 03 03 04 04 05 05 06 07 08 08 &1110 09 09 0a 0a 0b 0b 0b 0c 0d 0e 0e 0f 0f 10 10 11 &1110 11 12 12 13 13 14 14 15 15 16 16 17 17 ; door_directions &115b 01 00 02 03 01 00 08 09 01 00 00 01 02 01 03 02 &1110 02 03 03 02 03 02 02 00 00 00 01 02 03 02 03 06 &1110 05 02 03 02 03 02 03 02 03 00 01 03 02 ; game_state ; door_states &1188 ff ; DOOR_00 : ROOM_1a south, ROOM_30 north, DOOR_SPECIAL_CLOSED # Hammer and nails &1189 80 ; DOOR_01 : ROOM_30 east, ROOM_31 west, DOOR_CLOSED &118a ff ; DOOR_02 : ROOM_80 south, ROOM_7d north, DOOR_SPECIAL_CLOSED # Boulder &118b 80 ; DOOR_03 : ROOM_a3 up, ROOM_a4 down, DOOR_CLOSED &118c 80 ; DOOR_04 : ROOM_a8 south, ROOM_aa north, DOOR_CLOSED &118d 80 ; DOOR_05 : ROOM_a4 north, ROOM_aa south, DOOR_CLOSED &118e 80 ; DOOR_06 : ROOM_ab east, DOOR_CLOSED &118f 80 ; DOOR_07 : ROOM_81 south, DOOR_CLOSED &1190 80 ; DOOR_08 : ROOM_83 west, ROOM_87 east, DOOR_CLOSED &1191 00 ; DOOR_09 : ROOM_84 east, ROOM_97 west, DOOR_OPEN &1192 80 ; DOOR_0a : ROOM_84 west, ROOM_99 east, DOOR_CLOSED &1193 00 ; DOOR_0b : ROOM_85 west, ROOM_98 east, ROOM_9f east, DOOR_OPEN &1194 80 ; DOOR_0c : ROOM_86 north, DOOR_CLOSED &1195 80 ; DOOR_0d : ROOM_9c north, DOOR_CLOSED &1196 00 ; DOOR_0e : ROOM_9b north, ROOM_9c south, DOOR_OPEN &1197 80 ; DOOR_0f : ROOM_8b east, ROOM_8e west, DOOR_CLOSED &1198 80 ; DOOR_10 : ROOM_8e east, ROOM_93 west, DOOR_CLOSED &1199 00 ; DOOR_11 : ROOM_8e southeast, ROOM_94 northwest, DOOR_OPEN &119a 80 ; DOOR_12 : ROOM_8c east, ROOM_8f west, DOOR_CLOSED &119b 80 ; DOOR_13 : ROOM_8f east, ROOM_92 west, DOOR_CLOSED &119c 80 ; DOOR_14 : ROOM_8d east, ROOM_90 west, DOOR_CLOSED &119d 80 ; DOOR_15 : ROOM_90 east, ROOM_91 west, DOOR_CLOSED &119e 80 ; DOOR_16 : ROOM_8d north, ROOM_96 south, DOOR_CLOSED &119f 00 ; DOOR_17 : ROOM_8d west, ROOM_95 east, DOOR_OPEN ; readable_objects &11a0 1e ; OBJECT_MAP &11a1 1f ; OBJECT_RED_BOOK &11a2 20 ; OBJECT_YELLOW_BOOK &11a3 21 ; OBJECT_GREEN_BOOK &11a4 22 ; OBJECT_PURPLE_BOOK &11a5 23 ; OBJECT_BLUE_BOOK ; readable_objects_string_ids &11a6 07 ; string_407 : "it says: "The mountain passage", but the markings are so small that you cannot understand them! " &11a7 09 ; string_409 : "the writing is very small and is undiscernible! " &11a8 0b ; string_40b : "it is a long, ancient history of the mansion which informs you of a secret passage used in years gone by! " &11a9 0c ; string_40c : "it is a short account of the growth and refinement of coca leaves into cocaine. " &11aa 0d ; string_40d : "it is a large atlas. You see that the mansion is only a short distance from the border! " &11ab 0e ; string_40e : "it is a raunchy novel of little use to you! " ; object_locations &11ac 04 ; &00 (OBJECT_CAN) : ROOM_04 ; "a rubbish mountain" &11ad 00 ; &01 (OBJECT_BAG) : ROOM_00 ; "the ditch" &11ae 00 ; &02 (OBJECT_HOLE) : ROOM_00 ; "the ditch" &11af 06 ; &03 (OBJECT_DRUM) : ROOM_06 ; "a ditch" &11b0 0a ; &04 (OBJECT_POINTED_TWIG) : ROOM_0a ; "the creeper" &11b1 fc ; &05 (OBJECT_LID) : ROOM_HIDDEN &11b2 fc ; &06 (OBJECT_CREEPER) : ROOM_HIDDEN &11b3 fc ; &07 (OBJECT_UNIFORM) : ROOM_HIDDEN &11b4 fe ; &08 (OBJECT_SUIT) : ROOM_WEARING &11b5 fd ; &09 (OBJECT_HANDS) : ROOM_DESTROYED &11b6 fd ; &0a (OBJECT_HEAD) : ROOM_DESTROYED &11b7 fd ; &0b (OBJECT_BODY) : ROOM_DESTROYED &11b8 3e ; &0c (OBJECT_FORKED_TWIG) : ROOM_3e ; "the swampland" &11b9 30 ; &0d (OBJECT_BED) : ROOM_30 ; "the small cabin" &11ba fb ; &0e (OBJECT_BANDAGE) : ROOM_LOCKED_IN_SMALL_CHEST &11bb 31 ; &0f (OBJECT_SMALL_CHEST) : ROOM_31 ; "a cupboard" &11bc 31 ; &10 (OBJECT_LARGE_CHEST) : ROOM_31 ; "a cupboard" &11bd cd ; &11 (OBJECT_SMALL_KEY) : ROOM_OBJECTS + OBJECTS_HOOK &11be fb ; &12 (OBJECT_LARGE_KEY) : ROOM_LOCKED_IN_SMALL_CHEST &11bf 2f ; &13 (OBJECT_BASKET) : ROOM_2f ; "the cave" &11c0 fc ; &14 (OBJECT_CATAPULT) : ROOM_HIDDEN &11c1 0f ; &15 (OBJECT_STONE) : ROOM_0f ; "the riverbank" &11c2 1a ; &16 (OBJECT_PLANK) : ROOM_1a ; "a wide path" &11c3 fa ; &17 (OBJECT_HAMMER) : ROOM_LOCKED_IN_LARGE_CHEST &11c4 36 ; &18 (OBJECT_QUICKSAND) : ROOM_36 ; "a clearing" &11c5 c0 ; &19 (OBJECT_MATTRESS) : ROOM_OBJECTS + OBJECT_BED &11c6 fc ; &1a (OBJECT_HOOK) : ROOM_HIDDEN &11c7 fd ; &1b (OBJECT_TREES) : ROOM_DESTROYED &11c8 c9 ; &1c (OBJECT_NAILS) : ROOM_OBJECTS + OBJECT_PLANK &11c9 41 ; &1d (OBJECT_JAR) : ROOM_41 ; "the swampland" &11ca c6 ; &1e (OBJECT_MAP) : ROOM_OBJECTS + OBJECT_BASKET &11cb 97 ; &1f (OBJECT_RED_BOOK) : ROOM_97 ; "the library" &11cc 97 ; &20 (OBJECT_YELLOW_BOOK) : ROOM_97 ; "the library" &11cd 97 ; &21 (OBJECT_GREEN_BOOK) : ROOM_97 ; "the library" &11ce 97 ; &22 (OBJECT_PURPLE_BOOK) : ROOM_97 ; "the library" &11cf 97 ; &23 (OBJECT_BLUE_BOOK) : ROOM_97 ; "the library" &11d0 4f ; &24 (OBJECT_BOULDER) : ROOM_4f ; "a wide open space" &11d1 fc ; &25 (OBJECT_OVERALLS) : ROOM_HIDDEN &11d2 92 ; &26 (OBJECT_MAGNIFYING_GLASS) : ROOM_92 ; "a cupboard" &11d3 dc ; &27 (OBJECT_CARVED_LION) : ROOM_OBJECTS + OBJECT_HEARTH &11d4 dc ; &28 (OBJECT_CARVED_ROSE) : ROOM_OBJECTS + OBJECT_HEARTH &11d5 98 ; &29 (OBJECT_HEARTH) : ROOM_98 ; "the lounge" &11d6 93 ; &2a (OBJECT_TORCH) : ROOM_93 ; "a cupboard" &11d7 e6 ; &2b (OBJECT_BATTERY) : ROOM_OBJECTS + OBJECT_RADIO &11d8 f8 ; &2c (OBJECT_POWERMATIC) : ROOM_DESTROYED_IN_ROOM_96 ; "a storeroom" &11d9 f9 ; &2d (OBJECT_EXTINGUISHER) : ROOM_DESTROYED_IN_ROOM_87 ; "a closet" &11da f7 ; &2e (OBJECT_RED_BUTTON) : ROOM_DESTROYED_IN_ROOM_aa ; "the limousine" &11db f7 ; &2f (OBJECT_YELLOW_BUTTON) : ROOM_DESTROYED_IN_ROOM_aa ; "the limousine" &11dc f7 ; &30 (OBJECT_GREEN_BUTTON) : ROOM_DESTROYED_IN_ROOM_aa ; "the limousine" &11dd dd ; &31 (OBJECT_BULB) : ROOM_OBJECTS + OBJECT_TORCH &11de e9 ; &32 (OBJECT_LIGHTHOUSE) : ROOM_OBJECTS + OBJECT_TOY_BOX &11df e7 ; &33 (OBJECT_RADIO) : ROOM_OBJECTS + OBJECT_SACK &11e0 e8 ; &34 (OBJECT_SACK) : ROOM_OBJECTS + OBJECT_CARDBOARD_BOX &11e1 ea ; &35 (OBJECT_CARDBOARD_BOX) : ROOM_OBJECTS + OBJECT_TABLE &11e2 91 ; &36 (OBJECT_TOY_BOX) : ROOM_91 ; "a cupboard" &11e3 9c ; &37 (OBJECT_TABLE) : ROOM_9c ; "the huge kitchen" ; object_states &11e4 00 ; &00 (OBJECT_CAN) &11e5 00 ; &01 (OBJECT_BAG) &11e6 00 ; &02 (OBJECT_HOLE) &11e7 00 ; &03 (OBJECT_DRUM) &11e8 00 ; &04 (OBJECT_POINTED_TWIG) &11e9 00 ; &05 (OBJECT_LID) &11ea 00 ; &06 (OBJECT_CREEPER) &11eb 00 ; &07 (OBJECT_UNIFORM) &11ec 00 ; &08 (OBJECT_SUIT) &11ed 00 ; &09 (OBJECT_HANDS) &11ee 00 ; &0a (OBJECT_HEAD) &11ef 00 ; &0b (OBJECT_BODY) &11f0 00 ; &0c (OBJECT_FORKED_TWIG) &11f1 00 ; &0d (OBJECT_BED) &11f2 00 ; &0e (OBJECT_BANDAGE) &11f3 01 ; &0f (OBJECT_SMALL_CHEST) : &62 - &61 : string_062 : "it is made from toughened metal and is locked. " &11f4 01 ; &10 (OBJECT_LARGE_CHEST) : &65 - &64 : string_065 : "it is constructed from thick metal and is locked. " &11f5 00 ; &11 (OBJECT_SMALL_KEY) &11f6 00 ; &12 (OBJECT_LARGE_KEY) &11f7 00 ; &13 (OBJECT_BASKET) &11f8 00 ; &14 (OBJECT_CATAPULT) &11f9 00 ; &15 (OBJECT_STONE) &11fa 00 ; &16 (OBJECT_PLANK) &11fb 00 ; &17 (OBJECT_HAMMER) &11fc 00 ; &18 (OBJECT_QUICKSAND) &11fd 00 ; &19 (OBJECT_MATTRESS) &11fe 00 ; &1a (OBJECT_HOOK) &11ff 00 ; &1b (OBJECT_TREES) &1200 00 ; &1c (OBJECT_NAILS) &1201 02 ; &1d (OBJECT_JAR) : &83 - &81 : string_083 : "it has been filled with swamp water. " &1202 00 ; &1e (OBJECT_MAP) &1203 00 ; &1f (OBJECT_RED_BOOK) &1204 00 ; &20 (OBJECT_YELLOW_BOOK) &1205 00 ; &21 (OBJECT_GREEN_BOOK) &1206 00 ; &22 (OBJECT_PURPLE_BOOK) &1207 00 ; &23 (OBJECT_BLUE_BOOK) &1208 00 ; &24 (OBJECT_BOULDER) &1209 00 ; &25 (OBJECT_OVERALLS) &120a 00 ; &26 (OBJECT_MAGNIFYING_GLASS) &120b 00 ; &27 (OBJECT_CARVED_LION) &120c 00 ; &28 (OBJECT_CARVED_ROSE) &120d 00 ; &29 (OBJECT_HEARTH) &120e 00 ; &2a (OBJECT_TORCH) &120f 00 ; &2b (OBJECT_BATTERY) &1210 00 ; &2c (OBJECT_POWERMATIC) &1211 00 ; &2d (OBJECT_EXTINGUISHER) &1212 00 ; &2e (OBJECT_RED_BUTTON) &1213 00 ; &2f (OBJECT_YELLOW_BUTTON) &1214 00 ; &30 (OBJECT_GREEN_BUTTON) &1215 00 ; &31 (OBJECT_BULB) &1216 00 ; &32 (OBJECT_LIGHTHOUSE) &1217 00 ; &33 (OBJECT_RADIO) &1218 00 ; &34 (OBJECT_SACK) &1219 00 ; &35 (OBJECT_CARDBOARD_BOX) &121a 00 ; &36 (OBJECT_TOY_BOX) &121b 00 ; &37 (OBJECT_TABLE) ; object_string_ids &121c 46 ; &00 : string_046: "tin can" &121d 48 ; &01 : string_048: "small bag" &121e 4a ; &02 : string_04a: "hole" &121f 4c ; &03 : string_04c: "large oil drum" &1220 4f ; &04 : string_04f: "pointed twig which protrudes from a tree nearby" &1221 52 ; &05 : string_052: "small lid" &1222 54 ; &06 : string_054: "creeper" &1223 56 ; &07 : string_056: "prison uniform" &1224 58 ; &08 : string_058: "suit" &1225 2d ; &09 : string_02d: "You see nothing of interest. " (OBJECT_HANDS) &1226 2d ; &0a : string_02d: "You see nothing of interest. " (OBJECT_HEAD) &1227 2d ; &0b : string_02d: "You see nothing of interest. " (OBJECT_BODY) &1228 5a ; &0c : string_05a: "forked twig" &1229 5c ; &0d : string_05c: "bed" &122a 5e ; &0e : string_05e: "length of bandage" &122b 60 ; &0f : string_060: "small chest" &122c 63 ; &10 : string_063: "large chest" &122d 66 ; &11 : string_066: "small key" &122e 67 ; &12 : string_067: "large key" &122f 6a ; &13 : string_06a: "wickerwork basket" &1230 6c ; &14 : string_06c: "catapult" &1231 6e ; &15 : string_06e: "stone" &1232 70 ; &16 : string_070: "plank" &1233 72 ; &17 : string_072: "claw hammer" &1234 73 ; &18 : string_073: "dangerous area of quicksand" &1235 75 ; &19 : string_075: "mattress" &1236 68 ; &1a : string_068: "hook fixed to the back of the cupboard door" &1237 2d ; &1b : string_02d: "You see nothing of interest. " (OBJECT_TREES) &1238 77 ; &1c : string_077: "cluster of large nails which secure the plank across the doorway" &1239 80 ; &1d : string_080: "glass jam jar" &123a 7e ; &1e : string_07e: "small map" &123b 78 ; &1f : string_078: "red book" &123c 79 ; &20 : string_079: "yellow book" &123d 7a ; &21 : string_07a: "green book" &123e 7b ; &22 : string_07b: "purple book" &123f 7c ; &23 : string_07c: "blue book" &1240 85 ; &24 : string_085: "boulder" &1241 86 ; &25 : string_086: "pair of overalls" &1242 88 ; &26 : string_088: "magnifying glass" &1243 89 ; &27 : string_089: "carved lion" &1244 8b ; &28 : string_08b: "carved rose" &1245 8d ; &29 : string_08d: "hearth" &1246 8f ; &2a : string_08f: "torch" &1247 90 ; &2b : string_090: "battery" &1248 92 ; &2c : string_092: "Powermatic" &1249 94 ; &2d : string_094: "fire extinguisher" &124a 96 ; &2e : string_096: "red button" &124b 97 ; &2f : string_097: "yellow button" &124c 98 ; &30 : string_098: "green button" &124d 99 ; &31 : string_099: "small bulb" &124e 9a ; &32 : string_09a: "toy lighthouse" &124f 9c ; &33 : string_09c: "broken radio" &1250 9d ; &34 : string_09d: "sack fashioned from rough material" &1251 9e ; &35 : string_09e: "cardboard box" &1252 9f ; &36 : string_09f: "toy box" &1253 a0 ; &37 : string_0a0: "table" ; room_states ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1254 03 00 01 02 00 00 00 00 00 00 01 00 00 00 00 00 ; &00 &1264 00 00 00 00 00 00 00 00 00 01 01 04 03 05 02 01 ; &10 &1274 02 02 03 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &20 &1284 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ; &30 &1294 00 00 03 00 01 02 00 00 00 00 02 00 00 00 00 00 ; &40 &12a4 01 01 00 00 00 00 00 00 00 00 01 00 01 00 00 00 ; &50 &12b4 00 01 00 01 01 02 00 00 00 00 00 00 00 00 00 00 ; &60 &12c4 00 00 00 00 00 00 01 00 05 01 01 01 03 00 00 01 ; &70 &12d4 01 00 00 01 01 01 01 00 05 03 01 02 02 02 05 03 ; &80 &12e4 01 00 00 00 00 00 00 00 01 00 03 01 00 00 05 03 ; &90 &12f4 00 00 00 03 0e 03 03 03 03 03 00 02 00 01 01 00 ; &a0 ; player_room &1304 0c ; previous_player_room &1305 0c ; player_is_remembering &1306 ff # Positive if player is remembering ; room_exits &1307 ff ; DIRECTION_NORTH &1308 ff ; DIRECTION_SOUTH &1309 ff ; DIRECTION_EAST &130a ff ; DIRECTION_WEST &130b ff ; DIRECTION_NORTHEAST &130c ff ; DIRECTION_NORTHWEST &130d ff ; DIRECTION_SOUTHEAST &130e ff ; DIRECTION_SOUTHWEST &130f ff ; DIRECTION_UP &1310 ff ; DIRECTION_DOWN &1311 ff ; DIRECTION_IN &1312 ff ; DIRECTION_OUT ; creeper_exit &1313 00 # Room creeper exits down into ; drum_exit &1314 00 # Room drum exits down into ; plank_exit &1315 00 # Room plank leads south into ; plank_cooldown &1316 02 # Turns before plank slurps into quicksand ; soldiers_state &1317 06 # Turns before soldiers open fire ; spider_state &1318 80 # Negative if spider hasn't looked at player ; spider_room &1319 b5 ; ROOM_OBJECTS + OBJECT_HOLE # Location of spider ; spider_is_in_hole &131a 80 # Negative if spider is in hole ; creeper_state &131b 80 # Negative if not swinging on creeper ; creeper_swing_state &131c 02 # Room creeper is above ; creeper_swing_direction &131d 00 # Negative if swinging west, positive if swinging east ; player_is_tied_to_creeper &131e 00 # Negative if player is tied to creeper ; drum_is_tied_to_creeper &131f 00 # Negative if drum is tied to creeper ; puma_state &1320 80 # Negative if puma present ; puma_cooldown &1321 03 # Turns before puma charges at player ; alligator_room &1322 3a ; ROOM_3a ; "the swampland" # Location of alligator ; alligator_cooldown &1323 01 # Turns before alligator squashes player ; capuchin_timer &1324 00 ; lighthouse_provides_light &1325 00 # Negative if lighthouse provides light ; battery_cooldown &1326 02 # Turns before battery is usable ; lighthouse_state &1327 00 # Negative if lighthouse is turned on ; yellow_button_state &1328 00 # Negative if yellow button has been pressed ; footsteps_cooldown &1329 01 # Turns before footsteps approach ; wildlife_state &132a 18 ; string_418 ; "a large, black and yellow snake slithers by! " ; wildlife_timer &132b 00 ; immovable_objects &132c 03 ; OBJECT_DRUM &132d 02 ; OBJECT_HOLE &132e 0d ; OBJECT_BED &132f 18 ; OBJECT_QUICKSAND &1330 1a ; OBJECT_HOOK &1331 10 ; OBJECT_LARGE_CHEST &1332 27 ; OBJECT_CARVED_LION &1333 28 ; OBJECT_CARVED_ROSE &1334 29 ; OBJECT_HEARTH &1335 16 ; OBJECT_PLANK &1336 1c ; OBJECT_NAILS &1337 2e ; OBJECT_RED_BUTTON &1338 2f ; OBJECT_YELLOW_BUTTON &1339 30 ; OBJECT_GREEN_BUTTON &133a 36 ; OBJECT_TOY_BOX &133b 37 ; OBJECT_TABLE ; end_of_game_state ; object_extra_string_ids &133c 47 ; &00 : string_047 : "it has abrasive sides and is cylindrical with a diameter of 8 centimetres. " &133d 49 ; &01 : string_049 : "it is made from thick plastic. " &133e 4b ; &02 : string_04b : "it is a small opening, about 80 millimetres wide. " &133f 4d ; &03 : string_04d : "it is cylindrical, green and over a metre high. Through the hole in the top where its lid belongs you see that it is filled with sediment. " &1340 50 ; &04 : string_050 : "it is narrow. " &1341 53 ; &05 : string_053 : "it is the cap of the drum: round and about 7 centimetres wide. " &1342 55 ; &06 : string_055 : "it is long. " &1343 57 ; &07 : string_057 : "it is purple and yellow! " &1344 59 ; &08 : string_059 : "suits you! " &1345 2d ; &09 : string_02d : "You see nothing of interest. " &1346 2d ; &0a : string_02d : "You see nothing of interest. " &1347 2d ; &0b : string_02d : "You see nothing of interest. " &1348 5b ; &0c : string_05b : "it is shaped like the letter Y! " &1349 5d ; &0d : string_05d : "it is large and sturdy. " &134a 5f ; &0e : string_05f : "it is made from stretchy elastic! " &134b 61 ; &0f : string_061 : "it is wide open. " &134c 64 ; &10 : string_064 : "you find it has been opened wide. " &134d 2d ; &11 : string_02d : "You see nothing of interest. " &134e 2d ; &12 : string_02d : "You see nothing of interest. " &134f 6b ; &13 : string_06b : "it is large and made from grasses. " &1350 6d ; &14 : string_06d : "it has been made from a forked twig and a length of bandage! " &1351 6f ; &15 : string_06f : "it is smooth, round and small. " &1352 71 ; &16 : string_071 : "it is long and straight and appears sturdy. " &1353 2d ; &17 : string_02d : "You see nothing of interest. " &1354 74 ; &18 : string_074 : "it appears deep! " &1355 76 ; &19 : string_076 : "it is large and smelly! Looks springy, though. " &1356 69 ; &1a : string_069 : "it is small and made from gleaming brass. " &1357 2d ; &1b : string_02d : "You see nothing of interest. " &1358 2d ; &1c : string_02d : "You see nothing of interest. " &1359 81 ; &1d : string_081 : "it is empty. " &135a 7f ; &1e : string_07f : "there are peculiar markings on it. " &135b 84 ; &1f : string_084 : "you see writing! " &135c 84 ; &20 : string_084 : "you see writing! " &135d 84 ; &21 : string_084 : "you see writing! " &135e 84 ; &22 : string_084 : "you see writing! " &135f 84 ; &23 : string_084 : "you see writing! " &1360 2d ; &24 : string_02d : "You see nothing of interest. " &1361 87 ; &25 : string_087 : "they are black. " &1362 2d ; &26 : string_02d : "You see nothing of interest. " &1363 8a ; &27 : string_08a : "it has a long tongue! " &1364 8c ; &28 : string_08c : "it has been exquisitely fashioned from stone. " &1365 8e ; &29 : string_08e : "it has beautiful carvings. " &1366 a1 ; &2a : string_0a1 : "it has space for a rectangular battery. " &1367 91 ; &2b : string_091 : "it is cylindrical. " &1368 93 ; &2c : string_093 : "it has a cylindrical space. " &1369 95 ; &2d : string_095 : "it is constructed from sturdy metal and is a metre long. " &136a 2d ; &2e : string_02d : "You see nothing of interest. " &136b 2d ; &2f : string_02d : "You see nothing of interest. " &136c 2d ; &30 : string_02d : "You see nothing of interest. " &136d 2d ; &31 : string_02d : "You see nothing of interest. " &136e 9b ; &32 : string_09b : "it has an on-off switch. A label informs you that it accepts a bulb and a battery. " &136f 2d ; &33 : string_02d : "You see nothing of interest. " &1370 2d ; &34 : string_02d : "You see nothing of interest. " &1371 2d ; &35 : string_02d : "You see nothing of interest. " &1372 2d ; &36 : string_02d : "You see nothing of interest. " &1373 2d ; &37 : string_02d : "You see nothing of interest. " # &00 : WORD_VERB # &01 : WORD_DIRECTION # &02 : WORD_SYSTEM_VERB # &03 : WORD_OBJECT # &04 : WORD_NOUN # &05 : WORD_PRONOUN # &06 : WORD_TRAILING_ADJECTIVE # &07 : WORD_EVERYTHING # &08 : WORD_EXCEPT # &09 : WORD_CONJUNCTION # &0a : WORD_ADJECTIVE # &0b : WORD_AMBIGUOUS_NOUN # &0c : WORD_ONES # &80 : WORD_ACCEPTS_MULTIPLE_OBJECTS ; vocabulary value type handler &1374 61 ee 00 06 ; &00 : "an" &00 &06 &1378 61 f4 08 04 ; &01 : "at" &08 &04 &137c 61 ed 05 04 ; &02 : "am" &05 &04 &1380 61 6c ec 00 07 ; &03 : "all" &00 &07 &1385 61 70 61 72 f4 00 08 ; &04 : "apart" &00 &08 &138c 61 6e e4 00 09 ; &05 : "and" &00 &09 &1391 61 74 74 61 63 e8 1b 00 ; &06 : "attach" &1b &00 &29dc = handle_put &1399 61 6c 6c 69 67 61 74 6f f2 04 04 ; &07 : "alligator" &04 &04 &13a4 61 73 73 65 6d 62 6c e5 31 00 ; &08 : "assemble" &31 &00 &3487 = handle_make &13ae 61 74 6c 61 f3 22 03 ; &09 : "atlas" &22 &03 &13b5 61 74 74 61 63 eb 3e 00 ; &0a : "attack" &3e &00 &37d0 = handle_attack &13bd 62 75 f4 00 08 ; &0b : "but" &00 &08 &13c2 62 61 e7 01 03 ; &0c : "bag" &01 &03 &13c7 62 61 72 72 65 ec 03 03 ; &0d : "barrel" &03 &03 &13cf 62 6c 6f 63 eb 27 00 ; &0e : "block" &27 &00 &30d6 = handle_cover &13d6 62 6f 75 6e 63 e5 1e 00 ; &0f : "bounce" &1e &00 &2e06 = handle_jump &13de 62 6f 64 f9 0b 03 ; &10 : "body" &0b &03 &13e4 62 69 e7 03 0a ; &11 : "big" &03 &0a &13e9 62 61 6e 64 61 67 e5 0e 03 ; &12 : "bandage" &0e &03 &13f2 62 65 e4 0d 03 ; &13 : "bed" &0d &03 &13f7 62 61 73 6b 65 f4 13 03 ; &14 : "basket" &13 &03 &13ff 62 6c 75 e5 08 0a ; &15 : "blue" &08 &0a &1405 62 6f 6f 6b f3 04 0b ; &16 : "books" &04 &0b &140c 62 6f 75 6c 64 65 f2 24 03 ; &17 : "boulder" &24 &03 &1415 62 6f 77 ec 3c 00 ; &18 : "bowl" &3c &00 &369b = handle_roll &141b 62 61 74 74 65 72 f9 2b 03 ; &19 : "battery" &2b &03 &1424 62 75 6c e2 31 03 ; &1a : "bulb" &31 &03 &142a 62 75 74 74 6f 6e f3 06 0b ; &1b : "buttons" &06 &0b &1433 62 6f 78 65 f3 07 0b ; &1c : "boxes" &07 &0b &143a 63 6c f3 0f 02 ; &1d : "cls" &0f &02 &6357 = handle_cls &143f 63 6c 69 6d e2 1f 80 ; &1e : "climb" &1f &80 &2f44 = handle_climb &1446 63 6c 61 6d 62 65 f2 1f 80 ; &1f : "clamber" &1f &80 &2f44 = handle_climb &144f 63 6f 6c 6f 75 f2 11 02 ; &20 : "colour" &11 &02 &22a0 = handle_colour &1457 63 72 65 65 70 65 f2 06 03 ; &21 : "creeper" &06 &03 &1460 63 61 ee 00 03 ; &22 : "can" &00 &03 &1465 63 61 f0 05 03 ; &23 : "cap" &05 &03 &146a 63 75 f4 26 00 ; &24 : "cut" &26 &00 &3067 = handle_cut &146f 63 6f 76 65 f2 27 00 ; &25 : "cover" &27 &00 &30d6 = handle_cover &1476 63 6c 65 61 f2 1d 00 ; &26 : "clear" &1d &00 &2d89 = handle_empty &147d 63 68 65 73 74 f3 01 0b ; &27 : "chests" &01 &0b &1485 63 6c 6f 73 e5 2a 80 ; &28 : "close" &2a &80 &3229 = handle_close &148c 63 61 f4 03 04 ; &29 : "cat" &03 &04 &1491 63 61 74 61 70 75 6c f4 14 03 ; &2a : "catapult" &14 &03 &149b 63 72 65 61 74 75 72 e5 03 0b ; &2b : "creature" &03 &0b &14a5 63 72 65 61 74 e5 31 00 ; &2c : "create" &31 &00 &3487 = handle_make &14ad 63 6f 6d 62 69 6e e5 1b 00 ; &2d : "combine" &1b &00 &29dc = handle_put &14b6 63 61 70 75 63 68 69 ee 06 04 ; &2e : "capuchin" &06 &04 &14c0 63 61 72 76 69 6e 67 f3 08 0b ; &2f : "carvings" &08 &0b &14ca 63 6f 6e 64 6f f2 09 04 ; &30 : "condor" &09 &04 &14d2 63 61 72 64 62 6f 61 72 e4 09 0a ; &31 : "cardboard" &09 &0a &14dd 64 6f 77 ee 09 01 ; &32 : "down" &09 &01 &25a2 = handle_down &14e3 64 72 6f f0 13 80 ; &33 : "drop" &13 &80 &26da = handle_drop &14e9 64 72 75 ed 03 03 ; &34 : "drum" &03 &03 &14ef 64 72 65 61 ed 23 00 ; &35 : "dream" &23 &00 &3047 = handle_remember &14f6 64 6f 6f f2 01 04 ; &36 : "door" &01 &04 &14fc 64 6f 6f 72 f3 02 04 ; &37 : "doors" &02 &04 &1503 64 69 e7 2e 00 ; &38 : "dig" &2e &00 &30ad = handle_dig &1508 64 69 73 6d 61 6e 74 6c e5 32 00 ; &39 : "dismantle" &32 &00 &34f7 = handle_dismantle &1513 64 72 69 6e eb 3b 00 ; &3a : "drink" &3b &00 &3656 = handle_drink &151a 65 61 73 f4 02 01 ; &3b : "east" &02 &01 &257f = handle_east &1520 65 6e 74 65 f2 0a 01 ; &3c : "enter" &0a &01 &25a7 = handle_in &1527 65 76 65 72 79 74 68 69 6e e7 00 07 ; &3d : "everything" &00 &07 &1533 65 78 61 6d 69 6e e5 12 80 ; &3e : "examine" &12 &80 &2618 = handle_examine &153c 65 78 63 65 70 f4 00 08 ; &3f : "except" &00 &08 &1544 65 6d 70 74 f9 1d 00 ; &40 : "empty" &1d &00 &2d89 = handle_empty &154b 65 78 74 72 61 63 f4 2f 00 ; &41 : "extract" &2f &00 &33d5 = handle_pull &1554 65 78 74 69 6e 67 75 69 73 e8 1c 00 ; &42 : "extinguish" &1c &00 &36d6 = handle_extinguish &1560 65 78 74 69 6e 67 75 69 73 68 65 f2 2d 03 ; &43 : "extinguisher" &2d &03 &156e 66 6f f2 00 06 ; &44 : "for" &00 &06 &1573 66 6f 72 6b 65 e4 01 0a ; &45 : "forked" &01 &0a &157b 66 72 6f ed 00 06 ; &46 : "from" &00 &06 &1581 66 61 63 e5 09 03 ; &47 : "face" &09 &03 &1587 66 65 6c 69 6e e5 03 04 ; &48 : "feline" &03 &04 &158f 66 6c 69 6e e7 30 80 ; &49 : "fling" &30 &80 &33f3 = handle_throw &1596 66 69 72 e5 33 00 ; &4a : "fire" &33 &00 &3518 = handle_fire &159c 66 6c 75 69 e4 07 04 ; &4b : "fluid" &07 &04 &15a3 66 69 6c ec 39 00 ; &4c : "fill" &39 &00 &360b = handle_fill &15a9 66 6c 6f 77 65 f2 28 03 ; &4d : "flower" &28 &03 &15b1 66 69 72 65 70 6c 61 63 e5 29 03 ; &4e : "fireplace" &29 &03 &15bc 67 65 f4 14 80 ; &4f : "get" &14 &80 &27fd = handle_get &15c1 67 61 7a e5 0d 00 ; &50 : "gaze" &0d &00 &22ad = handle_look &15c7 67 ef 17 00 ; &51 : "go" &17 &00 &224a = handle_go &15cb 67 72 65 65 ee 06 0a ; &52 : "green" &06 &0a &15d2 67 72 61 74 e5 29 03 ; &53 : "grate" &29 &03 &15d9 68 6f 6c e4 14 80 ; &54 : "hold" &14 &80 &27fd = handle_get &15df 68 65 6c f0 1a 00 ; &55 : "help" &1a &00 &22a5 = handle_help &15e5 68 61 6e 64 f3 09 03 ; &56 : "hands" &09 &03 &15ec 68 6f 6c e5 02 03 ; &57 : "hole" &02 &03 &15f2 68 65 61 e4 0a 03 ; &58 : "head" &0a &03 &15f8 68 6f 6f eb 1a 03 ; &59 : "hook" &1a &03 &15fe 68 61 6d 6d 65 f2 17 03 ; &5a : "hammer" &17 &03 &1606 68 61 6e e7 1b 00 ; &5b : "hang" &1b &00 &29dc = handle_put &160c 68 75 72 ec 30 80 ; &5c : "hurl" &30 &80 &33f3 = handle_throw &1612 68 32 ef 07 04 ; &5d : "h2o" &07 &04 &1617 68 65 61 72 74 e8 29 03 ; &5e : "hearth" &29 &03 &161f 69 6e 74 ef 0a 01 ; &5f : "into" &0a &01 &25a7 = handle_in &1625 69 f4 00 05 ; &60 : "it" &00 &05 &1629 69 6e 76 65 6e 74 6f 72 f9 0e 00 ; &61 : "inventory" &0e &00 &25d2 = handle_inventory &1634 69 6e 73 70 65 63 f4 12 80 ; &62 : "inspect" &12 &80 &2618 = handle_examine &163d 69 6e 73 65 72 f4 1b 80 ; &63 : "insert" &1b &80 &29dc = handle_put &1645 6a 75 6d f0 1e 00 ; &64 : "jump" &1e &00 &2e06 = handle_jump &164b 6a 61 f2 1d 03 ; &65 : "jar" &1d &03 &1650 6b 6e 6f 63 eb 24 00 ; &66 : "knock" &24 &00 &2d76 = handle_push &1657 6b 65 79 f3 02 0b ; &67 : "keys" &02 &0b &165d 6b 69 6c ec 3e 00 ; &68 : "kill" &3e &00 &37d0 = handle_attack &1663 6c 6f 6f eb 0d 00 ; &69 : "look" &0d &00 &22ad = handle_look &1669 6c 69 73 f4 0e 00 ; &6a : "list" &0e &00 &25d2 = handle_inventory &166f 6c 69 66 f4 14 80 ; &6b : "lift" &14 &80 &27fd = handle_get &1675 6c 69 6e eb 1b 80 ; &6c : "link" &1b &80 &29dc = handle_put &167b 6c 65 61 f0 1e 00 ; &6d : "leap" &1e &00 &2e06 = handle_jump &1681 6c 6f 61 e4 19 00 ; &6e : "load" &19 &00 &29d5 = handle_restore &1687 6c 69 e4 05 03 ; &6f : "lid" &05 &03 &168c 6c 61 72 67 e5 03 0a ; &70 : "large" &03 &0a &1693 6c 69 74 74 6c e5 02 0a ; &71 : "little" &02 &0a &169b 6c 69 e5 22 00 ; &72 : "lie" &22 &00 &2fec = handle_stand &16a0 6c 6f 63 eb 2a 80 ; &73 : "lock" &2a &80 &3229 = handle_close &16a6 6c 65 76 65 f2 2f 00 ; &74 : "lever" &2f &00 &33d5 = handle_pull &16ad 6c 69 7a 61 72 e4 04 04 ; &75 : "lizard" &04 &04 &16b5 6c 69 71 75 69 e4 07 04 ; &76 : "liquid" &07 &04 &16bd 6c 69 6f ee 27 03 ; &77 : "lion" &27 &03 &16c3 6c 69 67 68 74 68 6f 75 73 e5 32 03 ; &78 : "lighthouse" &32 &03 &16cf 6c 61 6d f0 2a 03 ; &79 : "lamp" &2a &03 &16d5 6d 6f 76 e5 17 00 ; &7a : "move" &17 &00 &224a = handle_go &16db 6d 6f 6e 6f 63 68 72 6f 6d e5 10 02 ; &7b : "monochrome" &10 &02 &2290 = handle_monochrome &16e7 6d 6f 75 6e f4 22 80 ; &7c : "mount" &22 &80 &2fec = handle_stand &16ee 6d 69 64 64 6c e5 0b 03 ; &7d : "middle" &0b &03 &16f6 6d 61 74 74 72 65 73 f3 19 03 ; &7e : "mattress" &19 &03 &1700 6d 61 6b e5 31 00 ; &7f : "make" &31 &00 &3487 = handle_make &1706 6d 6f 6e 6b 65 f9 06 04 ; &80 : "monkey" &06 &04 &170e 6d 61 f0 1e 03 ; &81 : "map" &1e &03 &1713 6d 61 67 6e 69 66 69 65 f2 26 03 ; &82 : "magnifier" &26 &03 &171e 6d 61 67 6e 69 66 79 69 6e e7 26 03 ; &83 : "magnifying" &26 &03 &172a 6d 61 6e 74 6c 65 70 69 65 63 e5 29 03 ; &84 : "mantlepiece" &29 &03 &1737 6e 6f 72 74 e8 00 01 ; &85 : "north" &00 &01 &252c = handle_north &173e 6e 6f 72 74 68 65 61 73 f4 04 01 ; &86 : "northeast" &04 &01 &2589 = handle_northeast &1749 6e e5 04 01 ; &87 : "ne" &04 &01 &2589 = handle_northeast &174d 6e 6f 72 74 68 77 65 73 f4 05 01 ; &88 : "northwest" &05 &01 &258e = handle_northwest &1758 6e f7 05 01 ; &89 : "nw" &05 &01 &258e = handle_northwest &175c 6e 61 69 6c f3 1c 03 ; &8a : "nails" &1c &03 &1763 6e 6f 76 65 ec 23 03 ; &8b : "novel" &23 &03 &176a 6f 75 f4 0b 01 ; &8c : "out" &0b &01 &25ac = handle_out &176f 6f e7 38 02 ; &8d : "og" &38 &02 &35f4 = handle_oops &1773 6f 6f 70 f3 38 02 ; &8e : "oops" &38 &02 &35f4 = handle_oops &1779 6f ee 12 04 ; &8f : "on" &12 &04 &177d 6f 66 e6 13 04 ; &90 : "off" &13 &04 &1782 6f 6e 65 f3 00 0c ; &91 : "ones" &00 &0c &1788 6f 76 65 f2 00 06 ; &92 : "over" &00 &06 &178e 6f 70 65 ee 2b 80 ; &93 : "open" &2b &80 &3231 = handle_open &1794 6f 76 65 72 61 6c 6c f3 25 03 ; &94 : "overalls" &25 &03 &179e 70 61 75 73 e5 0c 00 ; &95 : "pause" &0c &00 &223b = handle_wait &17a5 70 69 63 eb 14 80 ; &96 : "pick" &14 &80 &27fd = handle_get &17ab 70 75 f4 1b 80 ; &97 : "put" &1b &80 &29dc = handle_put &17b0 70 6c 61 63 e5 1b 80 ; &98 : "place" &1b &80 &29dc = handle_put &17b7 70 6c 75 e7 1b 00 ; &99 : "plug" &1b &00 &29dc = handle_put &17bd 70 6f 6b e5 1b 00 ; &9a : "poke" &1b &00 &29dc = handle_put &17c3 70 75 73 e8 24 00 ; &9b : "push" &24 &00 &2d76 = handle_push &17c9 70 6f 69 6e 74 65 e4 00 0a ; &9c : "pointed" &00 &0a &17d2 70 6c 61 6e eb 16 03 ; &9d : "plank" &16 &03 &17d9 70 75 6d e1 03 04 ; &9e : "puma" &03 &04 &17df 70 72 6f 64 75 63 e5 31 00 ; &9f : "produce" &31 &00 &3487 = handle_make &17e8 70 75 6c ec 2f 00 ; &a0 : "pull" &2f &00 &33d5 = handle_pull &17ee 70 6f 75 f2 3a 00 ; &a1 : "pour" &3a &00 &2de4 = handle_pour &17f4 70 75 72 70 6c e5 07 0a ; &a2 : "purple" &07 &0a &17fc 70 6f 77 65 72 6d 61 74 69 e3 2c 03 ; &a3 : "powermatic" &2c &03 &1808 70 72 65 73 f3 2c 00 ; &a4 : "press" &2c &00 &370a = handle_press &180f 71 75 69 f4 16 02 ; &a5 : "quit" &16 &02 &225a = handle_quit &1815 71 75 69 63 6b 73 61 6e e4 18 03 ; &a6 : "quicksand" &18 &03 &1820 72 65 6d 6f 76 e5 14 80 ; &a7 : "remove" &14 &80 &27fd = handle_get &1828 72 65 73 74 6f 72 e5 19 00 ; &a8 : "restore" &19 &00 &29d5 = handle_restore &1831 72 65 63 61 6c ec 23 00 ; &a9 : "recall" &23 &00 &3047 = handle_remember &1839 72 65 6d 65 6d 62 65 f2 23 00 ; &aa : "remember" &23 &00 &3047 = handle_remember &1843 72 65 70 74 69 6c e5 04 04 ; &ab : "reptile" &04 &04 &184c 72 65 70 74 69 6c 69 61 ee 04 04 ; &ac : "reptilian" &04 &04 &1857 72 65 61 e4 37 80 ; &ad : "read" &37 &80 &2cea = handle_read &185d 72 65 e4 04 0a ; &ae : "red" &04 &0a &1862 72 6f 63 eb 05 0b ; &af : "rock" &05 &0b &1868 72 6f 6c ec 3c 00 ; &b0 : "roll" &3c &00 &369b = handle_roll &186e 72 6f 73 e5 28 03 ; &b1 : "rose" &28 &03 &1874 72 61 64 69 6f 67 72 61 6d 6d e5 33 03 ; &b2 : "radiogramme" &33 &03 &1881 73 6f 75 74 e8 01 01 ; &b3 : "south" &01 &01 &257a = handle_south &1888 73 6f 75 74 68 65 61 73 f4 06 01 ; &b4 : "southeast" &06 &01 &2593 = handle_southeast &1893 73 e5 06 01 ; &b5 : "se" &06 &01 &2593 = handle_southeast &1897 73 6f 75 74 68 77 65 73 f4 07 01 ; &b6 : "southwest" &07 &01 &2598 = handle_southwest &18a2 73 f7 07 01 ; &b7 : "sw" &07 &01 &2598 = handle_southwest &18a6 73 77 69 ed 25 00 ; &b8 : "swim" &25 &00 &2def = handle_swim &18ac 73 74 61 72 e5 0d 00 ; &b9 : "stare" &0d &00 &22ad = handle_look &18b3 73 74 61 6e e4 22 80 ; &ba : "stand" &22 &80 &2fec = handle_stand &18ba 73 61 76 e5 18 02 ; &bb : "save" &18 &02 &29ad = handle_save &18c0 73 74 69 63 eb 1b 00 ; &bc : "stick" &1b &00 &29dc = handle_put &18c7 73 65 76 65 f2 26 00 ; &bd : "sever" &26 &00 &3067 = handle_cut &18ce 73 77 69 6e e7 28 00 ; &be : "swing" &28 &00 &3164 = handle_swing &18d5 73 75 69 f4 08 03 ; &bf : "suit" &08 &03 &18db 73 6d 61 6c ec 02 0a ; &c0 : "small" &02 &0a &18e2 73 68 75 f4 2a 00 ; &c1 : "shut" &2a &00 &3229 = handle_close &18e8 73 74 6f 6e e5 15 03 ; &c2 : "stone" &15 &03 &18ef 73 63 72 65 f7 1b 80 ; &c3 : "screw" &1b &80 &29dc = handle_put &18f6 73 68 61 70 65 e4 01 0a ; &c4 : "shaped" &01 &0a &18fe 73 65 61 72 63 e8 2d 00 ; &c5 : "search" &2d &00 &2ca4 = handle_search &1906 73 65 65 eb 2d 00 ; &c6 : "seek" &2d &00 &2ca4 = handle_search &190c 73 68 6f 6f f4 33 00 ; &c7 : "shoot" &33 &00 &3518 = handle_fire &1913 73 6c 69 6e e7 33 00 ; &c8 : "sling" &33 &00 &3518 = handle_fire &191a 73 70 72 69 6e e7 1e 00 ; &c9 : "spring" &1e &00 &2e06 = handle_jump &1922 73 61 63 eb 34 03 ; &ca : "sack" &34 &03 &1928 73 61 76 6f 75 f2 3b 00 ; &cb : "savour" &3b &00 &3656 = handle_drink &1930 73 77 69 74 63 e8 3d 00 ; &cc : "switch" &3d &00 &377c = handle_turn &1938 74 68 e5 00 06 ; &cd : "the" &00 &06 &193d 74 ef 00 06 ; &ce : "to" &00 &06 &1941 74 68 65 ed 00 05 ; &cf : "them" &00 &05 &1947 74 68 65 ee 00 09 ; &d0 : "then" &00 &09 &194d 74 68 72 6f f7 30 80 ; &d1 : "throw" &30 &80 &33f3 = handle_throw &1954 74 61 6b e5 14 80 ; &d2 : "take" &14 &80 &27fd = handle_get &195a 74 72 61 76 65 ec 17 00 ; &d3 : "travel" &17 &00 &224a = handle_go &1962 74 69 e5 20 00 ; &d4 : "tie" &20 &00 &3199 = handle_tie &1967 74 77 69 67 f3 00 0b ; &d5 : "twigs" &00 &0b &196e 74 68 69 6e eb 23 00 ; &d6 : "think" &23 &00 &3047 = handle_remember &1975 74 69 f0 24 00 ; &d7 : "tip" &24 &00 &2d76 = handle_push &197a 74 6f 70 70 6c e5 24 00 ; &d8 : "topple" &24 &00 &2d76 = handle_push &1982 74 69 ee 00 03 ; &d9 : "tin" &00 &03 &1987 74 72 65 65 f3 1b 03 ; &da : "trees" &1b &03 &198e 74 6f 72 63 e8 2a 03 ; &db : "torch" &2a &03 &1995 74 6f f9 0a 0a ; &dc : "toy" &0a &0a &199a 74 61 62 6c e5 37 03 ; &dd : "table" &37 &03 &19a1 74 6f 6e 67 75 e5 27 03 ; &de : "tongue" &27 &03 &19a9 74 72 61 70 64 6f 6f f2 01 04 ; &df : "trapdoor" &01 &04 &19b3 74 75 72 ee 3d 00 ; &e0 : "turn" &3d &00 &377c = handle_turn &19b9 75 f0 08 01 ; &e1 : "up" &08 &01 &259d = handle_up &19bd 75 73 69 6e e7 00 0d ; &e2 : "using" &00 &0d &19c4 75 74 69 6c 69 73 69 6e e7 00 0d ; &e3 : "utilising" &00 &0d &19cf 75 6e 74 69 e5 21 00 ; &e4 : "untie" &21 &00 &31fd = handle_untie &19d6 75 6e 69 66 6f 72 ed 07 03 ; &e5 : "uniform" &07 &03 &19df 75 6e 73 63 72 65 f7 14 00 ; &e6 : "unscrew" &14 &00 &27fd = handle_get &19e8 75 6e 6c 6f 63 eb 2b 00 ; &e7 : "unlock" &2b &00 &3231 = handle_open &19f0 76 69 6e e5 06 03 ; &e8 : "vine" &06 &03 &19f6 76 6f 6c 75 6d e5 04 0b ; &e9 : "volume" &04 &0b &19fe 77 65 73 f4 03 01 ; &ea : "west" &03 &01 &2584 = handle_west &1a04 77 69 74 e8 00 0d ; &eb : "with" &00 &0d &1a0a 77 61 69 f4 0c 00 ; &ec : "wait" &0c &00 &223b = handle_wait &1a10 77 65 61 f2 15 80 ; &ed : "wear" &15 &80 &28eb = handle_wear &1a16 77 61 6c ec 00 04 ; &ee : "wall" &00 &04 &1a1c 77 61 69 73 f4 0b 03 ; &ef : "waist" &0b &03 &1a23 77 68 65 72 e5 34 80 ; &f0 : "where" &34 &80 &3590 = handle_where &1a2a 77 68 ef 35 00 ; &f1 : "who" &35 &00 &35e0 = handle_who &1a2f 77 68 61 f4 36 00 ; &f2 : "what" &36 &00 &35b3 = handle_what &1a35 77 61 74 65 f2 07 04 ; &f3 : "water" &07 &04 &1a3c 77 69 72 65 6c 65 73 f3 33 03 ; &f4 : "wireless" &33 &03 &1a46 79 a0 01 0a ; &f5 : "y " &01 &0a &1a4a 79 65 6c 6c 6f f7 05 0a ; &f6 : "yellow" &05 &0a &1a52 ff ; verb_handler_addresses_low_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1a53 2c 7a 7f 84 89 8e 93 98 9d a2 a7 ac 3b ad d2 57 ; &00 &1a63 90 a0 18 da fd eb 5a 4a ad d5 a5 dc d6 89 06 44 ; &10 &1a73 99 fd ec 47 76 ef 67 d6 64 68 29 31 0a a4 ad d5 ; &20 &1a83 f3 87 f7 18 90 e0 b3 ea f4 0b e4 56 9b 7c d0 ; &30 ; verb_handler_addresses_high_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &1a92 25 25 25 25 25 25 25 25 25 25 25 25 22 22 25 63 ; &00 &1aa2 22 22 26 26 27 28 22 22 29 29 22 29 36 2d 2e 2f ; &10 &1ab2 31 31 2f 30 2d 2d 30 30 31 1b 32 32 37 2c 30 33 ; &20 &1ac2 33 34 34 35 35 35 35 2c 35 36 2d 36 36 37 37 ; &30 ; disambiguation_table &1ad1 00 04 ; &00 (ADJECTIVE_POINTED) AMBIGUOUS_TWIGS, OBJECT_POINTED_TWIG &1ad3 08 27 ; AMBIGUOUS_CARVINGS, OBJECT_CARVED_LION # "POINTED CARVING" = "LION" &1ad5 00 0c ; &01 (ADJECTIVE_FORKED) AMBIGUOUS_TWIGS, OBJECT_FORKED_TWIG &1ad7 08 28 ; AMBIGUOUS_CARVINGS, OBJECT_CARVED_ROSE # "FORKED CARVING" = "ROSE" &1ad9 01 0f ; &02 (ADJECTIVE_SMALL) AMBIGUOUS_CHESTS, OBJECT_SMALL_CHEST &1adb 02 11 ; AMBIGUOUS_KEYS, OBJECT_SMALL_KEY &1add 01 10 ; &03 (ADJECTIVE_LARGE) AMBIGUOUS_CHESTS, OBJECT_LARGE_CHEST &1adf 02 12 ; AMBIGUOUS_KEYS, OBJECT_LARGE_KEY &1ae1 04 1f ; &04 (ADJECTIVE_RED) AMBIGUOUS_BOOK, OBJECT_RED_BOOK &1ae3 06 2e ; AMBIGUOUS_BUTTONS, OBJECT_RED_BUTTON &1ae5 04 20 ; &05 (ADJECTIVE_YELLOW) AMBIGUOUS_BOOK, OBJECT_YELLOW_BOOK &1ae7 06 2f ; AMBIGUOUS_BUTTONS, OBJECT_YELLOW_BUTTON &1ae9 04 21 ; &06 (ADJECTIVE_GREEN) AMBIGUOUS_BOOK, OBJECT_GREEN_BOOK &1aeb 06 30 ; AMBIGUOUS_BUTTONS, OBJECT_GREEN_BUTTON &1aed 04 22 ; &07 (ADJECTIVE_PURPLE) AMBIGUOUS_BOOK, OBJECT_PURPLE_BOOK &1aef 05 24 ; AMBIGUOUS_ROCK, OBJECT_BOULDER # "PURPLE ROCK" = "BOULDER" &1af1 04 23 ; &08 (ADJECTIVE_BLUE) AMBIGUOUS_BOOK, OBJECT_BLUE_BOOK &1af3 05 15 ; AMBIGUOUS_ROCK, OBJECT_STONE # "BLUE ROCK" = "STONE" &1af5 07 35 ; &09 (ADJECTIVE_CARDBOARD) AMBIGUOUS_BOXES, OBJECT_CARDBOARD_BOX &1af7 ff ff ; &1af9 07 36 ; &0a (ADJECTIVE_TOY) AMBIGUOUS_BOXES, OBJECT_TOY_BOX &1afb ff ff ; ; adjective_value &1afd 00 ; tmp_y &1afe 00 ; tmp_x &1aff 00 ; disambiguate_adjective_and_noun &1b00 8c fe 1a STY &1afe ; tmp_y &1b03 8e ff 1a STX &1aff ; tmp_x &1b06 c0 00 CPY #&00 &1b08 d0 0a BNE &1b14 ; not_first_word_in_sentence ; leave_with_type &1b0a ac fe 1a LDY &1afe ; tmp_y &1b0d ae ff 1a LDX &1aff ; tmp_x &1b10 b9 61 07 LDA &0761,Y ; tokenised_words_type &1b13 60 RTS ; not_first_word_in_sentence &1b14 b9 60 07 LDA &0760,Y ; tokenised_words_value &1b17 8d fd 1a STA &1afd ; ambiguous_noun_value &1b1a b9 5f 07 LDA &075f,Y ; tokenised_words_type - 2 &1b1d c9 0a CMP #&0a ; WORD_ADJECTIVE &1b1f d0 e9 BNE &1b0a ; leave_with_type &1b21 b9 5e 07 LDA &075e,Y ; tokenised_words_value - 2 &1b24 0a ASL A &1b25 0a ASL A &1b26 a8 TAY &1b27 a2 04 LDX #&04 ; find_ambiguous_noun_loop &1b29 b9 d1 1a LDA &1ad1,Y ; disambiguation_table &1b2c cd fd 1a CMP &1afd ; ambiguous_noun_value &1b2f f0 07 BEQ &1b38 ; ambiguous_noun_matches &1b31 c8 INY &1b32 c8 INY &1b33 ca DEX &1b34 d0 f3 BNE &1b29 ; find_ambiguous_noun_loop &1b36 f0 d2 BEQ &1b0a ; leave_with_type ; ambiguous_noun_matches &1b38 b9 d2 1a LDA &1ad2,Y ; disambiguation_table + 1 &1b3b ac fe 1a LDY &1afe ; tmp_y &1b3e 99 5e 07 STA &075e,Y ; tokenised_words_value - 2 &1b41 a9 03 LDA #&03 ; WORD_OBJECT &1b43 99 5f 07 STA &075f,Y ; tokenised_words_type - 2 &1b46 a9 06 LDA #&06 ; WORD_TRAILING_ADJECTIVE &1b48 99 60 07 STA &0760,Y ; tokenised_words_value &1b4b 99 61 07 STA &0761,Y ; tokenised_words_type &1b4e ce ff 1a DEC &1aff ; tmp_x &1b51 ce fe 1a DEC &1afe ; tmp_y &1b54 ce fe 1a DEC &1afe ; tmp_y &1b57 18 CLC &1b58 90 b0 BCC &1b0a ; leave_with_type # Always branches ; verbs_accepted_while_not_remembering_length &1b5a 0d ; verbs_accepted_while_not_remembering &1b5b 0d ; VERB_LOOK &1b5c 0f ; VERB_CLS &1b5d 10 ; VERB_MONOCHROME &1b5e 11 ; VERB_COLOUR &1b5f 0e ; VERB_INVENTORY &1b60 38 ; VERB_OOPS &1b61 16 : VERB_QUIT &1b62 18 ; VERB_SAVE &1b63 19 : VERB_RESTORE &1b64 1a ; VERB_HELP &1b65 23 ; VERB_REMEMBER &1b66 12 ; VERB_EXAMINE &1b67 0c ; VERB_WAIT ; look_string_id &1b68 3c ; string_03c : "gazing around, you see that you are " ; has_previous_input &1b69 00 ; use_previous_input &1b6a 00 ; incomprehension_string_ids &1b6b 04 ; string_004 : "I don't understand you! " &1b6c 05 ; string_005 : "That only flummoxed me! " &1b6d 06 ; string_006 : "Strange! " ; check_for_scrolling_protecting_registers &1b6e 48 PHA &1b6f 8a TXA &1b70 48 PHA &1b71 98 TYA &1b72 48 PHA &1b73 20 c8 61 JSR &61c8 ; check_for_scrolling &1b76 68 PLA &1b77 a8 TAY &1b78 68 PLA &1b79 aa TAX &1b7a 68 PLA &1b7b 60 RTS ; use_uppercase &1b7c 48 PHA &1b7d a9 9b LDA #&9b ; OFFSET_UPPERCASE ; set_case &1b7f 8d fa 5f STA &5ffa ; letter_byte_offset &1b82 68 PLA &1b83 60 RTS ; use_lowercase &1b84 48 PHA &1b85 a9 7b LDA #&7b ; OFFSET_LOWERCASE &1b87 18 CLC &1b88 90 f5 BCC &1b7f ; set_case ; write_lowercase_string_at_address # Unused code &1b8a 20 84 1b JSR &1b84 ; use_lowercase &1b8d 4c 7a 62 JMP &627a ; write_string_at_address ; write_lowercase_string_at_address_and_newline &1b90 20 84 1b JSR &1b84 ; use_lowercase &1b93 4c 0d 63 JMP &630d ; write_string_at_address_and_newline ; get_input &1b96 85 7f STA &7f ; maximum_length &1b98 86 6a STX &6a ; buffer_address_low &1b9a 84 6b STY &6b ; buffer_address_high &1b9c a0 00 LDY #&00 ; get_input_loop &1b9e 20 ca 62 JSR &62ca ; read_character &1ba1 c9 0d CMP #&0d ; CR &1ba3 f0 58 BEQ &1bfd ; is_return &1ba5 c9 20 CMP #&20 ; " " &1ba7 f0 59 BEQ &1c02 ; add_separator_to_input &1ba9 c9 09 CMP #&09 ; TAB &1bab f0 77 BEQ &1c24 ; use_previous_input &1bad c9 2c CMP #&2c ; "," &1baf f0 51 BEQ &1c02 ; add_separator_to_input &1bb1 c9 2e CMP #&2e ; "." &1bb3 f0 4d BEQ &1c02 ; add_separator_to_input &1bb5 c9 30 CMP #&30 ; "0" &1bb7 90 e5 BCC &1b9e ; get_input_loop &1bb9 c9 3a CMP #&3a ; "9" + 1 &1bbb 90 23 BCC &1be0 ; add_character_to_input &1bbd c9 41 CMP #&41 ; "A" &1bbf 90 dd BCC &1b9e ; get_input_loop &1bc1 c9 5b CMP #&5b ; "Z" + 1 &1bc3 90 1b BCC &1be0 ; add_character_to_input &1bc5 c9 61 CMP #&61 ; "a" &1bc7 90 d5 BCC &1b9e ; get_input_loop &1bc9 c9 7b CMP #&7b ; "z" + 1 &1bcb 90 13 BCC &1be0 ; add_character_to_input &1bcd c9 7f CMP #&7f ; DEL &1bcf d0 cd BNE &1b9e ; get_input_loop &1bd1 c0 00 CPY #&00 &1bd3 f0 c9 BEQ &1b9e ; get_input_loop &1bd5 20 ee ff JSR &ffee ; OSWRCH &1bd8 88 DEY &1bd9 a9 20 LDA #&20 ; " " &1bdb 91 6a STA (&6a),Y ; buffer_address &1bdd 4c 9e 1b JMP &1b9e ; get_input_loop ; add_character_to_input &1be0 c4 7f CPY &7f ; maximum_length &1be2 f0 ba BEQ &1b9e ; get_input_loop &1be4 20 ee ff JSR &ffee ; OSWRCH &1be7 c9 2c CMP #&2c ; "," &1be9 d0 02 BNE &1bed ; not_comma &1beb a9 2e LDA #&2e ; "." ; not_comma &1bed c9 41 CMP #&41 ; "A" &1bef 90 06 BCC &1bf7 ; skip_lowercasing &1bf1 c9 5b CMP #&5b ; "Z" + 1 &1bf3 b0 02 BCS &1bf7 ; skip_lowercasing &1bf5 09 20 ORA #&20 ; skip_lowercasing &1bf7 91 6a STA (&6a),Y ; buffer_address &1bf9 c8 INY ; to_get_input_loop &1bfa 4c 9e 1b JMP &1b9e ; get_input_loop ; is_return &1bfd 91 6a STA (&6a),Y ; buffer_address &1bff 4c e3 ff JMP &ffe3 ; OSASCI ; add_separator_to_input &1c02 c0 00 CPY #&00 &1c04 f0 f4 BEQ &1bfa ; to_get_input_loop &1c06 85 7e STA &7e ; separator &1c08 88 DEY &1c09 b1 6a LDA (&6a),Y ; buffer_address &1c0b c8 INY &1c0c c9 20 CMP #&20 ; " " &1c0e f0 09 BEQ &1c19 ; replace_separator &1c10 c9 2e CMP #&2e ; "." &1c12 f0 05 BEQ &1c19 ; replace_separator &1c14 a5 7e LDA &7e ; separator &1c16 4c e0 1b JMP &1be0 ; add_character_to_input ; replace_separator &1c19 a9 7f LDA #&7f ; DEL &1c1b 20 ee ff JSR &ffee ; OSWRCH &1c1e a5 7e LDA &7e ; separator &1c20 88 DEY &1c21 4c e0 1b JMP &1be0 ; add_character_to_input ; use_previous_input &1c24 c0 00 CPY #&00 &1c26 d0 d2 BNE &1bfa ; to_get_input_loop &1c28 a5 7d LDA &7d ; allow_previous_input # Zero if previous input can be used &1c2a d0 ce BNE &1bfa ; to_get_input_loop &1c2c a9 2a LDA #&2a ; "*" &1c2e 91 6a STA (&6a),Y ; buffer_address &1c30 a9 0d LDA #&0d ; CR &1c32 c8 INY &1c33 91 6a STA (&6a),Y ; buffer_address &1c35 98 TYA &1c36 48 PHA &1c37 a2 03 LDX #&03 ; string_003 : "Again" &1c39 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline &1c3c 68 PLA &1c3d a8 TAY &1c3e 60 RTS ; prompt_for_input &1c3f a9 3e LDA #&3e ; ">" &1c41 20 ee ff JSR &ffee ; OSWRCH &1c44 a9 00 LDA #&00 &1c46 85 7d STA &7d ; allow_previous_input &1c48 85 6e STA &6e ; current_word &1c4a a9 4e LDA #&4e ; 78 characters maximum &1c4c a0 07 LDY #&07 ; &0700 = input_buffer &1c4e a2 00 LDX #&00 &1c50 20 96 1b JSR &1b96 ; get_input &1c53 c0 00 CPY #&00 &1c55 f0 e8 BEQ &1c3f ; prompt_for_input &1c57 84 63 STY &63 ; input_length &1c59 ad 00 07 LDA &0700 ; input_buffer &1c5c c9 2a CMP #&2a ; "*" &1c5e d0 0b BNE &1c6b ; not_previous ; is_previous &1c60 ad 69 1b LDA &1b69 ; has_previous_input &1c63 d0 06 BNE &1c6b ; not_previous &1c65 a9 01 LDA #&01 &1c67 8d 6a 1b STA &1b6a ; use_previous_input &1c6a 60 RTS ; not_previous &1c6b a9 00 LDA #&00 &1c6d 8d 6a 1b STA &1b6a ; use_previous_input &1c70 8d 69 1b STA &1b69 ; has_previous_input &1c73 60 RTS ; tokenise_input &1c74 a2 00 LDX #&00 &1c76 86 62 STX &62 ; number_of_words ; tokenise_words_loop &1c78 bd 00 07 LDA &0700,X ; input_buffer &1c7b 85 64 STA &64 ; character &1c7d a9 74 LDA #&74 ; &1374 = vocabulary &1c7f 85 60 STA &60 ; vocabulary_address_low &1c81 a9 13 LDA #&13 &1c83 85 61 STA &61 ; vocabulary_address_high ; check_input_word_against_vocabulary_loop &1c85 a0 00 LDY #&00 &1c87 b1 60 LDA (&60),Y ; vocabulary_address &1c89 c9 ff CMP #&ff # &ff marks end of vocabulary list &1c8b f0 19 BEQ &1ca6 ; unmatched_input_word &1c8d c5 64 CMP &64 ; character &1c8f f0 38 BEQ &1cc9 ; first_character_matches ; move_to_next_vocabulary_word &1c91 c8 INY &1c92 b1 60 LDA (&60),Y ; vocabulary_address &1c94 10 fb BPL &1c91 ; move_to_next_vocabulary_word &1c96 c8 INY &1c97 c8 INY &1c98 c8 INY &1c99 18 CLC &1c9a 98 TYA &1c9b 65 60 ADC &60 ; vocabulary_address_low &1c9d 85 60 STA &60 ; vocabulary_address_low &1c9f 90 e4 BCC &1c85 ; check_input_word_against_vocabulary_loop &1ca1 e6 61 INC &61 ; vocabulary_address_high &1ca3 18 CLC &1ca4 90 df BCC &1c85 ; check_input_word_against_vocabulary_loop # Always branches ; unmatched_input_word &1ca6 48 PHA &1ca7 a5 62 LDA &62 ; number_of_words &1ca9 0a ASL A &1caa a8 TAY &1cab 68 PLA &1cac 99 60 07 STA &0760,Y ; tokenised_words_value &1caf 99 61 07 STA &0761,Y ; tokenised_words_type &1cb2 e6 62 INC &62 ; number_of_words ; move_to_end_of_input_word &1cb4 bd 00 07 LDA &0700,X ; input_buffer &1cb7 c9 2e CMP #&2e ; "." &1cb9 f0 0b BEQ &1cc6 ; to_end_of_input_sentence_without_word &1cbb 90 03 BCC &1cc0 ; consider_next_input_word &1cbd e8 INX &1cbe 10 f4 BPL &1cb4 ; move_to_end_of_input_word ; consider_next_input_word &1cc0 e8 INX &1cc1 e4 63 CPX &63 ; input_length &1cc3 90 b3 BCC &1c78 ; tokenise_words_loop &1cc5 60 RTS ; to_end_of_input_sentence_without_word &1cc6 4c 0e 1d JMP &1d0e ; end_of_input_sentence_without_word ; first_character_matches &1cc9 86 7e STX &7e ; input_offset ; consider_next_character_of_input_word &1ccb e8 INX &1ccc c8 INY &1ccd bd 00 07 LDA &0700,X ; input_buffer &1cd0 c9 0d CMP #&0d ; CR &1cd2 f0 31 BEQ &1d05 ; end_of_input_word &1cd4 c9 20 CMP #&20 ; " " &1cd6 f0 2d BEQ &1d05 ; end_of_input_word &1cd8 c9 2e CMP #&2e ; "." &1cda f0 2f BEQ &1d0b ; end_of_input_sentence &1cdc b1 60 LDA (&60),Y ; vocabulary_address &1cde 30 0c BMI &1cec ; end_of_vocabulary_word &1ce0 dd 00 07 CMP &0700,X ; input_buffer &1ce3 f0 e6 BEQ &1ccb ; consider_next_character_of_input_word ; input_and_vocabulary_word_failed_to_match &1ce5 a0 00 LDY #&00 &1ce7 a6 7e LDX &7e ; input_offset &1ce9 4c 91 1c JMP &1c91 ; move_to_next_vocabulary_word ; end_of_vocabulary_word &1cec 29 7f AND #&7f &1cee dd 00 07 CMP &0700,X ; input_buffer &1cf1 d0 f2 BNE &1ce5 ; input_and_vocabulary_word_failed_to_match &1cf3 e8 INX &1cf4 bd 00 07 LDA &0700,X ; input_buffer &1cf7 c9 0d CMP #&0d ; CR &1cf9 f0 0a BEQ &1d05 ; end_of_input_word &1cfb c9 20 CMP #&20 ; " " &1cfd f0 06 BEQ &1d05 ; end_of_input_word &1cff c9 2e CMP #&2e ; "." &1d01 f0 08 BEQ &1d0b ; end_of_input_sentence &1d03 d0 e0 BNE &1ce5 ; input_and_vocabulary_word_failed_to_match # Always branches ; end_of_input_word &1d05 20 1f 1d JSR &1d1f ; add_token_for_word ; to_consider_next_input_word &1d08 4c c0 1c JMP &1cc0 ; consider_next_input_word ; end_of_input_sentence &1d0b 20 1f 1d JSR &1d1f ; add_token_for_word ; end_of_input_sentence_without_word &1d0e a5 62 LDA &62 ; number_of_words &1d10 0a ASL A &1d11 a8 TAY &1d12 a9 09 LDA #&09 ; WORD_CONJUNCTION &1d14 99 60 07 STA &0760,Y ; tokenised_words_value &1d17 99 61 07 STA &0761,Y ; tokenised_words_type &1d1a e6 62 INC &62 ; number_of_words &1d1c 38 SEC &1d1d b0 e9 BCS &1d08 ; to_consider_next_input_word # Always branches ; add_token_for_word &1d1f b1 60 LDA (&60),Y ; vocabulary_address &1d21 30 04 BMI &1d27 ; found_end_of_vocabulary_word &1d23 c8 INY &1d24 18 CLC &1d25 90 f8 BCC &1d1f ; add_token_for_word ; found_end_of_vocabulary_word &1d27 c8 INY &1d28 86 66 STX &66 ; input_offset &1d2a a5 62 LDA &62 ; number_of_words &1d2c 0a ASL A &1d2d aa TAX &1d2e b1 60 LDA (&60),Y ; vocabulary_address &1d30 9d 60 07 STA &0760,X ; tokenised_words_value &1d33 c8 INY &1d34 b1 60 LDA (&60),Y ; vocabulary_address &1d36 9d 61 07 STA &0761,X ; tokenised_words_type &1d39 a6 66 LDX &66 ; input_offset &1d3b e6 62 INC &62 ; number_of_words &1d3d 60 RTS ; get_player_input_and_tokenise &1d3e 20 e7 ff JSR &ffe7 ; OSNEWL &1d41 20 10 20 JSR &2010 ; end_string_with_nothing &1d44 20 3f 1c JSR &1c3f ; prompt_for_input &1d47 ad 6a 1b LDA &1b6a ; use_previous_input &1d4a d0 03 BNE &1d4f ; skip_tokenisation &1d4c 20 74 1c JSR &1c74 ; tokenise_input ; skip_tokenisation &1d4f 20 e7 ff JSR &ffe7 ; OSNEWL &1d52 a2 00 LDX #&00 ; process_input_loop &1d54 ad 60 07 LDA &0760 ; tokenised_words_value &1d57 c9 ff CMP #&ff ; WORD_UNRECOGNISED &1d59 d0 06 BNE &1d61 ; is_valid_word &1d5b 20 fb 1d JSR &1dfb ; i_don't_understand_you &1d5e 18 CLC &1d5f 90 dd BCC &1d3e ; get_player_input_and_tokenise # Always branches ; is_valid_word &1d61 8a TXA &1d62 0a ASL A &1d63 a8 TAY &1d64 b9 61 07 LDA &0761,Y ; tokenised_words_type &1d67 c9 0a CMP #&0a ; WORD_ADJECTIVE &1d69 d0 20 BNE &1d8b ; not_adjective &1d6b e8 INX &1d6c e4 62 CPX &62 ; number_of_words &1d6e b0 12 BCS &1d82 ; adjective_is_final_word &1d70 b9 63 07 LDA &0763,Y ; tokenised_words_type + 2 &1d73 c9 0b CMP #&0b ; WORD_AMBIGUOUS_NOUN &1d75 f0 04 BEQ &1d7b ; is_ambiguous &1d77 c9 0c CMP #&0c ; WORD_ONES &1d79 d0 07 BNE &1d82 ; adjective_is_final_word ; is_ambiguous &1d7b ca DEX &1d7c b9 61 07 LDA &0761,Y ; tokenised_words_type &1d7f 18 CLC &1d80 90 09 BCC &1d8b ; not_adjective # Always branches ; adjective_is_final_word &1d82 ca DEX &1d83 a9 06 LDA #&06 ; WORD_TRAILING_ADJECTIVE &1d85 99 60 07 STA &0760,Y ; tokenised_words_value &1d88 99 61 07 STA &0761,Y ; tokenised_words_type ; not_adjective &1d8b c9 0b CMP #&0b ; WORD_AMBIGUOUS_NOUN &1d8d d0 0b BNE &1d9a ; not_ambiguous_noun &1d8f b9 60 07 LDA &0760,Y ; tokenised_words_value &1d92 85 8f STA &8f ; object_for_ones &1d94 b9 61 07 LDA &0761,Y ; tokenised_words_type &1d97 20 00 1b JSR &1b00 ; disambiguate_adjective_and_noun ; not_ambiguous_noun &1d9a c9 03 CMP #&03 ; WORD_OBJECT &1d9c d0 08 BNE &1da6 ; not_object &1d9e b9 60 07 LDA &0760,Y ; tokenised_words_value &1da1 85 8d STA &8d ; object_for_pronoun &1da3 b9 61 07 LDA &0761,Y ; tokenised_words_type ; not_object &1da6 c9 0c CMP #&0c ; WORD_ONES &1da8 d0 11 BNE &1dbb ; not_ones &1daa a5 8f LDA &8f ; object_for_ones &1dac 99 60 07 STA &0760,Y ; tokenised_words_value &1daf c9 ff CMP #&ff ; WORD_UNRECOGNISED &1db1 f0 17 BEQ &1dca ; set_tokenised_words_type &1db3 a9 0b LDA #&0b ; WORD_AMBIGUOUS_NOUN &1db5 99 61 07 STA &0761,Y ; tokenised_words_type &1db8 20 00 1b JSR &1b00 ; disambiguate_adjective_and_noun ; not_ones &1dbb c9 05 CMP #&05 ; WORD_PRONOUN &1dbd d0 0e BNE &1dcd ; not_pronoun &1dbf a5 8d LDA &8d ; object_for_pronoun &1dc1 99 60 07 STA &0760,Y ; tokenised_words_value &1dc4 c9 ff CMP #&ff ; OBJECT_UNKNOWN &1dc6 f0 02 BEQ &1dca ; set_tokenised_words_type &1dc8 a9 03 LDA #&03 ; WORD_OBJECT ; set_tokenised_words_type &1dca 99 61 07 STA &0761,Y ; tokenised_words_type ; not_pronoun &1dcd c9 ff CMP #&ff ; WORD_UNRECOGNISED &1dcf f0 09 BEQ &1dda ; remove_unrecognised_word &1dd1 e8 INX ; consider_next_word &1dd2 e4 62 CPX &62 ; number_of_words &1dd4 b0 03 BCS &1dd9 ; leave &1dd6 4c 54 1d JMP &1d54 ; process_input_loop ; leave &1dd9 60 RTS ; remove_unrecognised_word &1dda 86 66 STX &66 ; word ; remove_unrecognised_words_loop &1ddc e8 INX &1ddd e4 62 CPX &62 ; number_of_words &1ddf b0 12 BCS &1df3 ; finished_removing_unrecognised_word &1de1 8a TXA &1de2 0a ASL A &1de3 a8 TAY &1de4 b9 60 07 LDA &0760,Y ; tokenised_words_value &1de7 99 5e 07 STA &075e,Y ; tokenised_words_value - 2 &1dea b9 61 07 LDA &0761,Y ; tokenised_words_type &1ded 99 5f 07 STA &075f,Y ; tokenised_words_type - 2 &1df0 18 CLC &1df1 90 e9 BCC &1ddc ; remove_unrecognised_words_loop # Always branches ; finished_removing_unrecognised_word &1df3 a6 66 LDX &66 ; word &1df5 c6 62 DEC &62 ; number_of_words &1df7 18 CLC &1df8 90 d8 BCC &1dd2 ; consider_next_word # Always branches ; use_error_string &1dfa 00 ; i_don't_understand_you &1dfb a6 69 LDX &69 ; incomprehension_state &1dfd e0 03 CPX #&03 &1dff 90 04 BCC &1e05 ; skip_wraparound &1e01 a2 00 LDX #&00 &1e03 86 69 STX &69 ; incomprehension_state ; skip_wraparound &1e05 bd 6b 1b LDA &1b6b,X ; incomprehension_string_ids &1e08 48 PHA &1e09 e6 69 INC &69 ; incomprehension_state ; skip_remaining_words_and_consider_writing_error &1e0b a9 02 LDA #&02 ; WORD_SYSTEM_VERB &1e0d 85 8c STA &8c ; word_type &1e0f a9 00 LDA #&00 # Set to zero to write error string &1e11 8d fa 1d STA &1dfa ; use_error_string ; skip_remaining_words_loop &1e14 20 c3 1e JSR &1ec3 ; get_word # Returns carry clear if word found &1e17 90 fb BCC &1e14 ; skip_remaining_words_loop &1e19 a5 8a LDA &8a ; screen_height &1e1b 20 c3 62 JSR &62c3 ; set_lines_per_page_and_lines_remaining_before_scrolling &1e1e 68 PLA &1e1f aa TAX &1e20 ad 06 13 LDA &1306 ; player_is_remembering # Positive if player is remembering &1e23 10 0a BPL &1e2f ; skip_updates &1e25 20 fa 37 JSR &37fa ; update_world_after_action &1e28 a5 65 LDA &65 ; player_state &1e2a 10 ad BPL &1dd9 ; leave &1e2c 4c 00 22 JMP &2200 ; game_failed ; skip_updates &1e2f ad fa 1d LDA &1dfa ; use_error_string &1e32 30 a5 BMI &1dd9 ; leave &1e34 4c b6 1f JMP &1fb6 ; write_string_from_table_zero_and_newline ; please_give_more_information &1e37 a9 07 LDA #&07 ; string_007 : "Please give more information. " ; to_skip_remaining_words_and_consider_writing_error &1e39 48 PHA &1e3a 38 SEC &1e3b b0 ce BCS &1e0b ; skip_remaining_words_and_consider_writing_error # Always branches ; you_can't_do_that &1e3d a9 08 LDA #&08 ; string_008 : "You can't do that. " &1e3f 38 SEC &1e40 b0 f7 BCS &1e39 ; to_skip_remaining_words_and_consider_writing_error # Always branches ; with_what &1e42 a9 00 LDA #&00 ; string_000 : "With what? " &1e44 38 SEC &1e45 b0 f2 BCS &1e39 ; to_skip_remaining_words_and_consider_writing_error # Always branches ; please_specify &1e47 a9 23 LDA #&23 ; string_023 : "Please specify. " ; to_to_skip_remaining_words_and_consider_writing_error &1e49 38 SEC &1e4a b0 ed BCS &1e39 ; to_skip_remaining_words_and_consider_writing_error # Always branches ; tell_me_what_you_want_to_do_with_the_object &1e4c a2 ff LDX #&ff # Set to non-zero to suppress error string &1e4e 8e fa 1d STX &1dfa ; use_error_string &1e51 ae 06 13 LDX &1306 ; player_is_remembering # Negative if player is not remembering &1e54 30 f3 BMI &1e49 ; to_to_skip_remaining_words_and_consider_writing_error &1e56 a2 33 LDX #&33 ; string_33 : "Tell me what you want to do with the " &1e58 20 23 27 JSR &2723 ; write_string_and_object_A_with_scrolling &1e5b 48 PHA &1e5c 18 CLC &1e5d 90 b5 BCC &1e14 ; skip_remaining_words_loop # Always branches ; move_to_next_word &1e5f 18 CLC &1e60 e6 6e INC &6e ; current_word &1e62 a5 6e LDA &6e ; current_word &1e64 c5 62 CMP &62 ; number_of_words &1e66 b0 02 BCS &1e6a ; leave &1e68 0a ASL A &1e69 a8 TAY ; leave &1e6a 60 RTS ; restore_previous_current_word &1e6b a5 86 LDA &86 ; previous_current_word &1e6d 85 6e STA &6e ; current_word &1e6f 60 RTS ; word_type_to_get &1e70 00 ; ask_for_more_information &1e71 00 ; get_noun &1e72 a9 04 LDA #&04 ; WORD_NOUN ; get_word_of_type_A &1e74 8d 70 1e STA &1e70 ; word_type_to_get &1e77 a5 6e LDA &6e ; current_word &1e79 85 86 STA &86 ; previous_current_word &1e7b a9 00 LDA #&00 &1e7d 8d 71 1e STA &1e71 ; ask_for_more_information &1e80 2e 71 1e ROL &1e71 ; ask_for_more_information # Set to zero if carry clear, non-zero if carry set ; get_word_of_type_loop &1e83 20 5f 1e JSR &1e5f ; move_to_next_word # Returns carry set at end of input &1e86 b0 14 BCS &1e9c ; consider_asking_for_more_information &1e88 b9 61 07 LDA &0761,Y ; tokenised_words_type &1e8b 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &1e8d c9 09 CMP #&09 ; WORD_CONJUNCTION &1e8f f0 15 BEQ &1ea6 ; restore_previous_current_word_and_consider_asking_for_more_information &1e91 cd 70 1e CMP &1e70 ; word_type_to_get &1e94 d0 ed BNE &1e83 ; get_word_of_type_loop ; leave_with_next_word &1e96 aa TAX &1e97 b9 60 07 LDA &0760,Y ; tokenised_words_value &1e9a 18 CLC # Leave with carry clear to indicate word found &1e9b 60 RTS ; consider_asking_for_more_information &1e9c ad 71 1e LDA &1e71 ; ask_for_more_information &1e9f d0 03 BNE &1ea4 ; skip_please_give_more_information &1ea1 20 37 1e JSR &1e37 ; please_give_more_information ; skip_please_give_more_information &1ea4 38 SEC # Leave with carry set to indicate no word found &1ea5 60 RTS ; restore_previous_current_word_and_consider_asking_for_more_information &1ea6 20 6b 1e JSR &1e6b ; restore_previous_current_word &1ea9 18 CLC &1eaa 90 f0 BCC &1e9c ; consider_asking_for_more_information # Always branches ; get_word_or_ask_for_more_information # Leaves with X = word type, A = word_value &1eac a9 00 LDA #&00 # Zero to ask for more information on bad input ; set_ask_for_more_information &1eae 8d 71 1e STA &1e71 ; ask_for_more_information &1eb1 a5 6e LDA &6e ; current_word &1eb3 85 86 STA &86 ; previous_current_word ; skip_trailing_adjectives_loop &1eb5 20 5f 1e JSR &1e5f ; move_to_next_word # Returns carry set at end of input &1eb8 b0 e2 BCS &1e9c ; consider_asking_for_more_information &1eba b9 61 07 LDA &0761,Y ; tokenised_words_type &1ebd c9 06 CMP #&06 ; WORD_TRAILING_ADJECTIVE &1ebf f0 f4 BEQ &1eb5 ; skip_trailing_adjectives_loop &1ec1 d0 d3 BNE &1e96 ; leave_with_next_word # Always branches ; get_word &1ec3 a9 ff LDA #&ff # Non-zero to not ask for more information on bad input &1ec5 18 CLC &1ec6 90 e6 BCC &1eae ; set_ask_for_more_information # Always branches ; ask_to_specify &1ec8 00 ; ambiguous_noun_value &1ec9 00 ; disambiguation_table_offset &1eca 00 ; matched_at_least_one_object &1ecb 00 ; disambiguated_object &1ecc 00 ; number_of_objects_matched &1ecd 00 ; use_with_what &1ece 00 ; reset_get_object_variables &1ecf a9 00 LDA #&00 &1ed1 8d cd 1e STA &1ecd ; number_of_objects_matched &1ed4 8d c8 1e STA &1ec8 ; ask_to_specify &1ed7 8d cb 1e STA &1ecb ; matched_at_least_one_object &1eda 8d ce 1e STA &1ece ; use_with_what # Set to positive to use "with what?" &1edd 2e c8 1e ROL &1ec8 ; ask_to_specify # Set to zero if carry clear, non-zero if carry set &1ee0 60 RTS ; get_object_or_with_what &1ee1 48 PHA &1ee2 18 CLC # Carry clear to ask "with what?" on bad input &1ee3 20 cf 1e JSR &1ecf ; reset_get_object_variables &1ee6 68 PLA &1ee7 18 CLC &1ee8 90 3f BCC &1f29 ; is_ambiguous_noun # Always branches ; get_object &1eea 20 cf 1e JSR &1ecf ; reset_get_object_variables &1eed ce ce 1e DEC &1ece ; use_with_what # Set to negative to ask for more information &1ef0 18 CLC &1ef1 90 1f BCC &1f12 ; get_object_loop # Always branches ; get_with_object &1ef3 20 cf 1e JSR &1ecf ; reset_get_object_variables &1ef6 a9 0d LDA #&0d ; WORD_WITH &1ef8 38 SEC # Carry set to not ask for more information on bad input &1ef9 20 74 1e JSR &1e74 ; get_word_of_type_A &1efc 90 14 BCC &1f12 ; get_object_loop ; no_object_found &1efe ad c8 1e LDA &1ec8 ; ask_to_specify &1f01 d0 0d BNE &1f10 ; leave_with_carry_set &1f03 ad ce 1e LDA &1ece ; use_with_what &1f06 10 05 BPL &1f0d ; to_with_what &1f08 20 37 1e JSR &1e37 ; please_give_more_information &1f0b 38 SEC # Leave with carry set to indicate no object found &1f0c 60 RTS ; to_with_what &1f0d 20 42 1e JSR &1e42 : with_what ; leave_with_carry_set &1f10 38 SEC # Leave with carry set to indicate no object found &1f11 60 RTS ; get_object_loop &1f12 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &1f15 b0 e7 BCS &1efe ; no_object_found &1f17 e0 03 CPX #&03 ; WORD_OBJECT &1f19 f0 32 BEQ &1f4d ; is_object &1f1b e0 09 CPX #&09 ; WORD_CONJUNCTION &1f1d d0 06 BNE &1f25 ; not_end_of_sentence &1f1f 20 6b 1e JSR &1e6b ; restore_previous_current_word &1f22 18 CLC &1f23 90 d9 BCC &1efe ; no_object_found # Always branches ; not_end_of_sentence &1f25 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &1f27 d0 e9 BNE &1f12 ; get_object_loop ; is_ambiguous_noun &1f29 a2 00 LDX #&00 &1f2b 8d c9 1e STA &1ec9 ; ambiguous_noun_value ; check_for_ambiguous_noun_loop &1f2e bd d1 1a LDA &1ad1,X ; disambiguation_table &1f31 cd c9 1e CMP &1ec9 ; ambiguous_noun_value &1f34 f0 23 BEQ &1f59 ; matched_ambiguous_noun ; consider_next_ambiguous_noun &1f36 e8 INX &1f37 e8 INX &1f38 e0 2c CPX #&2c &1f3a 90 f2 BCC &1f2e ; check_for_ambiguous_noun_loop &1f3c ad cb 1e LDA &1ecb ; matched_at_least_one_object &1f3f 10 0e BPL &1f4f ; consider_asking_to_specify &1f41 ad cd 1e LDA &1ecd ; number_of_objects_matched &1f44 c9 02 CMP #&02 &1f46 b0 07 BCS &1f4f ; consider_asking_to_specify &1f48 ad cc 1e LDA &1ecc ; disambiguated_object &1f4b a2 03 LDX #&03 ; WORD_OBJECT ; is_object &1f4d 18 CLC # Leave with carry clear to indicate object found &1f4e 60 RTS ; consider_asking_to_specify &1f4f ad c8 1e LDA &1ec8 ; ask_to_specify &1f52 d0 bc BNE &1f10 ; leave_with_carry_set &1f54 20 47 1e JSR &1e47 ; please_specify &1f57 38 SEC # Leave with carry set to indicate no object found &1f58 60 RTS ; matched_ambiguous_noun &1f59 8e ca 1e STX &1eca ; disambiguation_table_offset &1f5c bd d2 1a LDA &1ad2,X ; disambiguation_table + 1 &1f5f aa TAX &1f60 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry clear if object is accessible &1f63 90 06 BCC &1f6b ; disambiguated_object_is_in_accessible ; to_consider_next_ambiguous_noun &1f65 ae ca 1e LDX &1eca ; disambiguation_table_offset &1f68 18 CLC &1f69 90 cb BCC &1f36 ; consider_next_ambiguous_noun ; disambiguated_object_is_in_accessible &1f6b 8a TXA &1f6c 48 PHA &1f6d bd 1c 12 LDA &121c,X ; object_string_ids &1f70 aa TAX &1f71 20 7c 1b JSR &1b7c ; use_uppercase &1f74 20 1c 20 JSR &201c ; end_string_with_period &1f77 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline # Write which object was matched if ambiguous &1f7a 20 10 20 JSR &2010 ; end_string_with_nothing &1f7d 68 PLA &1f7e aa TAX &1f7f 8e cc 1e STX &1ecc ; disambiguated_object &1f82 a9 80 LDA #&80 &1f84 8d cb 1e STA &1ecb ; matched_at_least_one_object &1f87 ee cd 1e INC &1ecd ; number_of_objects_matched &1f8a 18 CLC &1f8b 90 d8 BCC &1f65 ; to_consider_next_ambiguous_noun # Always branches ; handle_verb &1f8d a9 ff LDA #&ff &1f8f 85 75 STA &75 ; player_was_understood # Set to negative to suppress "I didn't understand you" &1f91 ad 06 13 LDA &1306 ; player_is_remembering # Positive if player is remembering &1f94 10 12 BPL &1fa8 ; call_verb_handler &1f96 ae 5a 1b LDX &1b5a ; verbs_accepted_while_not_remembering_length ; check_if_verb_is_accepted_while_not_remembering_loop &1f99 bd 5a 1b LDA &1b5a,X ; verbs_accepted_while_not_remembering_- 1 &1f9c c5 8e CMP &8e ; word_value &1f9e f0 08 BEQ &1fa8 ; call_verb_handler &1fa0 ca DEX &1fa1 d0 f6 BNE &1f99 ; check_if_verb_is_accepted_while_not_remembering_loop &1fa3 a9 00 LDA #&00 ; WORD_VERB &1fa5 85 8c STA &8c ; word_type &1fa7 60 RTS ; call_verb_handler &1fa8 18 CLC # Clear carry to request more information by default &1fa9 b9 53 1a LDA &1a53,Y ; verb_handler_addresses_low_table &1fac 85 6c STA &6c ; verb_handler_address_low &1fae b9 92 1a LDA &1a92,Y ; verb_handler_addresses_high_table &1fb1 85 6d STA &6d ; verb_handler_address_high &1fb3 6c 6c 00 JMP (&006c) ; verb_handler_address ; write_string_from_table_zero_and_newline &1fb6 a0 00 LDY #&00 ; write_string_from_table &1fb8 a9 83 LDA #&83 ; TEXT_YELLOW &1fba 4c 07 63 JMP &6307 ; write_string_and_newline ; write_string_from_table_one_and_newline &1fbd a0 01 LDY #&01 &1fbf 18 CLC &1fc0 90 f6 BCC &1fb8 ; write_string_from_table ; write_string_from_table_two_and_newline &1fc2 a0 02 LDY #&02 &1fc4 18 CLC &1fc5 90 f1 BCC &1fb8 ; write_string_from_table ; previous_string_table_address_low &1fc7 00 ; previous_string_table_address_high &1fc8 00 ; use_string_table_at_X_Y &1fc9 ad ee 5f LDA &5fee ; string_table_addresses_low &1fcc 8d c7 1f STA &1fc7 ; previous_string_table_address_low &1fcf ad ef 5f LDA &5fef ; string_table_addresses_high &1fd2 8d c8 1f STA &1fc8 ; previous_string_table_address_high &1fd5 8e ee 5f STX &5fee ; string_table_addresses_low &1fd8 8c ef 5f STY &5fef ; string_table_addresses_high &1fdb 60 RTS ; write_string_from_table_three_with_scrolling &1fdc 20 e8 1f JSR &1fe8 ; write_string_from_table_three ; to_check_for_scrolling_protecting_registers &1fdf 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; write_string_from_table_four_with_scrolling &1fe2 20 05 20 JSR &2005 ; write_string_from_table_four &1fe5 18 CLC &1fe6 90 f7 BCC &1fdf ; to_check_for_scrolling_protecting_registers ; write_string_from_table_three &1fe8 86 8b STX &8b ; string_id &1fea ae a9 20 LDX &20a9 ; string_table_three_address_low &1fed ac aa 20 LDY &20aa ; string_table_three_address_high ; write_string_from_table_at_X_Y &1ff0 20 c9 1f JSR &1fc9 ; use_string_table_at_X_Y &1ff3 a6 8b LDX &8b ; string_id &1ff5 20 e1 37 JSR &37e1 ; write_string_from_table_zero &1ff8 ad c8 1f LDA &1fc8 ; previous_string_table_address_high &1ffb 8d ef 5f STA &5fef ; string_table_addresses_high &1ffe ad c7 1f LDA &1fc7 ; previous_string_table_address_low &2001 8d ee 5f STA &5fee ; string_table_addresses_low &2004 60 RTS ; write_string_from_table_four &2005 86 8b STX &8b ; string_id &2007 ae ab 20 LDX &20ab ; string_table_four_address_low &200a ac ac 20 LDY &20ac ; string_table_four_address_high &200d 18 CLC &200e 90 e0 BCC &1ff0 ; write_string_from_table_at_X_Y ; end_string_with_nothing &2010 a9 00 LDA #&00 ; TEXT_END_NONE &2012 8d f7 5f STA &5ff7 ; string_ending &2015 60 RTS ; end_string_with_comma &2016 a9 01 LDA #&01 ; TEXT_END_COMMA &2018 8d f7 5f STA &5ff7 ; string_ending &201b 60 RTS ; end_string_with_period &201c a9 02 LDA #&02 ; TEXT_END_PERIOD &201e 8d f7 5f STA &5ff7 ; string_ending &2021 60 RTS ; write_string &2022 a9 83 LDA #&83 ; TEXT_YELLOW &2024 4c fe 5f JMP &5ffe ; write_packed_string ; copy_memory &2027 86 6a STX &6a ; addresses_address_low &2029 84 6b STY &6b ; addresses_address_high &202b a0 00 LDY #&00 ; copy_addresses_loop &202d b1 6a LDA (&6a),Y ; addresses_address &202f 99 77 00 STA &0077,Y ; addresses_and_size &2032 c8 INY &2033 c0 06 CPY #&06 &2035 90 f6 BCC &202d ; copy_addresses_loop &2037 a0 00 LDY #&00 &2039 84 6a STY &6a ; bytes_copied_low &203b 84 6b STY &6b ; bytes_copied_high ; copy_memory_loop &203d b1 77 LDA (&77),Y ; source_address &203f 91 79 STA (&79),Y ; target_address &2041 a5 77 LDA &77 ; source_address_low &2043 18 CLC &2044 69 01 ADC #&01 &2046 85 77 STA &77 ; source_address_low &2048 90 02 BCC &204c ; skip_source_page &204a e6 78 INC &78 ; source_address_high ; skip_source_page &204c 18 CLC &204d a5 79 LDA &79 ; target_address_low &204f 69 01 ADC #&01 &2051 85 79 STA &79 ; target_address_low &2053 90 02 BCC &2057 ; skip_target_page &2055 e6 7a INC &7a ; target_address_high ; skip_target_page &2057 a5 6a LDA &6a ; bytes_copied_low &2059 c5 7b CMP &7b ; bytes_to_copy_low &205b 90 07 BCC &2064 ; copy_next_byte &205d a5 6b LDA &6b ; bytes_copied_high &205f c5 7c CMP &7c ; bytes_to_copy_high &2061 90 01 BCC &2064 ; copy_next_byte &2063 60 RTS ; copy_next_byte &2064 a5 6a LDA &6a ; bytes_copied_low &2066 18 CLC &2067 69 01 ADC #&01 &2069 85 6a STA &6a ; bytes_copied_low &206b 90 d0 BCC &203d ; copy_memory_loop &206d e6 6b INC &6b ; bytes_copied_high &206f 18 CLC &2070 90 cb BCC &203d ; copy_memory_loop # Always branches ; backup_initial_game_state_addresses &2072 88 11 ; &1188 = game_state &2074 00 04 ; &0400 = initial_game_state &2076 b4 01 ; &01b4 = end_of_game_state - game_state ; restore_initial_game_state_addresses &2078 00 04 ; &0400 = initial_game_state &207a 88 11 ; &1188 = game_state &207c b4 01 ; &01b4 = end_of_game_state - game_state ; disk_relocation_addresses &207e 88 11 ; &1188 = game_state &2080 74 13 ; &1374 &2082 de 06 ; &06de ; load_adcode4_string &2084 4c 2e 41 44 43 4f 44 45 34 20 36 43 38 30 0d ; "L.ADCODE4 6C80" ; load_myo_0d02_string &2093 4c 2e 4d 59 4f 20 30 44 30 32 0d ; "L.MYO 0D02" ; load_myo_6d80_string &209e 4c 2e 4d 59 4f 20 36 44 38 30 0d ; "L.MYO 6D80" ; string_table_three_address_low &20a9 40 ; &7f40 = electron_string_table_three ; string_table_three_address_high &20aa 7f ; string_table_four_address_low &20ab 02 ; &0d02 = electron_string_table_four ; string_table_four_address_high &20ac 0d ; entry_point &20ad a5 74 LDA &74 ; tape_version # Zero if tape &20af 10 07 BPL &20b8 ; skip_relocation &20b1 a2 7e LDX #&7e &20b3 a0 20 LDY #&20 ; &207e = disk_relocation_addresses &20b5 20 27 20 JSR &2027 ; copy_memory ; skip_relocation &20b8 a5 70 LDA &70 ; loader_version # Set to &80 for BBC version in loader &20ba 8d ed 5f STA &5fed ; allow_colour &20bd 30 11 BMI &20d0 ; bbc_version ; electron_version &20bf 20 62 63 JSR &6362 ; initialise_electron_screen &20c2 a2 93 LDX #&93 &20c4 a0 20 LDY #&20 ; &2093 = load_myo_0d02_string &20c6 20 f7 ff JSR &fff7 ; OSCLI # *LOAD MYO 0D02 &20c9 a9 0b LDA #&0b # 11 rows &20cb 85 8a STA &8a ; screen_height &20cd 18 CLC &20ce 90 27 BCC &20f7 ; backup_initial_game_state # Always branches ; bbc_version &20d0 20 32 63 JSR &6332 ; initialise_bbc_screen &20d3 a2 84 LDX #&84 &20d5 a0 20 LDY #&20 ; &2084 = load_adcode4_string &20d7 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ADCODE4 6C80 &20da a9 80 LDA #&80 &20dc 8d a9 20 STA &20a9 ; string_table_three_address_low &20df 8d ab 20 STA &20ab ; string_table_four_address_low &20e2 a9 6c LDA #&6c ; &6c80 = string_table_three &20e4 8d aa 20 STA &20aa ; string_table_three_address_high &20e7 a2 9e LDX #&9e &20e9 a0 20 LDY #&20 ; &209e = load_myo_6d80_string &20eb 20 f7 ff JSR &fff7 ; OSCLI # *LOAD MY0 6D80 &20ee a9 6d LDA #&6d ; &6d80 = string_table_four &20f0 8d ac 20 STA &20ac ; string_table_four_address_high &20f3 a9 15 LDA #&15 ; 21 # 21 rows &20f5 85 8a STA &8a ; screen_height ; backup_initial_game_state &20f7 a2 72 LDX #&72 &20f9 a0 20 LDY #&20 ; &2072 = backup_initial_game_state_addresses &20fb 20 27 20 JSR &2027 ; copy_memory # Backup initial game state ; start_game &20fe 20 10 20 JSR &2010 ; end_string_with_nothing &2101 20 d0 62 JSR &62d0 ; disable_keyboard_interrupts &2104 a5 8a LDA &8a ; screen_height &2106 20 c3 62 JSR &62c3 ; set_lines_per_page_and_lines_remaining_before_scrolling &2109 a9 01 LDA #&01 &210b 8d 69 1b STA &1b69 ; has_previous_input # Set to non-zero to indicate no previous input &210e a2 78 LDX #&78 &2110 a0 20 LDY #&20 ; &2078 = restore_initial_game_state_addresses &2112 20 27 20 JSR &2027 ; copy_memory # Restore initial game state at start of new game &2115 20 57 63 JSR &6357 ; handle_cls &2118 a2 20 LDX #&20 ; string_020 : "Myorem - The Final Part of the Rick Hanson Trilogy (c) Robico Software 1986. " &211a 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline &211d 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &2120 a2 1d LDX #&1d ; string_41d : "adventure design by Rob and Mike O'Leary. Programmed by Robert O'Leary with the aid of Midge 3 and the Robico Advanced Parser. " &2122 20 e2 1f JSR &1fe2 ; write_string_from_table_four_with_scrolling &2125 20 f7 39 JSR &39f7 ; look_at_room_with_scrolling &2128 a9 ff LDA #&ff &212a 8d 06 13 STA &1306 ; player_is_remembering # Set to negative to indicate player is not remembering &212d 85 8d STA &8d ; object_for_pronoun &212f 85 8f STA &8f ; object_for_ones &2131 85 75 STA &75 ; player_was_understood # Set to negative to suppress "I didn't understand you" ; start_parsing &2133 20 10 20 JSR &2010 ; end_string_with_nothing &2136 a5 75 LDA &75 ; player_was_understood &2138 30 07 BMI &2141 ; sentence_was_parsed_successfully &213a a9 ff LDA #&ff &213c 85 75 STA &75 ; player_was_understood # Set to negative to suppress "I didn't understand you" &213e 4c 2f 22 JMP &222f ; restart_parsing_after_i_don't_understand_you ; sentence_was_parsed_successfully &2141 a5 8a LDA &8a ; screen_height &2143 20 c3 62 JSR &62c3 ; set_lines_per_page_and_lines_remaining_before_scrolling &2146 20 3e 1d JSR &1d3e ; get_player_input_and_tokenise &2149 a0 00 LDY #&00 &214b 84 75 STY &75 ; player_was_understood # Set to positive to permit "I didn't understand you" &214d 84 65 STY &65 ; player_state &214f 84 8c STY &8c ; word_type ; parse_sentence ; skip_trailing_adjectives_loop &2151 20 10 20 JSR &2010 ; end_string_with_nothing &2154 b9 61 07 LDA &0761,Y ; tokenised_words_type &2157 29 7f AND #&7f ; ~ WORD_ACCEPTS_MULTIPLE_OBJECTS &2159 c9 06 CMP #&06 ; WORD_TRAILING_ADJECTIVE &215b d0 07 BNE &2164 ; not_trailing_adjective &215d 20 5f 1e JSR &1e5f ; move_to_next_word # Returns carry set at end of input &2160 b0 d1 BCS &2133 ; start_parsing &2162 90 ed BCC &2151 ; skip_trailing_adjectives_loop # Always branches ; not_trailing_adjective &2164 c9 03 CMP #&03 ; WORD_OBJECT &2166 90 03 BCC &216b ; parse_verb_or_direction &2168 4c 11 22 JMP &2211 ; parse_not_verb_or_direction ; parse_verb_or_direction &216b b9 61 07 LDA &0761,Y ; tokenised_words_type &216e 85 8c STA &8c ; word_type &2170 b9 60 07 LDA &0760,Y ; tokenised_words_value &2173 85 8e STA &8e ; word_value ; parse_word &2175 a5 8c LDA &8c ; word_type &2177 c9 02 CMP #&02 ; WORD_SYSTEM_VERB &2179 f0 07 BEQ &2182 ; skip_updating_world_before_action &217b 20 ed 37 JSR &37ed ; update_world_before_action &217e a5 65 LDA &65 ; player_state &2180 30 7e BMI &2200 ; game_failed ; skip_updating_world_before_action &2182 a4 8e LDY &8e ; word_value &2184 18 CLC &2185 20 8d 1f JSR &1f8d ; handle_verb &2188 a5 65 LDA &65 ; player_state &218a c9 01 CMP #&01 ; PLAYER_QUIT &218c d0 03 BNE &2191 ; not_quit &218e 4c fe 20 JMP &20fe ; start_game ; not_quit &2191 c9 02 CMP #&02 ; PLAYER_WON &2193 f0 36 BEQ &21cb ; game_won &2195 c9 80 CMP #&80 &2197 b0 67 BCS &2200 ; game_failed &2199 a5 8c LDA &8c ; word_type &219b c9 02 CMP #&02 ; WORD_SYSTEM_VERB &219d f0 0b BEQ &21aa ; skip_updating_word_after_action &219f 20 fa 37 JSR &37fa ; update_world_after_action &21a2 a5 65 LDA &65 ; player_state &21a4 30 5a BMI &2200 ; game_failed &21a6 c9 02 CMP #&02 ; PLAYER_WON &21a8 f0 21 BEQ &21cb ; game_won ; skip_updating_word_after_action ; find_end_of_sentence_loop &21aa 20 5f 1e JSR &1e5f ; move_to_next_word # Returns carry set at end of input &21ad b0 0c BCS &21bb ; to_start_parsing &21af b9 61 07 LDA &0761,Y ; tokenised_words_type &21b2 c9 09 CMP #&09 ; WORD_CONJUNCTION &21b4 d0 f4 BNE &21aa ; find_end_of_sentence_loop ; find_start_of_next_sentence &21b6 20 5f 1e JSR &1e5f ; move_to_next_word # Returns carry set at end of input &21b9 90 03 BCC &21be ; consider_next_sentence ; to_start_parsing &21bb 4c 33 21 JMP &2133 ; start_parsing ; consider_next_sentence &21be b9 61 07 LDA &0761,Y ; tokenised_words_type &21c1 c9 09 CMP #&09 ; WORD_CONJUNCTION &21c3 f0 f1 BEQ &21b6 ; find_start_of_next_sentence &21c5 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &21c8 4c 51 21 JMP &2151 ; parse_sentence ; game_won &21cb 18 CLC # Replaced by a loop in disk version, saving &f bytes &21cc a2 b6 LDX #&b6 ; string_1b6 : ""Carry this shipment across tonight! ", Says a voice. " &21ce 20 bd 1f JSR &1fbd ; write_string_from_table_one_and_newline &21d1 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &21d4 18 CLC &21d5 a2 b7 LDX #&b7 ; string_1b7 : ""I'll be over the border in an hour, boss! " A second voice replies! " &21d7 20 bd 1f JSR &1fbd ; write_string_from_table_one_and_newline &21da 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &21dd 18 CLC &21de a2 b8 LDX #&b8 ; string_1b8 : "the engine starts and the car leaves the mansion, heading through the darkness to the border. You feel elated at the prospect of freedom! Then you are troubled. There was something peculiar about the first voice. Suddenly it hits you! It was K! You press the boot-release and leap from the accelerating limousine. You see K outside the garage and run at him! Before long, he lies dead in your arms, strangled. Guards appear from everywhere and you are bundled into the mansion! Later you are taken to be shot. " &21e0 20 bd 1f JSR &1fbd ; write_string_from_table_one_and_newline &21e3 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &21e6 18 CLC &21e7 a2 01 LDX #&01 ; string_001 : "The arena is filled with ominous silence which lingers in the atmosphere and is suddenly broken by the shout of "Fire! ". There is a storm of bullets! " &21e9 20 e1 37 JSR &37e1 ; write_string_from_table_zero &21ec a2 02 LDX #&02 ; string_002 : "but not from the soldiers! A helicopter gunship appears and decimates your foes! It lands to rescue you! You have won! " ; write_string_from_table_zero_and_restart_game &21ee 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline &21f1 a2 48 LDX #&48 ; string_248 : "Press space to play again. " &21f3 20 af 39 JSR &39af ; write_string_from_table_two_and_newline_with_scrolling ; wait_for_space &21f6 20 ca 62 JSR &62ca ; read_character &21f9 c9 20 CMP #&20 ; " " &21fb d0 f9 BNE &21f6 ; wait_for_space &21fd 4c fe 20 JMP &20fe ; start_game ; game_failed &2200 ad 04 13 LDA &1304 ; player_room &2203 c9 0c CMP #&0c ; ROOM_0c ; "a large, dusty arena" &2205 f0 05 BEQ &220c ; skip_awakening &2207 a2 49 LDX #&49 ; string_249 : "This thought disturbs you and your mind drifts back to reality. Your eyes open and a picture of the arena forms. The firing squad is on stand-by! " &2209 20 d7 37 JSR &37d7 ; write_string_from_table_two ; skip_awakening &220c a2 01 LDX #&01 ; string_001 : "The arena is filled with ominous silence which lingers in the atmosphere and is suddenly broken by the shout of "Fire! ". There is a storm of bullets! " &220e 18 CLC &220f 90 dd BCC &21ee ; write_string_from_table_zero_and_restart_game ; parse_not_verb_or_direction # Called with A = tokenised_words_type & &7f &2211 48 PHA &2212 a9 ff LDA #&ff &2214 85 75 STA &75 ; player_was_understood # Set to negative to suppress "I didn't understand you" &2216 a5 8c LDA &8c ; word_type # Type of previous verb &2218 30 1b BMI &2235 ; verb_accepts_multiple_objects # Top bit set if previous verb accepts multiple objects &221a 68 PLA &221b c9 03 CMP #&03 ; WORD_OBJECT &221d d0 10 BNE &222f ; restart_parsing_after_i_don't_understand_you ; parse_object &221f b9 60 07 LDA &0760,Y ; tokenised_words_value &2222 aa TAX &2223 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2226 b0 07 BCS &222f ; restart_parsing_after_i_don't_understand_you &2228 8a TXA &2229 20 4c 1e JSR &1e4c ; tell_me_what_you_want_to_do_with_the_object &222c 4c 33 21 JMP &2133 ; start_parsing ; restart_parsing_after_i_don't_understand_you &222f 20 fb 1d JSR &1dfb ; i_don't_understand_you &2232 4c 33 21 JMP &2133 ; start_parsing ; verb_accepts_multiple_objects &2235 68 PLA &2236 c6 6e DEC &6e ; current_word &2238 4c 75 21 JMP &2175 ; parse_word # Apply previous verb to current word ; handle_wait &223b a9 50 LDA #&50 &223d 20 bc 62 JSR &62bc ; set_delay &2240 a2 09 LDX #&09 ; string_009 : "You wait a moment. " &2242 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline &2245 a9 00 LDA #&00 &2247 4c bc 62 JMP &62bc ; set_delay ; handle_go &224a 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &224d b0 0a BCS &2259 ; leave &224f e0 01 CPX #&01 ; WORD_DIRECTION &2251 d0 03 BNE &2256 ; to_you_can't_do_that &2253 4c 6b 21 JMP &216b ; parse_verb_or_direction ; to_you_can't_do_that &2256 4c 3d 1e JMP &1e3d ; you_can't_do_that ; leave &2259 60 RTS ; handle_quit &225a 20 67 22 JSR &2267 ; are_you_sure # Returns carry set if player is sure &225d b0 03 BCS &2262 ; quit_game &225f 4c 8e 63 JMP &638e ; write_ok ; quit_game &2262 a9 01 LDA #&01 ; PLAYER_QUIT &2264 85 65 STA &65 ; player_state &2266 60 RTS ; are_you_sure &2267 a2 2e LDX #&2e ; string_02e : "Are you sure (y or n)? " &2269 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline ; get_y_or_n &226c 20 ca 62 JSR &62ca ; read_character &226f 09 20 ORA #&20 # Convert to lowercase &2271 c9 79 CMP #&79 ; "y" &2273 f0 07 BEQ &227c ; is_sure &2275 c9 6e CMP #&6e ; "n" &2277 f0 10 BEQ &2289 ; is_not_sure &2279 4c 6c 22 JMP &226c ; get_y_or_n ; is_sure &227c a2 1f LDX #&1f ; string_41f : "Yes! " ; write_sure_string &227e 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &2281 20 e2 1f JSR &1fe2 ; write_string_from_table_four_with_scrolling &2284 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &2287 38 SEC # Leave with carry set to indicate yes &2288 60 RTS ; is_not_sure &2289 a2 1e LDX #&1e ; string_41e : "Er, no. " &228b 20 7e 22 JSR &227e ; write_sure_string &228e 18 CLC # Leave with carry set to indicate no &228f 60 RTS ; handle_monochrome &2290 a2 80 LDX #&80 # Set to negative to indicate colour disabled ; set_colour_enabled_if_colour_allowed &2292 ad ed 5f LDA &5fed ; allow_colour &2295 30 03 BMI &229a ; set_colour_enabled &2297 4c fb 1d JMP &1dfb ; i_don't_understand_you ; set_colour_enabled &229a 8e fd 5f STX &5ffd ; colour_enabled &229d 4c 8e 63 JMP &638e ; write_ok ; handle_colour &22a0 a2 00 LDX #&00 # Set to positive to indicate colour enabled &22a2 18 CLC &22a3 90 ed BCC &2292 ; set_colour_enabled_if_colour_allowed # Always branches ; handle_help &22a5 a2 32 LDX #&32 ; string_032 : "Look at the instructions. " &22a7 4c b6 1f JMP &1fb6 ; write_string_from_table_zero_and_newline ; examine_string_id &22aa 34 ; string_034 : "You examine the " ; only_visible_exit_string_id &22ab 1b ; string_01b : "The only visible exit is " ; visible_exits_string_id &22ac 39 ; string_039 : "There are visible exits " ; handle_look &22ad 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &22b0 b0 17 BCS &22c9 ; look_at_room &22b2 e0 04 CPX #&04 ; WORD_NOUN &22b4 d0 10 BNE &22c6 ; handle_look_nothing &22b6 c9 08 CMP #&08 ; NOUN_AT &22b8 d0 0c BNE &22c6 ; handle_look_nothing &22ba a9 12 LDA #&12 ; VERB_LOOK &22bc 85 8e STA &8e ; word_value &22be a9 80 LDA #&80 ; WORD_ACCEPTS_MULTIPLE_OBJECTS &22c0 85 8c STA &8c ; word_type &22c2 18 CLC &22c3 4c 18 26 JMP &2618 ; handle_examine ; handle_look_nothing &22c6 20 6b 1e JSR &1e6b ; restore_previous_current_word ; look_at_room &22c9 ad bf 11 LDA &11bf ; object_locations + &13 (OBJECT_BASKET) &22cc c9 fe CMP #&fe ; ROOM_WEARING &22ce d0 05 BNE &22d5 ; not_wearing_basket ; you_see_a_basket &22d0 a2 3a LDX #&3a ; string_23a : "You see a basket! " &22d2 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; not_wearing_basket &22d5 20 7d 23 JSR &237d ; populate_room_exits &22d8 20 40 23 JSR &2340 ; check_for_dark_room # Returns carry clear if room is lit &22db 90 05 BCC &22e2 ; not_dark &22dd a2 45 LDX #&45 ; string_045 : "It is pitch dark! " &22df 4c b6 1f JMP &1fb6 ; write_string_from_table_zero_and_newline ; not_dark &22e2 ae 04 13 LDX &1304 ; player_room &22e5 bd 42 0c LDA &0c42,X ; room_string_ids # Get string for room's long description &22e8 85 85 STA &85 ; string_id &22ea bd 54 12 LDA &1254,X ; room_states # Get offset for room's state dependent string &22ed 85 82 STA &82 ; string_id_offset &22ef 20 7c 1b JSR &1b7c ; use_uppercase &22f2 ae 68 1b LDX &1b68 ; look_string_id &22f5 a0 00 LDY #&00 &22f7 20 22 20 JSR &2022 ; write_string # Write variant of "You are " &22fa e8 INX &22fb e0 40 CPX #&40 ; &3f + 1 : string_03f ; "you find yourself " &22fd 90 02 BCC &2301 ; skip_wraparound &22ff a2 3c LDX #&3c ; string_03c : "gazing around, you see that you are " ; skip_wraparound &2301 8e 68 1b STX &1b68 ; look_string_id &2304 a6 85 LDX &85 ; string_id &2306 a5 82 LDA &82 ; string_id_offset &2308 f0 0a BEQ &2314 ; no_secondary_string &230a a0 01 LDY #&01 # Use string_table_one for room descriptions &230c 20 22 20 JSR &2022 ; write_string &230f 18 CLC &2310 8a TXA &2311 65 82 ADC &82 ; string_id_offset &2313 aa TAX ; no_secondary_string &2314 a0 01 LDY #&01 # Use string_table_one for room descriptions &2316 20 22 20 JSR &2022 ; write_string &2319 20 27 23 JSR &2327 ; check_for_deadly_room # Returns carry set if room is deadly &231c b0 06 BCS &2324 ; to_check_for_scrolling_protecting_registers &231e 20 ad 24 JSR &24ad ; list_room_exits_without_repopulating &2321 20 6d 2b JSR &2b6d ; list_room_objects ; to_check_for_scrolling_protecting_registers &2324 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; check_for_deadly_room &2327 98 TYA &2328 48 PHA &2329 a0 06 LDY #&06 ; check_for_deadly_room_loop &232b b9 68 23 LDA &2368,Y ; deadly_rooms &232e cd 04 13 CMP &1304 ; player_room &2331 f0 07 BEQ &233a ; room_is_deadly &2333 88 DEY &2334 10 f5 BPL &232b ; check_for_deadly_room_loop &2336 18 CLC # Leave with carry set to indicate room isn't deadly ; leave &2337 68 PLA &2338 a8 TAY &2339 60 RTS ; room_is_deadly &233a 20 a5 38 JSR &38a5 ; kill_player ; leave_with_carry_set &233d 38 SEC # Leave with carry set to indicate room is deadly &233e b0 f7 BCS &2337 ; leave # Always branches ; check_for_dark_room &2340 98 TYA &2341 48 PHA &2342 a0 03 LDY #&03 ; check_for_dark_room_loop &2344 b9 6f 23 LDA &236f,Y ; dark_rooms &2347 cd 04 13 CMP &1304 ; player_room &234a f0 05 BEQ &2351 ; room_needs_light &234c 88 DEY &234d 10 f5 BPL &2344 ; check_for_dark_room_loop &234f 30 e5 BMI &2336 ; leave # Always branches ; room_needs_light &2351 c9 a3 CMP #&a3 ; ROOM_a3 ; "a tunnel" &2353 d0 05 BNE &235a ; not_room_a3 &2355 ad 8b 11 LDA &118b ; door_states + DOOR_03 # Tunnel is lit if door is open &2358 10 dc BPL &2336 ; leave ; not_room_a3 &235a a2 32 LDX #&32 ; OBJECT_LIGHTHOUSE &235c 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &235f b0 dc BCS &233d ; leave_with_carry_set &2361 ad 25 13 LDA &1325 ; lighthouse_provides_light # Positive if lighthouse does not provide light &2364 10 d7 BPL &233d ; leave_with_carry_set &2366 30 ce BMI &2336 ; leave # Always branches ; deadly_rooms &2368 0b ; ROOM_0b ; "at the top of the creeper" &2369 0e ; ROOM_0e ; "the dangerous waters of river" &236a 37 ; ROOM_37 ; "the quicksand" &236b 58 ; ROOM_58 ; "the pool" &236c 82 ; ROOM_82 ; "the entrance steps" &236d 9d ; ROOM_9d ; "the gardens" &236e ac ; ROOM_ac ; "the driveway" ; dark_rooms &236f a0 ; ROOM_a0 ; "a tunnel" &2370 a1 ; ROOM_a1 ; "a tunnel" &2371 a2 ; ROOM_a2 ; "a narrow area of the tunnel" &2372 a3 ; ROOM_a3 ; "a tunnel" ; move_to_next_room_data &2373 18 CLC &2374 65 80 ADC &80 ; room_data_address_low &2376 85 80 STA &80 ; room_data_address_low &2378 90 02 BCC &237c ; leave &237a e6 81 INC &81 ; room_data_address_high ; leave &237c 60 RTS ; populate_room_exits &237d a2 00 LDX #&00 &237f a9 20 LDA #&20 &2381 85 80 STA &80 ; room_data_address_low &2383 a9 0a LDA #&0a ; &0a20 = room_exit_data &2385 85 81 STA &81 ; room_data_address_high ; find_room_loop &2387 ec 04 13 CPX &1304 ; player_room &238a f0 0c BEQ &2398 ; found_room &238c bd c0 08 LDA &08c0,X ; room_exits_count_and_nsew &238f 29 0f AND #&0f # Low nibble is number of exits &2391 20 73 23 JSR &2373 ; move_to_next_room_data &2394 e8 INX &2395 18 CLC &2396 90 ef BCC &2387 ; find_room_loop ; found_room &2398 a0 0b LDY #&0b &239a a9 ff LDA #&ff ; clear_room_exits_loop &239c 99 07 13 STA &1307,Y ; room_exits &239f 88 DEY &23a0 10 fa BPL &239c ; clear_room_exits_loop &23a2 bd c0 08 LDA &08c0,X ; room_exits_count_and_nsew &23a5 29 0f AND #&0f # Low nibble is number of exits &23a7 85 83 STA &83 ; number_of_exits &23a9 c9 00 CMP #&00 &23ab f0 30 BEQ &23dd ; consider_special_exits &23ad c6 83 DEC &83 ; number_of_exits &23af a9 0b LDA #&0b # For each direction, &23b1 85 84 STA &84 ; exit_offset &23b3 bd 70 09 LDA &0970,X ; room_exits_other_directions ; populate_room_exits_loop &23b6 0a ASL A &23b7 48 PHA &23b8 90 1e BCC &23d8 ; no_exit # bit set if room has an exit in that direction &23ba a4 83 LDY &83 ; number_of_exits &23bc c6 83 DEC &83 ; number_of_exits &23be b1 80 LDA (&80),Y ; room_data_address # If so, get byte of room data for exit location ; set_room_exit &23c0 a4 84 LDY &84 ; exit_offset &23c2 99 07 13 STA &1307,Y ; room_exits &23c5 68 PLA &23c6 88 DEY &23c7 30 14 BMI &23dd ; consider_special_exits &23c9 84 84 STY &84 ; exit_offset &23cb c0 03 CPY #&03 &23cd f0 03 BEQ &23d2 ; use_nsew_exits &23cf 18 CLC &23d0 90 e4 BCC &23b6 ; populate_room_exits_loop # Always branches ; use_nsew_exits &23d2 bd c0 08 LDA &08c0,X ; room_exits_count_and_nsew &23d5 18 CLC &23d6 90 de BCC &23b6 ; populate_room_exits_loop # Always branches ; no_exit &23d8 a9 ff LDA #&ff ; EXIT_NONE # Otherwise, &ff to indicate no exit &23da 18 CLC &23db 90 e3 BCC &23c0 ; set_room_exit # Always branches ; consider_special_exits &23dd ad 04 13 LDA &1304 ; player_room &23e0 c9 09 CMP #&09 ; ROOM_09 ; "the oil drum" &23e2 d0 06 BNE &23ea ; not_room_09 &23e4 ad 14 13 LDA &1314 ; drum_exit &23e7 8d 10 13 STA &1310 ; room_exits + &9 (DIRECTION_DOWN) ; not_room_09 &23ea c9 0a CMP #&0a ; ROOM_0a ; "the creeper" &23ec d0 06 BNE &23f4 ; not_room_0a &23ee ad 13 13 LDA &1313 ; creeper_exit &23f1 8d 10 13 STA &1310 ; room_exits + &9 (DIRECTION_DOWN) ; not_room_0a &23f4 c9 36 CMP #&36 ; ROOM_36 ; "a clearing" &23f6 d0 06 BNE &23fe ; not_room_36 &23f8 ad 15 13 LDA &1315 ; plank_exit &23fb 8d 08 13 STA &1308 ; room_exits + &1 (DIRECTION_SOUTH) ; not_room_36 &23fe 60 RTS ; end_string_with_exit_ending &23ff ad a8 24 LDA &24a8 ; exit_ending &2402 18 CLC &2403 90 08 BCC &240d ; end_string_with_ending # Always branches ; conditionally_write_string_X_and_and &2405 ad a9 24 LDA &24a9 ; use_exit_ending &2408 30 f5 BMI &23ff ; end_string_with_exit_ending &240a ad f7 5f LDA &5ff7 ; string_ending ; end_string_with_ending &240d c9 02 CMP #&02 ; TEXT_END_PERIOD &240f f0 1a BEQ &242b ; leave &2411 20 10 20 JSR &2010 ; end_string_with_nothing &2414 8d a8 24 STA &24a8 ; exit_ending &2417 8a TXA &2418 48 PHA &2419 a0 00 LDY #&00 &241b 20 2d 24 JSR &242d ; write_exit &241e a2 16 LDX #&16 ; string_016 : " and " &2420 20 22 20 JSR &2022 ; write_string &2423 68 PLA &2424 aa TAX &2425 20 1c 20 JSR &201c ; end_string_with_period &2428 8d a8 24 STA &24a8 ; exit_ending &242b 60 RTS ; exit_direction &242c 00 ; write_exit &242d ad a9 24 LDA &24a9 ; use_exit_ending &2430 10 5e BPL &2490 ; to_write_string &2432 20 10 20 JSR &2010 ; end_string_with_nothing &2435 20 22 20 JSR &2022 ; write_string &2438 8a TXA &2439 38 SEC &243a ed 9a 24 SBC &249a ; directions_string_ids &243d 8d 2c 24 STA &242c ; exit_direction &2440 a2 00 LDX #&00 ; check_for_doors_loop &2442 bd 00 11 LDA &1100,X ; door_rooms &2445 c9 ff CMP #&ff &2447 f0 2c BEQ &2475 ; no_door &2449 cd 04 13 CMP &1304 ; player_room &244c f0 04 BEQ &2452 ; room_has_door ; consider_next_door &244e e8 INX &244f 18 CLC &2450 90 f0 BCC &2442 ; check_for_doors_loop # Always branches ; room_has_door &2452 bd 5b 11 LDA &115b,X ; door_directions &2455 cd 2c 24 CMP &242c ; exit_direction &2458 d0 f4 BNE &244e ; consider_next_door &245a bd 2e 11 LDA &112e,X ; door_numbers &245d aa TAX &245e bd 88 11 LDA &1188,X ; door_states &2461 10 0d BPL &2470 ; door_is_open &2463 a9 fe LDA #&fe ; EXIT_CLOSED_DOOR &2465 ae 2c 24 LDX &242c ; exit_direction &2468 9d 07 13 STA &1307,X ; room_exits &246b a2 37 LDX #&37 ; string_037 : " via a closed door" &246d 18 CLC &246e 90 14 BCC &2484 ; write_string_after_setting_string_ending # Always branches ; door_is_open &2470 a2 38 LDX #&38 ; string_038 : " through an open door which leads" &2472 20 22 20 JSR &2022 ; write_string ; no_door &2475 a2 22 LDX #&22 ; string_022 : " to " &2477 20 22 20 JSR &2022 ; write_string &247a ae a7 24 LDX &24a7 ; exit_room &247d bd 42 0c LDA &0c42,X ; room_string_ids &2480 aa TAX &2481 ca DEX &2482 a0 01 LDY #&01 ; write_string_after_setting_string_ending &2484 ad a8 24 LDA &24a8 ; exit_ending &2487 8d f7 5f STA &5ff7 ; string_ending &248a 20 22 20 JSR &2022 ; write_string # Write short room description &2tring_016 : " and "8d a0 00 LDY #&00 &248f 60 RTS ; to_write_string &2490 4c 22 20 JMP &2022 ; write_string ; there_is_nowhere_to_go_from_here &2493 a2 21 LDX #&21 ; string_021 : "There is nowhere to go from here! " &2495 a0 00 LDY #&00 &2497 18 CLC &2498 90 f6 BCC &2490 ; to_write_string # Always branches ; directions_string_ids &249a 0a ; string_00a : "north" &249b 0b ; string_00b : "south" &249c 0c ; string_00c : "east" &249d 0d ; string_00d : "west" &249e 0e ; string_00e : "northeast" &249f 0f ; string_00f : "northwest" &24a0 10 ; string_010 : "southeast" &24a1 11 ; string_011 : "southwest" &24a2 12 ; string_012 : "up" &24a3 13 ; string_013 : "down" &24a4 14 ; string_014 : "in" &24a5 15 ; string_015 : "out" &24a6 16 ; string_016 : " and " ; exit_room &24a7 00 ; exit_ending &24a8 00 ; use_exit_ending &24a9 00 ; list_room_exits &24aa 20 7d 23 JSR &237d ; populate_room_exits ; list_room_exits_without_repopulating &24ad a9 80 LDA #&80 &24af 8d a9 24 STA &24a9 ; use_exit_ending # Set to negative to use exit_ending to end strings &24b2 ac 04 13 LDY &1304 ; player_room &24b5 20 10 20 JSR &2010 ; end_string_with_nothing &24b8 b9 c0 08 LDA &08c0,Y ; room_exits_count_and_nsew &24bb 29 0f AND #&0f # Low nibble is number of exits &24bd 85 83 STA &83 ; number_of_exits_remaining &24bf f0 d2 BEQ &2493 ; there_is_nowhere_to_go_from_here &24c1 c9 01 CMP #&01 &24c3 f0 46 BEQ &250b ; single_exit &24c5 ae ac 22 LDX &22ac ; visible_exits_string_id &24c8 a0 00 LDY #&00 &24ca 20 22 20 JSR &2022 ; write_string # Write variant of "There are visible exits " &24cd e8 INX &24ce e0 3c CPX #&3c &3b + 1 : string_03b : "Ways lead " &24d0 90 02 BCC &24d4 ; skip_wraparound &24d2 a2 39 LDX #&39 ; string_039 : "There are visible exits " ; skip_wraparound &24d4 8e ac 22 STX &22ac ; visible_exits_string_id &24d7 a9 01 LDA #&01 ; TEXT_END_COMMA &24d9 8d a8 24 STA &24a8 ; exit_ending ; list_all_exits &24dc a2 00 LDX #&00 ; list_exits_loop &24de bd 07 13 LDA &1307,X ; room_exits &24e1 c9 ff CMP #&ff ; EXIT_NONE &24e3 d0 0b BNE &24f0 ; direction_has_exit ; consider_next_direction &24e5 e8 INX &24e6 e0 0c CPX #&0c &24e8 90 f4 BCC &24de ; list_exits_loop &24ea a9 00 LDA #&00 &24ec 8d a9 24 STA &24a9 ; use_exit_ending # Set to positive to use string_ending to end strings &24ef 60 RTS ; direction_has_exit &24f0 8d a7 24 STA &24a7 ; exit_room &24f3 a0 00 LDY #&00 &24f5 8a TXA &24f6 48 PHA &24f7 bd 9a 24 LDA &249a,X ; directions_string_ids &24fa aa TAX e24fb a5 83 LDA &83 ; number_of_exits_remaining &24fd c9 02 CMP #&02 &24ff f0 24 BEQ &2525 ; two_exits_remaining &2501 20 2d 24 JSR &242d ; write_exit ; to_consider_next_direction &2504 68 PLA &2505 aa TAX &2506 c6 83 DEC &83 ; number_of_exits_remaining &2508 18 CLC &2509 90 da BCC &24e5 ; consider_next_direction # Always branches ; single_exit &250b ae ab 22 LDX &22ab ; only_visible_exit_string_id &250e a0 00 LDY #&00 &2510 20 22 20 JSR &2022 ; write_string # Write variant of "The only visible exit is " &2513 e8 INX &2514 e0 1e CPX #&1e ; &1d + 1 : string_01d : "The only accessible exit is " &2516 90 02 BCC &251a ; skip_wraparound &2518 a2 1b LDX #&1b ; string_01b : "The only visible exit is " ; skip_wraparound &251a 8e ab 22 STX &22ab ; only_visible_exit_string_id &251d a9 02 LDA #&02 ; TEXT_END_PERIOD &251f 8d a8 24 STA &24a8 ; exit_ending &2522 4c dc 24 JMP &24dc ; list_all_exits ; two_exits_remaining &2525 20 05 24 JSR &2405 ; conditionally_write_string_X_and_and &2528 18 CLC &2529 90 d9 BCC &2504 ; to_consider_next_direction # Always branches ; movement_direction &252b 00 ; handle_north &252c a0 00 LDY #&00 ; DIRECTION_NORTH ; consider_moving_in_direction &252e 8c 2b 25 STY &252b ; movement_direction &2531 ad bf 11 LDA &11bf ; object_locations + &13 (OBJECT_BASKET) &2534 c9 fe CMP #&fe ; ROOM_WEARING &2536 d0 05 BNE &253d ; not_wearing_basket &2538 a2 3b LDX #&3b ; string_23b : "You wander around, stumble and stand back up! You eventually find you've travelled nowhere! " &253a 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; not_wearing_basket &253d b9 07 13 LDA &1307,Y ; room_exits &2540 c9 ff CMP #&ff ; EXIT_NONE &2542 f0 09 BEQ &254d ; no_exit &2544 c9 fe CMP #&fe ; EXIT_CLOSED_DOOR &2546 d0 19 BNE &2561 ; use_exit &2548 a2 2c LDX #&2c ; string_02c : "Ouch! That hurt! " &254a 18 CLC &254b 90 11 BCC &255e ; to_write_string_from_table_zero_and_newline # Always branches ; no_exit &254d a2 40 LDX #&40 ; string_040 : "There is no exit " &254f a0 00 LDY #&00 &2551 20 22 20 JSR &2022 ; write_string &2554 20 1c 20 JSR &201c ; end_string_with_period &2557 ae 2b 25 LDX &252b ; movement_direction &255a bd 9a 24 LDA &249a,X ; directions_string_ids &255d aa TAX ; to_write_string_from_table_zero_and_newline &255e 4c b6 1f JMP &1fb6 ; write_string_from_table_zero_and_newline ; use_exit &2561 20 40 23 JSR &2340 ; check_for_dark_room # Returns carry clear if room is lit &2564 90 08 BCC &256e ; to_call_room_exit_handler &2566 20 a5 38 JSR &38a5 ; kill_player &2569 a2 0f LDX #&0f ; string_40f : "You stumble in the darkness! " &256b 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; to_call_room_exit_handler &256e 4c b1 25 JMP &25b1 ; call_room_exit_handler ; use_room_exit_Y &2571 b9 07 13 LDA &1307,Y ; room_exits &2574 8d 04 13 STA &1304 ; player_room &2577 4c c9 22 JMP &22c9 ; look_at_room ; handle_south &257a a0 01 LDY #&01 ; DIRECTION_SOUTH ; to_consider_moving_in_direction &257c 18 CLC &257d 90 af BCC &252e ; consider_moving_in_direction # Always branches ; handle_east &257f a0 02 LDY #&02 ; DIRECTION_EAST &2581 18 CLC &2582 90 f8 BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_west &2584 a0 03 LDY #&03 ; DIRECTION_WEST &2586 18 CLC &2587 90 f3 BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_northeast &2589 a0 04 LDY #&04 ; DIRECTION_NORTHEAST &258b 18 CLC &258c 90 ee BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_northwest &258e a0 05 LDY #&05 ; DIRECTION_NORTHWEST &2590 18 CLC &2591 90 e9 BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_southeast &2593 a0 06 LDY #&06 ; DIRECTION_SOUTHEAST &2595 18 CLC &2596 90 e4 BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_southwest &2598 a0 07 LDY #&07 ; DIRECTION_SOUTHWEST &259a 18 CLC &259b 90 df BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_up &259d a0 08 LDY #&08 ; DIRECTION_UP &259f 18 CLC &25a0 90 da BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_down &25a2 a0 09 LDY #&09 ; DIRECTION_DOWN &25a4 18 CLC &25a5 90 d5 BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_in &25a7 a0 0a LDY #&0a ; DIRECTION_IN &25a9 18 CLC &25aa 90 d0 BCC &257c ; to_consider_moving_in_direction # Always branches ; handle_out &25ac a0 0b LDY #&0b ; DIRECTION_OUT &25ae 18 CLC &25af 90 cb BCC &257c ; to_consider_moving_in_direction # Always branches ; call_room_exit_handler &25b1 a2 0a LDX #&0a ; check_for_handler_loop &25b3 bd ef 3c LDA &3cef,X ; rooms_with_exit_handlers &25b6 cd 04 13 CMP &1304 ; player_room &25b9 f0 06 BEQ &25c1 ; room_has_exit_handler &25bb ca DEX &25bc 10 f5 BPL &25b3 ; check_for_handler_loop &25be 4c 71 25 JMP &2571 ; use_room_exit_Y ; room_has_exit_handler &25c1 8a TXA &25c2 0a ASL A &25c3 aa TAX &25c4 bd fa 3c LDA &3cfa,X ; room_exit_handler_addresses &25c7 85 6c STA &6c ; room_exit_handler_address_low &25c9 bd fb 3c LDA &3cfb,X ; room_exit_handler_addresses + 1 &25cc 85 6d STA &6d ; room_exit_handler_address_high &25ce 6c 6c 00 JMP (&006c) ; room_exit_handler_address ; inventory_object &25d1 00 ; handle_inventory &25d2 a9 ff LDA #&ff ; ROOM_CARRYING &25d4 a2 1a LDX #&1a ; string_01a : "You are carrying " &25d6 20 72 2b JSR &2b72 ; list_objects_with_prefix &25d9 a9 fe LDA #&fe ; ROOM_WEARING &25db a2 19 LDX #&19 ; string_019 : "You are wearing " &25dd 20 72 2b JSR &2b72 ; list_objects_with_prefix &25e0 a2 00 LDX #&00 ; consider_carrying_or_wearing_objects_loop &25e2 bd ac 11 LDA &11ac,X ; object_locations &25e5 c9 ff CMP #&ff ; ROOM_CARRYING &25e7 f0 0c BEQ &25f5 ; is_carrying_or_wearing_object &25e9 c9 fe CMP #&fe ; ROOM_WEARING &25eb f0 08 BEQ &25f5 ; is_carrying_or_wearing_object ; consider_next_object &25ed e8 INX &25ee e0 38 CPX #&38 ; OBJECT_LAST + 1 &25f0 90 f0 BCC &25e2 ; consider_carrying_or_wearing_objects_loop &25f2 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; is_carrying_or_wearing_object &25f5 8a TXA &25f6 8d d1 25 STA &25d1 ; inventory_object &25f9 18 CLC &25fa 69 b3 ADC #&b3 ; ROOM_OBJECTS &25fc 48 PHA &25fd 20 5f 2c JSR &2c5f ; count_objects_in_room_A &2600 e0 00 CPX #&00 &2602 f0 0d BEQ &2611 ; object_is_empty &2604 ad d1 25 LDA &25d1 ; inventory_object &2607 20 54 2c JSR &2c54 ; write_the_object &260a 68 PLA &260b 48 PHA &260c a2 42 LDX #&42 ; string_042 : " has " &260e 20 72 2b JSR &2b72 ; list_objects_with_prefix ; object_is_empty &2611 68 PLA &2612 ae d1 25 LDX &25d1 ; inventory_object &2615 18 CLC &2616 90 d5 BCC &25ed ; consider_next_object # Always branches ; handle_examine &2618 ad bf 11 LDA &11bf ; object_locations + &13 (OBJECT_BASKET) &261b c9 fe CMP #&fe ; ROOM_WEARING &261d d0 03 BNE &2622 ; not_wearing_basket &261f 4c d0 22 JMP &22d0 ; you_see_a_basket ; not_wearing_basket &2622 20 c2 26 JSR &26c2 ; get_word_for_multiple_object_verbs # Returns carry clear if word found &2625 90 03 BCC &262a ; handle_examine_word &2627 4c bb 26 JMP &26bb ; you_see_nothing_of_interest ; handle_examine_word &262a e0 09 CPX #&09 ; WORD_CONJUNCTION &262c d0 06 BNE &2634 ; not_end_of_sentence &262e 20 6b 1e JSR &1e6b ; restore_previous_current_word &2631 4c bb 26 JMP &26bb ; you_see_nothing_of_interest ; not_end_of_sentence &2634 e0 03 CPX #&03 ; WORD_OBJECT &2636 f0 13 BEQ &264b ; handle_examine_object &2638 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &263a d0 06 BNE &2642 ; not_ambiguous_noun &263c 20 6b 1e JSR &1e6b ; restore_previous_current_word &263f 38 SEC &2640 b0 04 BCS &2646 ; you_see_nothing_of_interest # Always branches ; not_ambiguous_noun &2642 e0 07 CPX #&07 ; WORD_EVERYTHING &2644 d0 d2 BNE &2618 ; handle_examine ; you_see_nothing_of_interest &2646 a9 2d LDA #&2d ; string_02d : "You see nothing of interest. " &2648 4c 2d 27 JMP &272d ; handle_verb_everything ; handle_examine_object &264b aa TAX &264c 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry clear if object is accessible &264f 90 25 BCC &2676 ; handle_examine_accessible_object &2651 86 87 STX &87 ; object &2653 bd ac 11 LDA &11ac,X ; object_locations &2656 c9 b3 CMP #&b3 ; ROOM_OBJECTS &2658 90 12 BCC &266c ; not_object_in_object &265a c9 eb CMP #&eb ; ROOM_OBJECTS + OBJECTS_LAST + 1 &265c b0 0e BCS &266c ; not_object_in_object ; handle_examine_object_in_object &265e 38 SEC &265f e9 b3 SBC #&b3 ; ROOM_OBJECTS &2661 aa TAX &2662 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2665 b0 05 BCS &266c ; not_object_in_object ; handle_examine_object_in_accessible_object &2667 a6 87 LDX &87 ; object &2669 18 CLC &266a 90 0a BCC &2676 ; handle_examine_accessible_object # Always branches ; not_object_in_object &266c ad c1 26 LDA &26c1 ; word_type_for_multiple_object_verbs &266f c9 07 CMP #&07 ; WORD_EVERYTHING &2671 b0 4d BCS &26c0 ; leave &2673 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_examine_accessible_object &2676 c6 76 DEC &76 ; object_to_consider &2678 8a TXA &2679 48 PHA &267a ae aa 22 LDX &22aa ; examine_string_id &267d a0 00 LDY #&00 &267f 20 01 2c JSR &2c01 ; write_string_and_object_A # Write variant of "You examine the object" &2682 ee aa 22 INC &22aa ; examine_string_id &2685 ad aa 22 LDA &22aa ; examine_string_id &2688 c9 37 CMP #&37 ; &36 + 1 : string_036 : "You look at the " &268a 90 05 BCC &2691 ; skip_wraparound &268c a9 34 LDA #&34 ; string_034 : "You examine the " &268e 8d aa 22 STA &22aa ; examine_string_id ; skip_wraparound &2691 20 10 20 JSR &2010 ; end_string_with_nothing &2694 68 PLA &2695 48 PHA &2696 aa TAX &2697 bd 3c 13 LDA &133c,X ; object_extra_string_ids &269a 18 CLC &269b 7d e4 11 ADC &11e4,X ; object_states &269e aa TAX &269f 20 7c 1b JSR &1b7c ; use_uppercase &26a2 a0 00 LDY #&00 &26a4 20 22 20 JSR &2022 ; write_string # Write object description &26a7 68 PLA &26a8 18 CLC &26a9 69 b3 ADC #&b3 ; ROOM_OBJECTS &26ab 20 70 2b JSR &2b70 ; list_objects &26ae ad c1 26 LDA &26c1 ; word_type_for_multiple_object_verbs &26b1 c9 07 CMP #&07 ; WORD_EVERYTHING &26b3 90 03 BCC &26b8 ; to_check_for_scrolling_protecting_registers &26b5 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers ; to_check_for_scrolling_protecting_registers &26b8 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; you_see_nothing_of_interest &26bb a2 2d LDX #&2d ; string_02d : "You see nothing of interest. " &26bd 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline ; leave &26c0 60 RTS ; word_type_for_multiple_object_verbs &26c1 00 ; get_word_for_multiple_object_verbs &26c2 a9 38 LDA #&38 ; OBJECT_LAST + 1 &26c4 85 76 STA &76 ; object_to_consider &26c6 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &26c9 8e c1 26 STX &26c1 ; word_type_for_multiple_object_verbs &26cc 60 RTS ; objects_to_apply_verb_to ; directions_to_apply_verb_to &26cd ff ff ff ff ff ff ff ff ff ff ff ff ; ambiguous_noun_for_multiple_object_verb &26d9 ff ; handle_drop &26da 20 c2 26 JSR &26c2 ; get_word_for_multiple_object_verbs # Returns carry clear if word found &26dd 90 05 BCC &26e4 ; handle_drop_word &26df a2 2b LDX #&2b ; string_02b : "You didn't drop anything! " &26e1 4c b6 1f JMP &1fb6 ; write_string_from_table_zero_and_newline ; handle_drop_word &26e4 e0 07 CPX #&07 ; WORD_EVERYTHING &26e6 f0 43 BEQ &272b ; handle_drop_everything &26e8 e0 03 CPX #&03 ; WORD_OBJECT &26ea 90 ee BCC &26da ; handle_drop &26ec f0 0d BEQ &26fb ; handle_drop_object &26ee e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &26f0 d0 06 BNE &26f8 ; to_you_can't_do_that ; handle_drop_ambiguous_noun &26f2 20 6b 1e JSR &1e6b ; restore_previous_current_word &26f5 38 SEC &26f6 b0 33 BCS &272b ; handle_drop_everything # Always branches ; to_you_can't_do_that &26f8 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_drop_object &26fb aa TAX &26fc bd ac 11 LDA &11ac,X ; object_locations &26ff c9 ff CMP #&ff ; ROOM_CARRYING &2701 f0 15 BEQ &2718 ; handle_drop_accessible_object &2703 ad c1 26 LDA &26c1 ; word_type_for_multiple_object_verbs &2706 c9 07 CMP #&07 ; WORD_EVERYTHING &2708 b0 0d BCS &2717 ; leave &270a bd ac 11 LDA &11ac,X ; object_locations &270d c9 fe CMP #&fe ; ROOM_WEARING &270f d0 e7 BNE &26f8 ; to_you_can't_do_that &2711 8a TXA &2712 a2 43 LDX #&43 ; string_043 : "Remove the " &2714 18 CLC &2715 90 0c BCC &2723 ; write_string_and_object_A_with_scrolling ; leave &2717 60 RTS ; handle_drop_accessible_object &2718 c6 76 DEC &76 ; object_to_consider &271a ad 04 13 LDA &1304 ; player_room &271d 9d ac 11 STA &11ac,X ; object_locations &2720 8a TXA &2721 a2 27 LDX #&27 ; string_027 : "You drop the " ; write_string_and_object_A_with_scrolling &2723 a0 00 LDY #&00 &2725 20 01 2c JSR &2c01 ; write_string_and_object_A &2728 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; handle_drop_everything &272b a9 2b LDA #&2b ; string_02b : "You didn't drop anything! " ; handle_verb_everything &272d 8d f7 27 STA &27f7 ; multiple_object_verb_error_string_id &2730 a0 0b LDY #&0b &2732 a9 ff LDA #&ff &2734 8d d9 26 STA &26d9 ; ambiguous_noun_for_multiple_object_verb ; clear_objects_to_apply_verb_to_loop &2737 99 cd 26 STA &26cd,Y ; objects_to_apply_verb_to &273a 88 DEY &273b 10 fa BPL &2737 ; clear_objects_to_apply_verb_to_loop &273d 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &2740 b0 4d BCS &278f ; apply_verb_to_objects_after_restoring_previous_current_word &2742 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &2744 d0 0b BNE &2751 ; not_ambiguous_noun &2746 8d d9 26 STA &26d9 ; ambiguous_noun_for_multiple_object_verb &2749 8e c1 26 STX &26c1 ; word_type_for_multiple_object_verbs &274c 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &274f b0 3e BCS &278f ; apply_verb_to_objects_after_restoring_previous_current_word ; not_ambiguous_noun &2751 e0 08 CPX #&08 ; WORD_EXCEPT &2753 d0 3a BNE &278f ; apply_verb_to_objects_after_restoring_previous_current_word &2755 a9 0b LDA #&0b &2757 85 67 STA &67 ; slot_offset ; handle_verb_everything_loop &2759 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &275c b0 31 BCS &278f ; apply_verb_to_objects_after_restoring_previous_current_word &275e e0 03 CPX #&03 ; WORD_OBJECT &2760 90 f7 BCC &2759 ; handle_verb_everything_loop &2762 f0 20 BEQ &2784 ; is_object &2764 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &2766 f0 0f BEQ &2777 ; is_ambiguous_noun &2768 e0 09 CPX #&09 ; WORD_CONJUNCTION &276a d0 ed BNE &2759 ; handle_verb_everything_loop &276c 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &276f e0 03 CPX #&03 ; WORD_OBJECT &2771 f0 11 BEQ &2784 ; is_object &2773 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &2775 d0 06 BNE &277d ; is_other_word ; is_ambiguous_noun &2777 20 e1 1e JSR &1ee1 ; get_object_or_with_what # Returns carry clear if object found &277a 90 08 BCC &2784 ; is_object &277c 60 RTS ; is_other_word &277d c6 6e DEC &6e ; current_word &277f c6 6e DEC &6e ; current_word &2781 4c 92 27 JMP &2792 ; apply_verb_to_objects ; is_object &2784 a4 67 LDY &67 ; slot_offset &2786 99 cd 26 STA &26cd,Y ; objects_to_apply_verb_to &2789 c6 67 DEC &67 ; slot_offset &278b 10 cc BPL &2759 ; handle_verb_everything_loop &278d 30 03 BMI &2792 ; apply_verb_to_objects # Always branches ; apply_verb_to_objects_after_restoring_previous_current_word &278f 20 6b 1e JSR &1e6b ; restore_previous_current_word ; apply_verb_to_objects &2792 a9 00 LDA #&00 ; apply_verb_to_objects_loop &2794 85 66 STA &66 ; object &2796 a2 00 LDX #&00 ; find_ambiguous_noun_loop &2798 ad d9 26 LDA &26d9 ; ambiguous_noun_for_multiple_object_verb &279b c9 ff CMP #&ff &279d f0 18 BEQ &27b7 ; use_object &279f bd d1 1a LDA &1ad1,X ; disambiguation_table &27a2 cd d9 26 CMP &26d9 ; ambiguous_noun_for_multiple_object_verb &27a5 d0 07 BNE &27ae ; consider_next_disambiguation &27a7 bd d2 1a LDA &1ad2,X ; disambiguation_table + 1 &27aa c5 66 CMP &66 ; object &27ac f0 09 BEQ &27b7 ; use_object ; consider_next_disambiguation &27ae e8 INX &27af e8 INX &27b0 e0 2c CPX #&2c &27b2 90 e4 BCC &2798 ; find_ambiguous_noun_loop &27b4 4c e2 27 JMP &27e2 ; consider_next_object_for_multiple_verb ; use_object &27b7 a0 0b LDY #&0b ; search_for_object_in_slots_loop &27b9 b9 cd 26 LDA &26cd,Y ; objects_to_apply_verb_to &27bc c5 66 CMP &66 ; object &27be f0 22 BEQ &27e2 ; consider_next_object_for_multiple_verb &27c0 88 DEY &27c1 10 f6 BPL &27b9 ; search_for_object_in_slots_loop &27c3 20 10 20 JSR &2010 ; end_string_with_nothing &27c6 a5 66 LDA &66 ; object &27c8 ac f7 27 LDY &27f7 ; multiple_object_verb_error_string_id &27cb c0 2b CPY #&2b ; string_02b : "You didn't drop anything! " &27cd f0 10 BEQ &27df ; drop_one_object_of_many &27cf c0 2a CPY #&2a ; string_02a : "You get nothing! " &27d1 f0 06 BEQ &27d9 ; get_one_object_of_many ; examine_one_object_of_many &27d3 20 4b 26 JSR &264b ; handle_examine_object &27d6 18 CLC &27d7 90 09 BCC &27e2 ; consider_next_object_for_multiple_verb # Always branches ; get_one_object_of_many &27d9 20 26 28 JSR &2826 ; handle_get_object &27dc 18 CLC &27dd 90 03 BCC &27e2 ; consider_next_object_for_multiple_verb # Always branches ; drop_one_object_of_many &27df 20 fb 26 JSR &26fb ; handle_drop_object ; consider_next_object_for_multiple_verb &27e2 e6 66 INC &66 ; object &27e4 a5 66 LDA &66 ; object &27e6 c9 38 CMP #&38 ; OBJECT_LAST + 1 &27e8 90 aa BCC &2794 ; apply_verb_to_objects_loop &27ea c5 76 CMP &76 ; object_to_consider &27ec d0 19 BNE &2807 ; leave &27ee ae f7 27 LDX &27f7 ; multiple_object_verb_error_string_id &27f1 20 10 20 JSR &2010 ; end_string_with_nothing &27f4 4c b6 1f JMP &1fb6 ; write_string_from_table_zero_and_newline ; multiple_object_verb_error_string_id &27f7 00 ; handle_get_everything &27f8 a9 2a LDA #&2a ; string_02a : "You get nothing! " &27fa 4c 2d 27 JMP &272d ; handle_verb_everything ; handle_get &27fd 20 c2 26 JSR &26c2 ; get_word_for_multiple_object_verbs # Returns carry clear if word found &2800 90 06 BCC &2808 ; handle_get_word &2802 a2 2a LDX #&2a ; string_02a : "You get nothing! " &2804 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline ; leave &2807 60 RTS ; handle_get_word &2808 e0 03 CPX #&03 ; WORD_OBJECT &280a 90 f1 BCC &27fd ; handle_get &280c e0 04 CPX #&04 ; WORD_NOUN &280e d0 04 BNE &2814 ; not_noun ; handle_get_noun &2810 c9 13 CMP #&13 ; NOUN_OFF &2812 f0 e9 BEQ &27fd ; handle_get ; not_noun &2814 e0 07 CPX #&07 ; WORD_EVERYTHING &2816 f0 e0 BEQ &27f8 ; handle_get_everything &2818 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &281a d0 06 BNE &2822 ; not_ambiguous_noun ; handle_get_ambiguous_noun &281c 20 6b 1e JSR &1e6b ; restore_previous_current_word &281f 38 SEC &2820 b0 d6 BCS &27f8 ; handle_examine_everything # Always branches ; not_ambiguous_noun &2822 e0 03 CPX #&03 ; WORD_OBJECT &2824 d0 39 BNE &285f ; not_object_in_object ; handle_get_object &2826 aa TAX &2827 bd ac 11 LDA &11ac,X ; object_locations &282a cd 04 13 CMP &1304 ; player_room &282d f0 3b BEQ &286a ; handle_get_accessible_object &282f ad c1 26 LDA &26c1 ; word_type_for_multiple_object_verbs &2832 c9 07 CMP #&07 ; WORD_EVERYTHING &2834 f0 33 BEQ &2869 ; leave &2836 bd ac 11 LDA &11ac,X ; object_locations &2839 c9 fe CMP #&fe ; ROOM_WEARING &283b f0 2d BEQ &286a ; handle_get_accessible_object &283d c9 ff CMP #&ff ; ROOM_CARRYING &283f d0 06 BNE &2847 ; not_already_carrying_object ; handle_get_accessible_object &2841 8a TXA &2842 a2 28 LDX #&28 ; string_028 : "You are already holding the " &2844 4c 23 27 JMP &2723 ; write_string_and_object_A_with_scrolling ; not_already_carrying_object &2847 c9 b3 CMP #&b3 ; ROOM_OBJECTS &2849 90 14 BCC &285f ; not_object_in_object &284b c9 eb CMP #&eb ; ROOM_OBJECTS + OBJECTS_LAST + 1 &284d b0 10 BCS &285f ; not_object_in_object ; handle_get_object_in_object &284f 38 SEC &2850 e9 b3 SBC #&b3 ; ROOM_OBJECTS &2852 86 87 STX &87 ; object &2854 aa TAX &2855 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2858 b0 05 BCS &285f ; not_object_in_object ; handle_get_object_in_accessible_object &285a a6 87 LDX &87 ; object &285c 18 CLC &285d 90 0b BCC &286a ; handle_get_accessible_object # Always branches ; not_object_in_object &285f ad c1 26 LDA &26c1 ; word_type_for_multiple_object_verbs &2862 c9 0b CMP #&0b ; WORD_AMBIGUOUS_NOUN &2864 f0 03 BEQ &2869 ; leave &2866 4c 3d 1e JMP &1e3d ; you_can't_do_that ; leave &2869 60 RTS ; handle_get_accessible_object &286a e0 00 CPX #&00 ; OBJECT_CAN &286c d0 20 BNE &288e ; handle_get_accessible_object_not_can &286e 38 SEC # Set carry to suppress error &286f 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry set if no object found &2872 b0 15 BCS &2889 ; handle_get_can_not_with_pointed_twig &2874 c9 04 CMP #&04 ; OBJECT_POINTED_TWIG &2876 d0 11 BNE &2889 ; handle_get_can_not_with_pointed_twig ; handle_get_can_with_pointed_twig &2878 ad b0 11 LDA &11b0 ; object_locations + &04 (OBJECT_POINTED_TWIG) &287b c9 ff CMP #&ff ; ROOM_CARRYING &287d d0 e0 BNE &285f ; not_object_in_object &287f a9 b7 LDA #&b7 ; ROOM_OBJECTS + OBJECT_POINTED_TWIG &2881 8d ac 11 STA &11ac ; object_locations + &00 (OBJECT_CAN) &2884 a2 09 LDX #&09 ; string_209 : "You carry the tin safely. " ; to_write_string_from_table_two_and_newline &2886 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; handle_get_can_not_with_pointed_twig &2889 a2 00 LDX #&00 ; OBJECT_CAN &288b 18 CLC &288c 90 37 BCC &28c5 ; check_for_immovable_object_X # Always branches ; handle_get_accessible_object_not_can &288e e0 1c CPX #&1c ; OBJECT_NAILS &2890 f0 04 BEQ &2896 ; handle_get_nails_or_plank &2892 e0 16 CPX #&16 ; OBJECT_PLANK &2894 d0 2f BNE &28c5 ; check_for_immovable_object_X ; handle_get_nails_or_plank &2896 86 87 STX &87 ; object &2898 38 SEC # Set carry to suppress error &2899 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry set if no object found &289c b0 25 BCS &28c3 ; check_for_immovable_object &289e c9 17 CMP #&17 ; OBJECT_HAMMER &28a0 d0 21 BNE &28c3 ; check_for_immovable_object ; handle_get_nails_or_plank_with_hammer &28a2 ad c3 11 LDA &11c3 ; object_locations + &17 (OBJECT_HAMMER) &28a5 c9 ff CMP #&ff ; ROOM_CARRYING &28a7 d0 b6 BNE &285f ; not_object_in_object &28a9 ac 35 13 LDY &1335 ; immovable_objects + 9 &28ac 30 b1 BMI &285f ; not_object_in_object &28ae 8d 35 13 STA &1335 ; immovable_objects + 9 &28b1 a9 fd LDA #&fd ; ROOM_DESTROYED &28b3 8d c8 11 STA &11c8 ; object_locations + &1c (OBJECT_NAILS) &28b6 a9 80 LDA #&80 ; DOOR_CLOSED # Set cabin door to be closed &28b8 8d 88 11 STA &1188 ; door_states + DOOR_00 &28bb ee 6e 12 INC &126e ; room_states + &1a ; &02 = &27 - &25 : string_127 : "the plank which formerly blocked the cabin door has been removed. " &28be a2 3d LDX #&3d ; string_23d : "You lever the plank with the hammer. The nails disappear into the undergrowth and the plank lands before you! " &28c0 38 SEC &28c1 b0 c3 BCS &2886 ; to_write_string_from_table_two_and_newline # Always branches ; check_for_immovable_object &28c3 a6 87 LDX &87 ; object ; check_for_immovable_object_X &28c5 a0 0f LDY #&0f &28c7 8a TXA &28c8 18 CLC ; check_for_immovable_object_loop &28c9 d9 2c 13 CMP &132c,Y ; immovable_objects &28cc f0 10 BEQ &28de ; is_immovable &28ce 88 DEY &28cf 10 f8 BPL &28c9 ; check_for_immovable_object_loop &28d1 c6 76 DEC &76 ; object_to_consider &28d3 a9 ff LDA #&ff ; ROOM_CARRYING &28d5 9d ac 11 STA &11ac,X ; object_locations &28d8 8a TXA &28d9 a2 25 LDX #&25 ; string_025 : "You carry the " &28db 4c 23 27 JMP &2723 ; write_string_and_object_A_with_scrolling ; is_immovable &28de ad c1 26 LDA &26c1 ; word_type_for_multiple_object_verbs &28e1 c9 07 CMP #&07 ; WORD_EVERYTHING &28e3 b0 84 BCS &2869 ; leave &28e5 8a TXA &28e6 a2 17 LDX #&17 ; string_017 : "You are unable to move the " ; to_write_string_and_object_A_with_scrolling &28e8 4c 23 27 JMP &2723 ; write_string_and_object_A_with_scrolling ; handle_wear &28eb 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &28ee 90 01 BCC &28f1 ; handle_wear_object &28f0 60 RTS ; handle_wear_object &28f1 aa TAX &28f2 bd ac 11 LDA &11ac,X ; object_locations &28f5 c9 ff CMP #&ff : ROOM_CARRYING &28f7 f0 18 BEQ &2911 ; handle_wear_carried_object &28f9 cd 04 13 CMP &1304 ; player_room &28fc d0 06 BNE &2904 ; check_if_already_wearing_object ; you_are_not_carrying_the_object &28fe 8a TXA &28ff a2 44 LDX #&44 ; string_044 : "You are not carrying the " &2901 4c 23 27 JMP &2723 ; write_string_and_object_A_with_scrolling ; check_if_already_wearing_object &2904 c9 fe CMP #&fe ; ROOM_WEARING &2906 d0 06 BNE &290e ; to_you_can't_do_that &2908 8a TXA &2909 a2 29 LDX #&29 ; string_029 : "You are already wearing the " &290b 18 CLC &290c 90 da BCC &28e8 ; to_write_string_and_object_A_with_scrolling # Always branches ; to_you_can't_do_that &290e 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_wear_carried_object &2911 8a TXA &2912 a0 05 LDY #&05 ; check_for_wearable_object_loop &2914 d9 53 29 CMP &2953,Y ; wearable_objects &2917 f0 08 BEQ &2921 ; handle_wear_wearable_carried_object &2919 88 DEY &291a 10 f8 BPL &2914 ; check_for_wearable_object_loop &291c a2 24 LDX #&24 ; string_024 : "You cannot wear the " &291e 18 CLC ; to_to_write_string_and_object_A_with_scrolling &291f 90 c7 BCC &28e8 ; to_write_string_and_object_A_with_scrolling # Always branches ; handle_wear_wearable_carried_object &2921 a9 fe LDA #&fe ; ROOM_WEARING &2923 9d ac 11 STA &11ac,X ; object_locations &2926 e0 01 CPX #&01 ; OBJECT_BAG &2928 d0 05 BNE &292f ; not_bag ; handle_wear_bag &292a a2 0f LDX #&0f ; string_10f : "You wear the bag on your hand. " &292c 4c bd 1f JMP &1fbd ; write_string_from_table_one_and_newline ; not_bag &292f e0 13 CPX #&13 ; OBJECT_BASKET &2931 d0 1a BNE &294d ; handle_wear_not_bag_or_basket ; handle_wear_basket &2933 8a TXA &2934 18 CLC &2935 69 b3 ADC #&b3 ; ROOM_OBJECTS &2937 20 5f 2c JSR &2c5f ; count_objects_in_room_A &293a e0 00 CPX #&00 &293c d0 05 BNE &2943 ; handle_wear_basket_containing_objects &293e a2 38 LDX #&38 ; string_238 : "You wear the basket on your head! " ; to_write_string_from_table_two_and_newline &2940 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; handle_wear_basket_containing_objects &2943 a9 ff LDA #&ff ; ROOM_CARRYING &2945 8d bf 11 STA &11bf ; object_locations + &13 (OBJECT_BASKET) &2948 a2 39 LDX #&39 ; "There is something in it! " &294a 18 CLC &294b 90 f3 BCC &2940 ; to_write_string_from_table_two_and_newline # Always branches ; handle_wear_not_bag_or_basket &294d 8a TXA &294e a2 26 LDX #&26 ; string_026 : "You wear the " &2950 18 CLC &2951 90 cc BCC &291f ; to_to_write_string_and_object_A_with_scrolling # Always branches ; wearable_objects &2953 01 ; OBJECT_BAG &2954 07 ; OBJECT_UNIFORM &2955 08 ; OBJECT_SUIT &2956 0e ; OBJECT_BANDAGE &2957 13 ; OBJECT_BASKET &2958 25 ; OBJECT_OVERALLS ; filename_buffer &2959 20 20 20 20 20 20 20 0d ; " \r" ; file_block &2961 59 29 ; filename &2959 = filename_buffer &2963 88 11 ff ff ; load address &1188 = game_state &2967 88 11 ff ff ; execution address &1188 = game_state &296b 88 11 ff ff ; start address &1188 = game_state &296f 3c 13 ff ff ; end address &133c = end_of_game_state ; initial_file_block &2973 59 29 ; filename &2959 = filename_buffer &2975 88 11 ff ff ; load address &1188 = game_state &2979 88 11 ff ff ; execution address &1188 = game_state &297d 88 11 ff ff ; start address &1188 = game_state &2981 3c 13 ff ff ; end address &133c = end_of_game_state ; get_filename &2985 a0 00 LDY #&00 &2987 20 22 20 JSR &2022 ; write_string &298a a2 31 LDX #&31 ; string_031 : " adventure: type file name or press return to exit. " &298c 20 b6 1f JSR &1fb6 ; write_string_from_table_zero_and_newline &298f 20 e7 ff JSR &ffe7 ; OSNEWL &2992 a2 11 LDX #&11 ; copy_file_block_loop &2994 bd 73 29 LDA &2973,X ; initial_file_block &2997 9d 61 29 STA &2961,X ; file_block &299a ca DEX &299b 10 f7 BPL &2994 ; copy_file_block_loop &299d a9 3a LDA #&3a ; ":" &299f 20 ee ff JSR &ffee ; OSWRCH &29a2 85 7d STA &7d ; allow_previous_input &29a4 a2 59 LDX #&59 &29a6 a0 29 LDY #&29 ; &2959 = filename_buffer &29a8 a9 07 LDA #&07 ; 7 characters maximum &29aa 4c 96 1b JMP &1b96 ; get_input ; handle_save &29ad a2 2f LDX #&2f ; string_02f : "Save" &29af a9 00 LDA #&00 ; save a file ; save_or_load_file &29b1 48 PHA &29b2 20 85 29 JSR &2985 ; get_filename &29b5 c0 00 CPY #&00 &29b7 f0 0c BEQ &29c5 ; skip_file &29b9 20 e4 62 JSR &62e4 ; enable_keyboard_interrupts &29bc 68 PLA &29bd 48 PHA &29be a2 61 LDX #&61 &29c0 a0 29 LDY #&29 ; &2961 = file_block &29c2 20 dd ff JSR &ffdd ; OSFILE ; skip_file &29c5 20 e7 ff JSR &ffe7 ; OSNEWL &29c8 20 8e 63 JSR &638e ; write_ok &29cb 68 PLA &29cc d0 01 BNE &29cf ; look_after_restore &29ce 60 RTS ; look_after_restore &29cf 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &29d2 4c c9 22 JMP &22c9 ; look_at_room ; handle_restore &29d5 a2 30 LDX #&30 ; string_030 : "Load" &29d7 a9 ff LDA #&ff ; load a file &29d9 18 CLC &29da 90 d5 BCC &29b1 ; save_or_load_file ; handle_put &29dc 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &29df b0 0d BCS &29ee ; leave &29e1 e0 03 CPX #&03 ; WORD_OBJECT &29e3 f0 3a BEQ &2a1f ; handle_put_object &29e5 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &29e7 d0 06 BNE &29ef ; handle_put_other_word &29e9 20 e1 1e JSR &1ee1 ; get_object_or_with_what # Returns carry clear if object found &29ec 90 31 BCC &2a1f ; handle_put_object ; leave &29ee 60 RTS ; handle_put_other_word &29ef e0 04 CPX #&04 ; WORD_NOUN &29f1 d0 10 BNE &2a03 ; handle_put_not_noun &29f3 c9 12 CMP #&12 ; WORD_ON &29f5 d0 5c BNE &2a53 ; to_you_can't_do_that &29f7 a9 15 LDA #&15 ; VERB_WEAR &29f9 85 8e STA &8e ; word_value &29fb a9 80 LDA #&80 ; WORD_VERB | WORD_ACCEPTS_MULTIPLE_OBJECTS &29fd 85 8c STA &8c ; word_type &29ff 18 CLC &2a00 4c eb 28 JMP &28eb ; handle_wear ; handle_put_not_noun &2a03 e0 01 CPX #&01 ; WORD_DIRECTION &2a05 d0 4c BNE &2a53 ; to_you_can't_do_that &2a07 c9 09 CMP #&09 ; DIRECTION_DOWN &2a09 f0 08 BEQ &2a13 ; handle_put_down &2a0b c9 0b CMP #&0b ; DIRECTION_OUT &2a0d d0 44 BNE &2a53 ; to_you_can't_do_that &2a0f 18 CLC &2a10 4c d6 36 JMP &36d6 ; handle_extinguish ; handle_put_down &2a13 a9 80 LDA #&80 ; WORD_VERB | WORD_ACCEPTS_MULTIPLE_OBJECTS &2a15 85 8c STA &8c ; word_type &2a17 a9 13 LDA #&13 ; VERB_DROP &2a19 85 8e STA &8e ; word_value &2a1b 18 CLC &2a1c 4c da 26 JMP &26da ; handle_drop ; handle_put_object &2a1f 85 87 STA &87 ; object &2a21 aa TAX &2a22 bd ac 11 LDA &11ac,X ; object_locations &2a25 c9 ff CMP #&ff ; ROOM_CARRYING &2a27 f0 0c BEQ &2a35 ; handle_put_carried_object &2a29 e0 00 CPX #&00 ; OBJECT_CAN &2a2b f0 40 BEQ &2a6d ; handle_put_can &2a2d cd 04 13 CMP &1304 ; player_room &2a30 d0 21 BNE &2a53 ; to_you_can't_do_that &2a32 4c fe 28 JMP &28fe ; you_are_not_carrying_the_object ; handle_put_carried_object &2a35 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &2a38 b0 1c BCS &2a56 ; leave &2a3a e0 09 CPX #&09 ; WORD_CONJUNCTION &2a3c f0 f7 BEQ &2a35 ; handle_put_carried_object &2a3e e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &2a40 d0 05 BNE &2a47 ; skip_disambiguation &2a42 20 e1 1e JSR &1ee1 ; get_object_or_with_what # Returns carry clear if object found &2a45 b0 a7 BCS &29ee ; leave ; skip_disambiguation &2a47 e0 03 CPX #&03 ; WORD_OBJECT &2a49 d0 ea BNE &2a35 ; handle_put_carried_object &2a4b 85 88 STA &88 ; object_two &2a4d c5 87 CMP &87 ; object &2a4f f0 e4 BEQ &2a35 ; handle_put_carried_object &2a51 d0 04 BNE &2a57 ; handle_put_object_object # Always branches ; to_you_can't_do_that &2a53 4c 3d 1e JMP &1e3d ; you_can't_do_that ; leave &2a56 60 RTS ; handle_put_object_object &2a57 aa TAX &2a58 a5 87 LDA &87 ; object &2a5a e0 0a CPX #&0a ; OBJECT_HEAD &2a5c f0 65 BEQ &2ac3 ; handle_put_head_object &2a5e e0 09 CPX #&09 ; OBJECT_HANDS &2a60 f0 5a BEQ &2abc ; handle_put_hands_object &2a62 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2a65 b0 ec BCS &2a53 ; to_you_can't_do_that &2a67 a5 87 LDA &87 ; object &2a69 e0 02 CPX #&02 ; OBJECT_HOLE &2a6b d0 13 BNE &2a80 ; handle_put_not_hole ; handle_put_can &2a6d ad 04 13 LDA &1304 ; player_room &2a70 d0 e1 BNE &2a53 ; to_you_can't_do_that &2a72 a9 b5 LDA #&b5 ; ROOM_OBJECTS + OBJECT_HOLE &2a74 20 5f 2c JSR &2c5f ; count_objects_in_room_A &2a77 e0 00 CPX #&00 &2a79 d0 d8 BNE &2a53 ; to_you_can't_do_that &2a7b a6 87 LDX &87 ; object &2a7d 4c f9 30 JMP &30f9 ; handle_cover_hole_with_object ; handle_put_not_hole &2a80 e0 00 CPX #&00 ; OBJECT_CAN &2a82 d0 07 BNE &2a8b ; check_for_put_object_handler &2a84 c9 04 CMP #&04 ; OBJECT_POINTED_TWIG &2a86 d0 cb BNE &2a53 ; to_you_can't_do_that &2a88 4c 78 28 JMP &2878 ; handle_get_can_with_pointed_twig ; check_for_put_object_handler &2a8b a0 11 LDY #&11 ; check_for_put_object_handler_loop &2a8d b9 37 2b LDA &2b37,Y ; objects_with_put_handlers &2a90 c5 88 CMP &88 ; object_two &2a92 f0 05 BEQ &2a99 ; call_put_object_handler &2a94 88 DEY &2a95 10 f6 BPL &2a8d ; check_for_put_object_handler_loop &2a97 30 ba BMI &2a53 ; to_you_can't_do_that ; call_put_object_handler &2a99 98 TYA &2a9a 0a ASL A &2a9b a8 TAY &2a9c b9 49 2b LDA &2b49,Y ; put_object_handler_addresses_low &2a9f 85 6c STA &6c ; put_object_handler_address_low &2aa1 b9 4a 2b LDA &2b4a,Y ; put_object_handler_addresses_high &2aa4 85 6d STA &6d ; put_object_handler_address_high &2aa6 a5 87 LDA &87 ; object &2aa8 6c 6c 00 JMP (&006c) ; put_object_handler_address ; handle_put_drum_or_jar &2aab c9 05 CMP #&05 ; OBJECT_LID &2aad d0 a4 BNE &2a53 ; to_you_can't_do_that ; handle_put_container &2aaf a5 88 LDA &88 ; object_two &2ab1 18 CLC &2ab2 69 b3 ADC #&b3 ; ROOM_OBJECTS &2ab4 a6 87 LDX &87 ; object &2ab6 9d ac 11 STA &11ac,X ; object_locations &2ab9 4c 8e 63 JMP &638e ; write_ok ; handle_put_hands_object &2abc c9 01 CMP #&01 ; OBJECT_BAG &2abe d0 93 BNE &2a53 ; to_you_can't_do_that ; to_handle_wear_object &2ac0 4c f1 28 JMP &28f1 ; handle_wear_object ; handle_put_head_object &2ac3 c9 13 CMP #&13 ; OBJECT_BASKET &2ac5 d0 8c BNE &2a53 ; to_you_can't_do_that &2ac7 f0 f7 BEQ &2ac0 ; to_handle_wear_object # Always branches ; handle_put_hook &2ac9 c9 11 CMP #&11 ; OBJECT_SMALL_KEY &2acb f0 e2 BEQ &2aaf ; handle_put_container &2acd d0 22 BNE &2af1 ; to_you_can't_do_that # Always branches ; it_is_too_large &2acf a2 04 LDX #&04 ; "It is too large! " &2ad1 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; handle_put_basket_or_large_chest &2ad4 c9 19 CMP #&19 ; OBJECT_MATTRESS &2ad6 f0 f7 BEQ &2acf ; it_is_too_large &2ad8 bd e4 11 LDA &11e4,X ; object_states &2adb d0 14 BNE &2af1 ; to_you_can't_do_that &2add bd ac 11 LDA &11ac,X ; object_locations &2ae0 c9 fe CMP #&fe ; OBJECT_WEARING &2ae2 f0 0d BEQ &2af1 ; to_you_can't_do_that &2ae4 18 CLC &2ae5 90 c8 BCC &2aaf ; handle_put_container # Always branches ; handle_put_small_chest &2ae7 c9 10 CMP #&10 ; OBJECT_LARGE_CHEST &2ae9 f0 e4 BEQ &2acf ; it_is_too_large &2aeb c9 13 CMP #&13 ; OBJECT_BASKET &2aed f0 e0 BEQ &2acf ; it_is_too_large &2aef d0 e3 BNE &2ad4 ; handle_put_basket_or_large_chest # Always branches ; to_you_can't_do_that &2af1 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_put_bed &2af4 c9 19 CMP #&19 ; OBJECT_MATTRESS &2af6 d0 f9 BNE &2af1 ; to_you_can't_do_that &2af8 f0 b5 BEQ &2aaf ; handle_put_container # Always branches ; handle_put_quicksand &2afa c9 16 CMP #&16 ; OBJECT_PLANK &2afc f0 0f BEQ &2b0d ; put_plank_in_quicksand &2afe aa TAX &2aff a9 fd LDA #&fd ; ROOM_DESTROYED &2b01 9d ac 11 STA &11ac,X ; object_locations ; write_slurp &2b04 a2 43 LDX #&43 ; &3b43 = slurp_string &2b06 a0 3b LDY #&3b ; write_yellow_lowercase_string_at_address_and_newline &2b08 a9 83 LDA #&83 ; TEXT_YELLOW &2b0a 4c 90 1b JMP &1b90 ; write_lowercase_string_at_address_and_newline ; put_plank_in_quicksand &2b0d ad 04 13 LDA &1304 ; player_room &2b10 8d c2 11 STA &11c2 ; object_locations + &16 (OBJECT_PLANK) &2b13 4c 8e 63 JMP &638e ; write_ok ; handle_put_forked_twig &2b16 c9 0e CMP #&0e ; OBJECT_BANDAGE &2b18 d0 d7 BNE &2af1 ; to_you_can't_do_that ; to_make_catapult &2b1a 4c e5 34 JMP &34e5 ; make_catapult ; handle_put_bandage &2b1d c9 0c CMP #&0c ; OBJECT_FORKED_TWIG &2b1f d0 d0 BNE &2af1 ; to_you_can't_do_that &2b21 18 CLC &2b22 90 f6 BCC &2b1a ; to_make_catapult # Always branches ; handle_put_torch &2b24 c9 31 CMP #&31 ; OBJECT_BULB &2b26 d0 c9 BNE &2af1 ; to_you_can't_do_that ; to_handle_put_container &2b28 4c af 2a JMP &2aaf ; handle_put_container ; handle_put_powermatic_or_radio &2b2b c9 2b CMP #&2b ; OBJECT_BATTERY &2b2d d0 c2 BNE &2af1 ; to_you_can't_do_that &2b2f f0 f7 BEQ &2b28 ; to_handle_put_container # Always branches ; handle_put_lighthouse &2b31 c9 2b CMP #&2b ; OBJECT_BATTERY &2b33 f0 f3 BEQ &2b28 ; to_handle_put_container &2b35 d0 ed BNE &2b24 ; handle_put_torch # Always branches ; objects_with_put_handlers &2b37 03 ; OBJECT_DRUM &2b38 1d ; OBJECT_JAR &2b39 1a ; OBJECT_HOOK &2b3a 13 ; OBJECT_BASKET &2b3b 0f ; OBJECT_SMALL_CHEST &2b3c 10 ; OBJECT_LARGE_CHEST &2b3d 0d ; OBJECT_BED &2b3e 18 ; OBJECT_QUICKSAND &2b3f 0c ; OBJECT_FORKED_TWIG &2b40 0e ; OBJECT_BANDAGE &2b41 37 ; OBJECT_TABLE &2b42 36 ; OBJECT_TOY_BOX &2b43 35 ; OBJECT_CARDBOARD_BOX &2b44 34 ; OBJECT_SACK &2b45 2a ; OBJECT_TORCH &2b46 2c ; OBJECT_POWERMATIC &2b47 33 ; OBJECT_RADIO &2b48 32 ; OBJECT_LIGHTHOUSE ; put_object_handler_addresses &2b49 ab 2a ; &2aab ; handle_put_drum_or_jar &2b4b ab 2a ; &2aab ; handle_put_drum_or_jar &2b4d c9 2a ; &2ac9 ; handle_put_hook &2b4f d4 2a ; &2ad4 ; handle_put_basket_or_large_chest &2b51 e7 2a ; &2ae7 ; handle_put_small_chest &2b53 d4 2a ; &2ad4 ; handle_put_basket_or_large_chest &2b55 f4 2a ; &2af4 ; handle_put_bed &2b57 fa 2a ; &2afa ; handle_put_quicksand &2b59 16 2b ; &2b16 ; handle_put_forked_twig &2b5b 1d 2b ; &2b1d ; handle_put_bandage &2b5d af 2a ; &2aaf ; handle_put_container &2b5f af 2a ; &2aaf ; handle_put_container &2b61 af 2a ; &2aaf ; handle_put_container &2b63 af 2a ; &2aaf ; handle_put_container &2b65 24 2b ; &2b24 ; handle_put_torch &2b67 2b 2b ; &2b2b ; handle_put_powermatic_or_radio &2b69 2b 2b ; &2b2b ; handle_put_powermatic_or_radio &2b6b 31 2b ; &2b31 ; handle_put_lighthouse ; list_room_objects &2b6d ad 04 13 LDA &1304 ; player_room ; list_objects &2b70 a2 18 LDX #&18 ; string_018 : "You find " ; list_objects_with_prefix &2b72 a0 00 LDY #&00 &2b74 85 85 STA &85 ; room &2b76 84 83 STY &83 ; number_of_objects ; count_room_objects_loop &2b78 d9 ac 11 CMP &11ac,Y ; object_locations &2b7b f0 27 BEQ &2ba4 ; count_object ; consider_next_object_for_counting &2b7d c8 INY &2b7e c0 38 CPY #&38 ; OBJECT_LAST + 1 &2b80 90 f6 BCC &2b78 ; count_room_objects_loop &2b82 a5 83 LDA &83 ; number_of_objects &2b84 f0 31 BEQ &2bb7 ; no_objects_in_room &2b86 a0 00 LDY #&00 &2b88 20 10 20 JSR &2010 ; end_string_with_nothing &2b8b 20 22 20 JSR &2022 ; write_string &2b8e a5 83 LDA &83 ; number_of_objects &2b90 c9 01 CMP #&01 &2b92 f0 1d BEQ &2bb1 ; single_object &2b94 20 16 20 JSR &2016 ; end_string_with_comma ; list_objects_loop &2b97 a5 85 LDA &85 ; room &2b99 d9 ac 11 CMP &11ac,Y ; object_locations &2b9c f0 2d BEQ &2bcb ; list_this_object ; consider_next_object_for_listing &2b9e c8 INY &2b9f c0 38 CPY #&38 ; OBJECT_LAST + 1 &2ba1 90 f4 BCC &2b97 ; list_objects_loop ; leave &2ba3 60 RTS ; count_object &2ba4 e6 83 INC &83 ; number_of_objects &2ba6 4c 7d 2b JMP &2b7d ; consider_next_object_for_counting ; to_write_string &2ba9 20 1c 20 JSR &201c ; end_string_with_period &2bac a0 00 LDY #&00 &2bae 4c 22 20 JMP &2022 ; write_string ; single_object &2bb1 20 1c 20 JSR &201c ; end_string_with_period &2bb4 4c 97 2b JMP &2b97 ; list_objects_loop ; no_objects_in_room &2bb7 a5 85 LDA &85 ; room &2bb9 c9 fe CMP #&fe ; ROOM_WEARING &2bbb 90 e6 BCC &2ba3 ; leave &2bbd 20 10 20 JSR &2010 ; end_string_with_nothing &2bc0 a0 00 LDY #&00 &2bc2 20 22 20 JSR &2022 ; write_string &2bc5 a2 1e LDX #&1e ; string_01e : "nothing" &2bc7 38 SEC &2bc8 b0 df BCS &2ba9 ; to_write_string # Always branches ; object &2bca 00 ; list_this_object &2bcb 8c ca 2b STY &2bca ; object &2bce a2 1f LDX #&1f ; string_01f : "a " &2bd0 ad f7 5f LDA &5ff7 ; string_ending &2bd3 48 PHA &2bd4 20 10 20 JSR &2010 ; end_string_with_nothing &2bd7 a0 00 LDY #&00 &2bd9 20 22 20 JSR &2022 ; write_string # Write "a " &2bdc ac ca 2b LDY &2bca ; object &2bdf b9 1c 12 LDA &121c,Y ; object_string_ids &2be2 aa TAX &2be3 a5 83 LDA &83 ; number_of_objects &2be5 c9 02 CMP #&02 &2be7 f0 11 BEQ &2bfa ; two_objects_remaining &2be9 68 PLA &2bea 8d f7 5f STA &5ff7 ; string_ending &2bed a0 00 LDY #&00 &2bef 20 22 20 JSR &2022 ; write_string # Write object name ; to_consider_next_object &2bf2 c6 83 DEC &83 ; number_of_objects &2bf4 ac ca 2b LDY &2bca ; object &2bf7 4c 9e 2b JMP &2b9e ; consider_next_object_for_listing ; two_objects_remaining &2bfa 68 PLA &2bfb 20 05 24 JSR &2405 ; conditionally_write_string_X_and_and &2bfe 4c f2 2b JMP &2bf2 ; to_consider_next_object ; write_string_and_object_A &2c01 48 PHA &2c02 20 1c 20 JSR &201c ; end_string_with_period &2c05 68 PLA ; write_string_and_object_A_with_ending &2c06 48 PHA &2c07 ad f7 5f LDA &5ff7 ; string_ending &2c0a 48 PHA &2c0b 20 10 20 JSR &2010 ; end_string_with_nothing &2c0e 20 22 20 JSR &2022 ; write_string # Write string &2c11 68 PLA &2c12 8d f7 5f STA &5ff7 ; string_ending &2c15 68 PLA &2c16 aa TAX &2c17 bd 1c 12 LDA &121c,X ; object_string_ids &2c1a aa TAX &2c1b a0 00 LDY #&00 &2c1d 4c 22 20 JMP &2022 ; write_string # Write object name ; change_object_locations &2c20 86 6a STX &6a ; origin_room &2c22 84 6b STY &6b ; target_room &2c24 a0 37 LDY #&37 ; OBJECT_LAST &2c26 a2 00 LDX #&00 ; change_object_locations_loop &2c28 b9 ac 11 LDA &11ac,Y ; object_locations &2c2b c5 6a CMP &6a ; origin_room &2c2d d0 06 BNE &2c35 ; consider_next_object &2c2f a5 6b LDA &6b ; target_room &2c31 99 ac 11 STA &11ac,Y ; object_locations &2c34 e8 INX ; consider_next_object &2c35 88 DEY &2c36 10 f0 BPL &2c28 ; change_object_locations_loop &2c38 e0 00 CPX #&00 &2c3a f0 02 BEQ &2c3e ; leave_with_carry_clear &2c3c 38 SEC # Leave with carry set to indicate object(s) moved &2c3d 60 RTS ; leave_with_carry_clear &2c3e 18 CLC # Leave with carry clear to indicate no objects moved &2c3f 60 RTS ; check_if_object_is_accessible &2c40 bd ac 11 LDA &11ac,X ; object_locations &2c43 cd 04 13 CMP &1304 ; player_room &2c46 f0 0a BEQ &2c52 ; leave_with_carry_clear &2c48 c9 ff CMP #&ff ; ROOM_CARRYING &2c4a f0 06 BEQ &2c52 ; leave_with_carry_clear &2c4c c9 fe CMP #&fe ; ROOM_WEARING &2c4e f0 02 BEQ &2c52 ; leave_with_carry_clear &2c50 38 SEC # Leave with carry set to indicate object inaccessible &2c51 60 RTS ; leave_with_carry_clear &2c52 18 CLC # Leave with carry clear to indicate object accessible &2c53 60 RTS ; write_the_object &2c54 48 PHA &2c55 20 10 20 JSR &2010 ; end_string_with_nothing &2c58 a8 TAY &2c59 68 PLA &2c5a a2 41 LDX #&41 ; string_041 : "The " &2c5c 4c 06 2c JMP &2c06 ; write_string_and_object_A_with_ending ; count_objects_in_room_A &2c5f a2 00 LDX #&00 &2c61 a0 00 LDY #&00 ; count_objects_in_room_A_loop &2c63 d9 ac 11 CMP &11ac,Y ; object_locations &2c66 f0 06 BEQ &2c6e ; object_is_in_room_A ; consider_next_object &2c68 c8 INY &2c69 c0 38 CPY #&38 ; OBJECT_LAST + 1 &2c6b 90 f6 BCC &2c63 ; count_objects_in_room_A_loop &2c6d 60 RTS ; object_is_in_room_A &2c6e e8 INX &2c6f 18 CLC &2c70 90 f6 BCC &2c68 ; consider_next_object # Always branches ; get_on_or_off &2c72 a5 6e LDA &6e ; current_word &2c74 85 8b STA &8b ; previous_current_word_for_get_on_or_off &2c76 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &2c79 b0 0f BCS &2c8a ; leave_with_carry_set &2c7b 85 87 STA &87 ; object &2c7d a5 6e LDA &6e ; current_word &2c7f 85 68 STA &68 ; current_word_prior &2c81 a5 8b LDA &8b ; previous_current_word_for_get_on_or_off &2c83 85 6e STA &6e ; current_word &2c85 20 72 1e JSR &1e72 ; get_noun # Returns carry clear if noun found &2c88 90 02 BCC &2c8c ; set_on_or_off ; leave_with_carry_set &2c8a 38 SEC # Leave with carry set to indicate no on or off found &2c8b 60 RTS ; set_on_or_off &2c8c 85 89 STA &89 ; on_or_off &2c8e a6 68 LDX &68 ; current_word_prior &2c90 e4 6e CPX &6e ; current_word &2c92 90 02 BCC &2c96 ; leave_with_carry_clear &2c94 86 6e STX &6e ; current_word ; leave_with_carry_clear &2c96 18 CLC # Leave with carry clear to indicate on or off found &2c97 60 RTS ; searchable_rooms &2c98 23 ; ROOM_23 ; "an area of the jungle" &2c99 2b ; ROOM_2b ; "an area of the jungle" &2c9a 29 ; ROOM_29 ; "an area of the jungle" &2c9b 24 ; ROOM_24 ; "an area of the jungle" &2c9c 2a ; ROOM_2a ; "an area of the jungle" &2c9d 2d ; ROOM_2d ; "a clearing" ; searchable_room_string_ids &2c9e 41 ; string_241 : "northeast a branch is broken. " &2c9f 42 ; string_242 : "west the undergrowth has been disturbed and tracks lead north. " &2ca0 43 ; string_243 : "south the grass has been parted and a branch is broken to the east. " &2ca1 44 ; string_244 : "northwest tracks lead around a tree and a pinnacle is to the north. " &2ca2 45 ; string_245 : "south there is a clearing. To the southeast the undergrowth has been parted. " &2ca3 46 ; string_246 : "north is a narrow pathway. " ; handle_search &2ca4 ac 04 13 LDY &1304 ; player_room &2ca7 c0 87 CPY #&87 ; ROOM_87 ; "a closet" &2ca9 f0 28 BEQ &2cd3 ; search_room_87 &2cab c0 96 CPY #&96 ; ROOM_96 ; "a storeroom" &2cad f0 29 BEQ &2cd8 ; search_room_96 &2caf c0 aa CPY #&aa ; ROOM_aa ; "the limousine" &2cb1 f0 2a BEQ &2cdd ; search_room_aa &2cb3 a2 05 LDX #&05 ; check_for_searchable_room_loop &2cb5 bd 98 2c LDA &2c98,X ; searchable_rooms &2cb8 cd 04 13 CMP &1304 ; player_room &2cbb f0 08 BEQ &2cc5 ; room_has_searchable_text &2cbd ca DEX &2cbe 10 f5 BPL &2cb5 ; check_for_searchable_room_loop ; you_search_but_find_nothing &2cc0 a2 47 LDX #&47 ; string_247 : "You search but find nothing. " ; to_write_string_from_table_two_and_newline &2cc2 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; room_has_searchable_text &2cc5 bd 9e 2c LDA &2c9e,X ; searchable_room_string_ids &2cc8 48 PHA &2cc9 a2 40 LDX #&40 ; string_240 : "Before you to the " &2ccb 20 d7 37 JSR &37d7 ; write_string_from_table_two &2cce 68 PLA &2ccf aa TAX &2cd0 18 CLC &2cd1 90 ef BCC &2cc2 ; to_write_string_from_table_two_and_newline # Always branches ; search_room_87 &2cd3 a2 f9 LDX #&f9 ; ROOM_DESTROYED_IN_ROOM_87 ; "a closet" &2cd5 18 CLC &2cd6 90 07 BCC &2cdf ; to_change_object_locations # Always branches ; search_room_96 &2cd8 a2 f8 LDX #&f8 ; ROOM_DESTROYED_IN_ROOM_96 ; "a storeroom" &2cda 18 CLC &2cdb 90 02 BCC &2cdf ; to_change_object_locations # Always branches ; search_room_aa &2cdd a2 f7 LDX #&f7 ; ROOM_DESTROYED_IN_ROOM_aa ; "the limousine" ; to_change_object_locations &2cdf 20 20 2c JSR &2c20 ; change_object_locations # Returns carry clear if no objects moved &2ce2 90 dc BCC &2cc0 ; you_search_but_find_nothing &2ce4 20 6d 2b JSR &2b6d ; list_room_objects &2ce7 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; handle_read &2cea 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &2ced 90 01 BCC &2cf0 ; handle_read_object &2cef 60 RTS ; handle_read_object &2cf0 85 87 STA &87 ; object &2cf2 38 SEC # Set carry to suppress error &2cf3 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry set if no object found &2cf6 b0 45 BCS &2d3d ; handle_read_object_with_nothing &2cf8 c9 1d CMP #&1d ; OBJECT_JAR &2cfa f0 10 BEQ &2d0c ; handle_read_object_with_jar &2cfc c9 26 CMP #&26 ; OBJECT_MAGNIFYING_GLASS &2cfe d0 53 BNE &2d53 ; to_you_can't_do_that ; handle_read_object_with_magnifying_glass &2d00 ad d2 11 LDA &11d2 ; object_locations + &26 (OBJECT_MAGNIFYING_GLASS) &2d03 c9 ff CMP #&ff ; ROOM_CARRYING &2d05 d0 4c BNE &2d53 ; to_you_can't_do_that &2d07 a9 0a LDA #&0a ; string_40a : "it informs you about making a magnifier from a glass jar filled with clear water! " &2d09 18 CLC &2d0a 90 38 BCC &2d44 ; set_red_book_string_id # Always branches ; handle_read_object_with_jar &2d0c ad c9 11 LDA &11c9 ; object_locations + &1d (OBJECT_JAR) &2d0f c9 ff CMP #&ff ; ROOM_CARRYING &2d11 d0 40 BNE &2d53 ; to_you_can't_do_that &2d13 ad 01 12 LDA &1201 ; object_states + &1d (OBJECT_JAR) &2d16 f0 25 BEQ &2d3d ; handle_read_object_with_nothing &2d18 ae b1 11 LDX &11b1 ; object_locations + &05 (OBJECT_LID) &2d1b e0 d0 CPX #&d0 ; ROOM_OBJECTS + OBJECTS_JAR &2d1d f0 0a BEQ &2d29 ; jar_has_lid ; empty_jar &2d1f a9 00 LDA #&00 ; &81 - &81 : string_081 : "it is empty. " &2d21 8d 01 12 STA &1201 ; object_states + &1d (OBJECT_JAR) &2d24 a2 56 LDX #&56 ; string_256 : "Water cascades from the jar. Eventually, it disappears. " &2d26 18 CLC &2d27 90 06 BCC &2d2f ; to_write_string_from_table_two_and_newline # Always branches ; jar_has_lid &2d29 c9 02 CMP #&02 ; &83 - &81 : string_083 : "it has been filled with swamp water. " &2d2b d0 05 BNE &2d32 ; handle_read_object_with_jar_of_clear_water &2d2d a2 55 LDX #&55 ; string_255 : "The water is so dark that nothing is visible through it! " ; to_write_string_from_table_two_and_newline &2d2f 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; handle_read_object_with_jar_of_clear_water &2d32 a5 87 LDA &87 ; object &2d34 c9 1e CMP #&1e ; OBJECT_MAP &2d36 d0 05 BNE &2d3d ; handle_read_object_with_nothing &2d38 a9 08 LDA #&08 ; string_408 : "the mountain passage is north, northwest, northeast, up, south, southeast, west, west and west again! " &2d3a 18 CLC &2d3b 90 02 BCC &2d3f ; set_map_string_id # Always branches ; handle_read_object_with_nothing &2d3d a9 07 LDA #&07 ; string_407 : "it says: "The mountain passage", but the markings are so small that you cannot understand them! " ; set_map_string_id &2d3f 8d a6 11 STA &11a6 ; readable_objects_string_ids &2d42 a9 09 LDA #&09 ; string_409 : "the writing is very small and is undiscernible! " ; set_red_book_string_id &2d44 8d a7 11 STA &11a7 ; readable_objects_string_ids + 1 &2d47 a5 87 LDA &87 ; object &2d49 a0 05 LDY #&05 ; check_for_readable_object_loop &2d4b d9 a0 11 CMP &11a0,Y ; readable_objects &2d4e f0 06 BEQ &2d56 ; handle_read_readable_object &2d50 88 DEY &2d51 10 f8 BPL &2d4b ; check_for_readable_object_loop ; to_you_can't_do_that &2d53 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_read_readable_object &2d56 aa TAX &2d57 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &2d5a b0 f7 BCS &2d53 ; to_you_can't_do_that &2d5c 98 TYA &2d5d 48 PHA &2d5e 8a TXA &2d5f a2 54 LDX #&54 ; string_254 : "You read the " &2d61 a0 02 LDY #&02 &2d63 20 01 2c JSR &2c01 ; write_string_and_object_A &2d66 20 7c 1b JSR &1b7c ; use_uppercase &2d69 20 10 20 JSR &2010 ; end_string_with_nothing &2d6c 68 PLA &2d6d a8 TAY &2d6e b9 a6 11 LDA &11a6,Y ; readable_objects_string_ids &2d71 aa TAX &2d72 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; leave # Unused code &2d75 60 RTS ; handle_push &2d76 20 ea 1e JSR &1eea ; get_object # Returns carry set if no object found &2d79 b0 52 BCS &2dcd ; leave &2d7b c9 03 CMP #&03 ; OBJECT_DRUM &2d7d f0 0f BEQ &2d8e ; handle_empty_object &2d7f c9 24 CMP #&24 ; OBJECT_BOULDER &2d81 f0 03 BEQ &2d86 ; to_handle_roll_object &2d83 4c 10 37 JMP &3710 ; handle_press_object ; to_handle_roll_object &2d86 4c a1 36 JMP &36a1 ; handle_roll_object ; handle_empty &2d89 20 ea 1e JSR &1eea ; get_object # Returns carry set if no object found &2d8c b0 3f BCS &2dcd ; leave ; handle_empty_object &2d8e aa TAX &2d8f 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry clear if object is accessible &2d92 90 03 BCC &2d97 ; handle_empty_accessible_object ; to_you_can't_do_that &2d94 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_empty_accessible_object &2d97 e0 03 CPX #&03 ; OBJECT_DRUM &2d99 d0 12 BNE &2dad ; handle_empty_accessible_not_drum &2d9b bd e4 11 LDA &11e4,X ; object_states &2d9e d0 f4 BNE &2d94 ; to_you_can't_do_that &2da0 fe e4 11 INC &11e4,X ; object_states &2da3 a9 ff LDA #&ff # Remove drum from list of immovable objects &2da5 8d 2c 13 STA &132c ; immovable_objects + 0 &2da8 a2 05 LDX #&05 ; string_205 : "You push the drum on its side, clear it of rubbish and replace it. " &2daa 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; handle_empty_accessible_not_drum &2dad 8a TXA &2dae c9 1d CMP #&1d ; OBJECT_JAR &2db0 f0 1c BEQ &2dce ; handle_empty_jar &2db2 c9 13 CMP #&13 ; OBJECT_BASKET &2db4 f0 08 BEQ &2dbe ; empty_object &2db6 c9 0f CMP #&0f ; OBJECT_SMALL_CHEST &2db8 f0 04 BEQ &2dbe ; empty_object &2dba c9 10 CMP #&10 ; OBJECT_LARGE_CHEST &2dbc d0 d6 BNE &2d94 ; to_you_can't_do_that ; empty_object &2dbe 18 CLC &2dbf 69 b3 ADC #&b3 ; ROOM_OBJECTS &2dc1 aa TAX &2dc2 ac 04 13 LDY &1304 ; player_room &2dc5 20 20 2c JSR &2c20 ; change_object_locations # Returns carry clear if no objects moved &2dc8 90 ca BCC &2d94 ; to_you_can't_do_that &2dca 4c 8e 63 JMP &638e ; write_ok ; leave &2dcd 60 RTS ; handle_empty_jar &2dce ad c9 11 LDA &11c9 ; object_locations + &1d (OBJECT_JAR) &2dd1 c9 ff CMP #&ff ; ROOM_CARRYING &2dd3 d0 bf BNE &2d94 ; to_you_can't_do_that &2dd5 ad 01 12 LDA &1201 ; object_states + &1d (OBJECT_JAR) &2dd8 f0 ba BEQ &2d94 ; to_you_can't_do_that &2dda ad b1 11 LDA &11b1 ; object_locations + &05 (OBJECT_LID) &2ddd c9 d0 CMP #&d0 ; ROOM_OBJECTS + OBJECTS_JAR &2ddf f0 b3 BEQ &2d94 ; to_you_can't_do_that &2de1 4c 1f 2d JMP &2d1f ; empty_jar ; handle_pour &2de4 20 72 1e JSR &1e72 ; get_noun # Returns carry set if no noun found &2de7 b0 e4 BCS &2dcd ; leave &2de9 c9 07 CMP #&07 ; NOUN_WATER &2deb d0 a7 BNE &2d94 ; to_you_can't_do_that &2ded f0 df BEQ &2dce ; handle_empty_jar # Always branches ; handle_swim &2def ad 04 13 LDA &1304 ; player_room &2df2 c9 08 CMP #&08 ; ROOM_08 ; "a water passage" &2df4 f0 5f BEQ &2e55 ; jump_in_room_08 &2df6 c9 0d CMP #&0d ; ROOM_0d ; "the riverbank" &2df8 90 9a BCC &2d94 ; to_you_can't_do_that &2dfa c9 11 CMP #&11 ; ROOM_11 ; "the riverbank" &2dfc b0 96 BCS &2d94 ; to_you_can't_do_that &2dfe a9 0e LDA #&0e ; ROOM_0e ; "the dangerous waters of river" &2e00 8d 04 13 STA &1304 ; player_room &2e03 4c 04 37 JMP &3704 ; write_ok_and_look_at_room ; handle_jump &2e06 ad 04 13 LDA &1304 ; player_room &2e09 c9 08 CMP #&08 ; ROOM_08 ; "a water passage" &2e0b f0 48 BEQ &2e55 ; jump_in_room_08 &2e0d c9 35 CMP #&35 ; ROOM_35 ; "a branch" &2e0f d0 03 BNE &2e14 ; not_room_35 &2e11 4c ca 2e JMP &2eca ; jump_in_room_35 ; not_room_35 &2e14 c9 22 CMP #&22 ; ROOM_22 ; "a trail around the swamp" &2e16 d0 03 BNE &2e1b ; not_room_22 &2e18 4c 02 2f JMP &2f02 ; jump_in_room_22 ; not_room_22 &2e1b c9 2f CMP #&2f ; ROOM_2f ; "the cave" &2e1d d0 03 BNE &2e22 ; not_room_2f &2e1f 4c 1c 2f JMP &2f1c ; jump_in_room_2f ; not_room_2f &2e22 c9 33 CMP #&33 &2e24 d0 03 BNE &2e29 ; not_room_33 &2e26 4c 23 2f JMP &2f23 ; jump_in_room_33 ; not_room_33 &2e29 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &2e2c b0 10 BCS &2e3e ; handle_jump_nothing ; handle_jump_word &2e2e 85 87 STA &87 ; object &2e30 e0 01 CPX #&01 ; WORD_DIRECTION &2e32 d0 03 BNE &2e37 ; handle_jump_not_direction &2e34 4c 57 2f JMP &2f57 ; handle_verb_from_direction ; handle_jump_not_direction &2e37 e0 09 CPX #&09 ; WORD_CONJUNCTION &2e39 d0 cb BNE &2e06 ; handle_jump &2e3b 20 6b 1e JSR &1e6b ; restore_previous_current_word ; handle_jump_nothing &2e3e ad 04 13 LDA &1304 ; player_room &2e41 c9 0a CMP #&0a ; ROOM_0a ; "the creeper" &2e43 f0 09 BEQ &2e4e ; jump_in_room_09_or_0a &2e45 c9 09 CMP #&09 ; ROOM_09 ; "the oil drum" &2e47 f0 05 BEQ &2e4e ; jump_in_room_09_or_0a &2e49 a2 1c LDX #&1c ; string_21c : "Bounce bounce bounce! You only have this much fun in a Robico adventure! " &2e4b 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; jump_in_room_09_or_0a &2e4e a2 01 LDX #&01 ; WORD_DIRECTION &2e50 a9 09 LDA #&09 ; DIRECTION_DOWN &2e52 18 CLC &2e53 90 d9 BCC &2e2e ; handle_jump_word ; jump_in_room_08 &2e55 a2 21 LDX #&21 ; string_221 : "You leap into the terrifying stream of the culvert! " &2e57 20 d7 37 JSR &37d7 ; write_string_from_table_two &2e5a ae af 11 LDX &11af ; object_locations + &03 (OBJECT_DRUM) &2e5d ac b2 11 LDY &11b2 ; object_locations + &06 (OBJECT_CREEPER) &2e60 e0 ff CPX #&ff ; ROOM_CARRYING &2e62 f0 1b BEQ &2e7f ; is_carrying_drum &2e64 ad 1f 13 LDA &131f ; drum_is_tied_to_creeper # Negative if drum is tied to creeper &2e67 30 05 BMI &2e6e ; check_drum ; you_submerge_in_the_violent_water &2e69 a2 26 LDX #&26 ; string_226 : "you submerge in the violent water and bounce into the passage walls! " ; to_kill_player_and_write_string_from_table_two &2e6b 4c 0f 2f JMP &2f0f ; kill_player_and_write_string_from_table_two ; check_drum &2e6e ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Negative if player is tied to creeper &2e71 30 07 BMI &2e7a ; the_oil_drum_hits_you_on_the_head &2e73 c0 ff CPY #&ff ; ROOM_CARRYING &2e75 f0 03 BEQ &2e7a ; the_oil_drum_hits_you_on_the_head &2e77 18 CLC &2e78 90 ef BCC &2e69 ; you_submerge_in_the_violent_water # Always branches ; the_oil_drum_hits_you_on_the_head &2e7a a2 27 LDX #&27 ; string_227 : "the oil drum bounces after you and hits you on the head! " &2e7c 18 CLC &2e7d 90 ec BCC &2e6b ; to_kill_player_and_write_string_from_table_two ; is_carrying_drum &2e7f ad b1 11 LDA &11b1 ; object_locations + &05 (OBJECT_LID) &2e82 c9 b6 CMP #&b6 ; ROOM_OBJECTS + OBJECT_DRUM &2e84 f0 05 BEQ &2e8b ; drum_has_lid &2e86 a2 25 LDX #&25 ; string_225 : "clinging to the barrel, all appears to go well, until it is filled with water and you are dragged downwards! " &2e88 18 CLC &2e89 90 e0 BCC &2e6b ; to_kill_player_and_write_string_from_table_two # Always branches ; drum_has_lid &2e8b ad 1f 13 LDA &131f ; drum_is_tied_to_creeper # Negative if drum is tied to creeper &2e8e 30 05 BMI &2e95 ; drum_has_lid_and_creeper ; the_drum_is_dragged_from_your_hands &2e90 a2 23 LDX #&23 ; string_223 : "the drum is dragged from your hands and you bounce into the passage walls. " &2e92 18 CLC &2e93 90 d6 BCC &2e6b ; to_kill_player_and_write_string_from_table_two # Always branches ; drum_has_lid_and_creeper &2e95 ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Negative if player is tied to creeper &2e98 30 2b BMI &2ec5 ; you_are_dragged_back_in &2e9a c0 ff CPY #&ff ; ROOM_CARRYING &2e9c d0 f2 BNE &2e90 ; the_drum_is_dragged_from_your_hands &2e9e a0 00 LDY #&00 &2ea0 8c 1e 13 STY &131e ; player_is_tied_to_creeper # Set to positive to indicate player not tied to creeper &2ea3 8c 1f 13 STY &131f ; drum_is_tied_to_creeper # Set to positive to indicate drum not tied to creeper &2ea6 a9 fd LDA #&fd ; ROOM_DESTROYED &2ea8 8d af 11 STA &11af ; object_locations + &03 (OBJECT_DRUM) &2eab 8d b2 11 STA &11b2 ; object_locations + &06 (OBJECT_CREEPER) &2eae a9 0d LDA #&0d ; ROOM_0d ; "the riverbank" &2eb0 8d 04 13 STA &1304 ; player_room &2eb3 a9 2a LDA #&2a ; &7d - &53 : string_07d : "it is the lid of a jam jar. " &2eb5 8d e9 11 STA &11e9 ; object_states + &05 (OBJECT_LID) # Repurpose lid! &2eb8 a9 3c LDA #&3c ; ROOM_3c ; "the swampland" &2eba 8d b1 11 STA &11b1 ; object_locations + &05 (OBJECT_LID) &2ebd a2 22 LDX #&22 ; string_222 : "clinging to the creeper which is tied to the sealed drum, you travel through the passage and in minutes are drifting down a massive river. You climb to the side, but in the process lose the drum and creeper. " ; look_at_room_after_writing_string_from_table_two &2ebf 20 c2 1f JSR &1fc2 ; write_string_from_table_two_and_newline &2ec2 4c f7 39 JMP &39f7 ; look_at_room_with_scrolling ; you_are_dragged_back_in &2ec5 a2 24 LDX #&24 ; string_224 : "in minutes it is behind you. At the entrance to a massive river you climb to the bank, but as the drum accelerates down-water you are dragged back in! " &2ec7 18 CLC &2ec8 90 a1 BCC &2e6b ; to_kill_player_and_write_string_from_table_two # Always branches ; jump_in_room_35 &2eca a2 32 LDX #&32 ; string_232 : "mattress! " &2ecc ad c5 11 LDA &11c5 ; object_locations + &19 (OBJECT_MATTRESS) &2ecf c9 c0 CMP #&c0 ; ROOM_OBJECTS + OBJECT_BED &2ed1 d0 1b BNE &2eee ; mattress_not_on_bed ; mattress_is_on_bed &2ed3 a9 33 LDA #&33 ; ROOM_33 ; "balanced on the mattress" &2ed5 8d 04 13 STA &1304 ; player_room ; leap_from_tree_onto_mattress_or_bed &2ed8 8a TXA &2ed9 48 PHA &2eda ad 89 12 LDA &1289 ; room_states + &35 &2edd c9 01 CMP #&01 ; &3e - &3d : string_13e : "the small cabin roof. " &2edf f0 19 BEQ &2efa ; jump_through_roof &2ee1 a2 34 LDX #&34 ; string_234 : "You leap from the tree and disappear through the hole in the roof. You land on " ; write_two_strings_and_look_at_room_if_still_alive &2ee3 20 d7 37 JSR &37d7 ; write_string_from_table_two &2ee6 68 PLA &2ee7 aa TAX &2ee8 a5 65 LDA &65 ; player_state &2eea 10 d3 BPL &2ebf ; look_at_room_after_writing_string_from_table_two &2eec 30 24 BMI &2f12 ; to_write_string_from_table_two_and_newline # Always branches ; mattress_not_on_bed &2eee a9 32 LDA #&32 ; ROOM_32 ; "on the bed" &2ef0 8d 04 13 STA &1304 ; player_room &2ef3 e8 INX ; string_233 : "hard, wooden boards of the bed! " &2ef4 20 a5 38 JSR &38a5 ; kill_player &2ef7 18 CLC &2ef8 90 de BCC &2ed8 ; leap_from_tree_onto_mattress_or_bed # Always branches ; jump_through_roof &2efa ee 89 12 INC &1289 ; room_states + &35 ; &3f - &3d : string_13f : "the gaping hole in the roof of the building! " &2efd a2 31 LDX #&31 ; string_231 : "You leap from the tree, land on the cabin with the athletic agility of a large gnu, crash straight through it and fall onto the " &2eff 18 CLC &2f00 90 e1 BCC &2ee3 ; write_two_strings_and_look_at_room_if_still_alive # Always branches ; jump_in_room_22 &2f02 a2 35 LDX #&35 ; string_235 : "You leap from the cliff and land on " &2f04 20 d7 37 JSR &37d7 ; write_string_from_table_two &2f07 e8 INX ; string_236 : "the ground with a sickening thud! " &2f08 ad c5 11 LDA &11c5 ; object_locations + &19 (OBJECT_MATTRESS) &2f0b c9 1e CMP #&1e ; ROOM_1e ; "a jungle path" &2f0d f0 06 BEQ &2f15 ; jump_onto_mattress ; kill_player_and_write_string_from_table_two &2f0f 20 a5 38 JSR &38a5 ; kill_player ; to_write_string_from_table_two_and_newline &2f12 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; jump_onto_mattress &2f15 e8 INX ; string_237 : "the mattress. You stand up. " ; set_room_and_write_string_from_table_two &2f16 8d 04 13 STA &1304 ; player_room &2f19 18 CLC &2f1a 90 a3 BCC &2ebf ; look_at_room_after_writing_string_from_table_two ; jump_in_room_2f &2f1c a2 30 LDX #&30 ; string_230 : "You fling yourself into the terrifying darkness of the chasm. The walls zoom by, a colourless blur. Eventually, you splash into a pool and submerge in the water. You are dragged through a network of underwater passageways and before long you find yourself in the huge river. You climb to the bank. " &2f1e a9 0d LDA #&0d ; ROOM_0d ; "the riverbank" &2f20 18 CLC &2f21 90 f3 BCC &2f16 ; set_room_and_write_string_from_table_two # Always branches ; jump_in_room_33 &2f23 20 30 2f JSR &2f30 ; kill_player_if_carrying_too_much # Returns carry clear if not carrying too much &2f26 90 01 BCC &2f29 ; jump_through_ceiling ; leave &2f28 60 RTS ; jump_through_ceiling &2f29 a9 35 LDA #&35 ; ROOM_35 ; "a branch" &2f2b a2 3c LDX #&3c ; string_23c : "You bounce on the mattress, higher and higher until you disappear through the hole in the ceiling! Your hands clasp the overhanging branch and you pull yourself up! " &2f2d 18 CLC &2f2e 90 e6 BCC &2f16 ; set_room_and_write_string_from_table_two # Always branches ; kill_player_if_carrying_too_much &2f30 a9 ff LDA #&ff ; ROOM_CARRYING &2f32 20 5f 2c JSR &2c5f ; count_objects_in_room_A &2f35 e0 02 CPX #&02 &2f37 90 ef BCC &2f28 ; leave # Leave with carry clear to indicate not carrying too much &2f39 20 a5 38 JSR &38a5 ; kill_player &2f3c a2 06 LDX #&06 ; string_306 : "You are carrying so much that you lose your balance and stumble" &2f3e 20 dc 1f JSR &1fdc ; write_string_from_table_three_with_scrolling &2f41 38 SEC # Leave with carry set to indicate carrying too much &2f42 b0 e4 BCS &2f28 ; leave # Always branches ; handle_climb &2f44 a9 ff LDA #&ff ; consider_next_word_for_climb_setting_direction &2f46 85 87 STA &87 ; direction ; consider_next_word_for_climb &2f48 20 c3 1e JSR &1ec3 ; get_word # Returns carry clear if word found &2f4b 90 0f BCC &2f5c ; handle_climb_word &2f4d a5 87 LDA &87 ; direction # Positive if direction previously specified &2f4f 10 06 BPL &2f57 ; handle_verb_from_direction &2f51 20 be 2f JSR &2fbe ; which_way &2f54 4c 47 1e JMP &1e47 ; please_specify ; handle_verb_from_direction &2f57 a4 87 LDY &87 ; object &2f59 4c 8d 1f JMP &1f8d ; handle_verb ; handle_climb_word &2f5c e0 09 CPX #&09 ; WORD_CONJUNCTION &2f5e d0 06 BNE &2f66 ; handle_climb_not_end &2f60 20 6b 1e JSR &1e6b ; restore_previous_current_word &2f63 4c ba 2f JMP &2fba ; handle_climb_nothing ; handle_climb_not_end &2f66 e0 01 CPX #&01 ; WORD_DIRECTION &2f68 d0 03 BNE &2f6d ; handle_climb_not_direction &2f6a 18 CLC &2f6b 90 d9 BCC &2f46 ; consider_next_word_for_climb_setting_direction # Always branches ; handle_climb_not_direction &2f6d e0 03 CPX #&03 ; WORD_OBJECT &2f6f f0 0b BEQ &2f7c ; handle_climb_object &2f71 e0 04 CPX #&04 ; WORD_NOUN &2f73 d0 04 BNE &2f79 ; to_you_can't_do_that ; handle_climb_noun &2f75 c9 12 CMP #&12 ; NOUN_ON &2f77 f0 cf BEQ &2f48 ; consider_next_word_for_climb ; to_you_can't_do_that &2f79 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_climb_object &2f7c c9 03 CMP #&03 ; OBJECT_DRUM &2f7e d0 09 BNE &2f89 ; handle_climb_not_drum ; handle_climb_drum &2f80 a4 87 LDY &87 ; direction &2f82 c0 09 CPY #&09 ; DIRECTION_DOWN &2f84 f0 d1 BEQ &2f57 ; handle_verb_from_direction &2f86 4c 04 30 JMP &3004 ; handle_stand_drum ; handle_climb_not_drum &2f89 c9 06 CMP #&06 ; OBJECT_CREEPER &2f8b f0 26 BEQ &2fb3 ; handle_climb_creeper &2f8d c9 1b CMP #&1b ; OBJECT_TREES &2f8f f0 0a BEQ &2f9b ; handle_climb_trees &2f91 c9 0d CMP #&0d ; OBJECT_BED &2f93 f0 5d BEQ &2ff2 ; handle_stand_object &2f95 c9 19 CMP #&19 ; OBJECT_MATTRESS &2f97 f0 59 BEQ &2ff2 ; handle_stand_object &2f99 d0 de BNE &2f79 ; to_you_can't_do_that # Always branches ; handle_climb_trees &2f9b ad 04 13 LDA &1304 ; player_room &2f9e c9 1d CMP #&1d ; ROOM_1d ; "a wide path" &2fa0 d0 18 BNE &2fba ; handle_climb_nothing &2fa2 a4 87 LDY &87 ; direction &2fa4 30 06 BMI &2fac ; climb_up_trees &2fa6 c0 08 CPY #&08 ; DIRECTION_UP &2fa8 f0 ad BEQ &2f57 ; handle_verb_from_direction &2faa d0 cd BNE &2f79 ; to_you_can't_do_that # Always branches ; climb_up_trees &2fac a0 08 LDY #&08 ; DIRECTION_UP &2fae 84 87 STY &87 ; direction &2fb0 18 CLC &2fb1 90 a4 BCC &2f57 ; handle_verb_from_direction # Always branches ; handle_climb_creeper &2fb3 ad 04 13 LDA &1304 ; player_room &2fb6 c9 0a CMP #&0a ; ROOM_0a ; "the creeper" &2fb8 d0 09 BNE &2fc3 ; not_room_0a ; handle_climb_nothing &2fba a4 87 LDY &87 ; object &2fbc 10 99 BPL &2f57 ; handle_verb_from_direction ; which_way &2fbe a2 0a LDX #&0a ; string_20a : "Which way? " &2fc0 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; not_room_0a &2fc3 c9 09 CMP #&09 ; ROOM_09 ; "the oil drum" &2fc5 d0 b2 BNE &2f79 ; to_you_can't_do_that ; handle_climb_creeper_in_room_09 &2fc7 8d 13 13 STA &1313 ; creeper_exit &2fca a9 02 LDA #&02 ; ROOM_02 ; "the ditch" &2fcc 8d 1c 13 STA &131c ; creeper_swing_state &2fcf a9 80 LDA #&80 # Set to negative to indicate not swinging on creeper &2fd1 8d 1b 13 STA &131b ; creeper_state &2fd4 ad 5d 12 LDA &125d ; room_states + &09 &2fd7 c9 01 CMP #&01 ; &0d - &0c : string_10d : "the creeper dangles from above. " &2fd9 d0 9e BNE &2f79 ; to_you_can't_do_that &2fdb a4 87 LDY &87 ; direction &2fdd 30 04 BMI &2fe3 ; climb_up_creeper &2fdf c0 08 CPY #&08 ; DIRECTION_UP &2fe1 d0 96 BNE &2f79 ; to_you_can't_do_that ; climb_up_creeper &2fe3 ee 04 13 INC &1304 ; player_room &2fe6 20 8e 63 JSR &638e ; write_ok &2fe9 18 CLC &2fea 90 3d BCC &3029 ; to_look_at_room_with_scrolling # Always branches ; handle_stand &2fec 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &2fef 90 01 BCC &2ff2 ; handle_stand_object &2ff1 60 RTS ; handle_stand_object &2ff2 c9 03 CMP #&03 ; OBJECT_DRUM &2ff4 f0 0e BEQ &3004 ; handle_stand_drum &2ff6 c9 0d CMP #&0d ; OBJECT_BED &2ff8 f0 32 BEQ &302c ; handle_stand_bed &2ffa c9 19 CMP #&19 ; OBJECT_MATTRESS &2ffc d0 03 BNE &3001 ; to_you_can't_do_that ; handle_stand_mattress &2ffe 4c ad 30 JMP &30ad ; that_is_pointless ; to_you_can't_do_that &3001 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_stand_drum &3004 ad af 11 LDA &11af ; object_locations + &03 (OBJECT_DRUM) &3007 cd 04 13 CMP &1304 ; player_room &300a d0 f5 BNE &3001 ; to_you_can't_do_that &300c 20 8e 63 JSR &638e ; write_ok &300f a9 00 LDA #&00 # Remove secondary description &3011 8d 5d 12 STA &125d ; room_states + &09 &3014 ad 04 13 LDA &1304 ; player_room &3017 8d 14 13 STA &1314 ; drum_exit &301a c9 02 CMP #&02 ; ROOM_02 ; "the ditch" &301c d0 06 BNE &3024 ; not_room_02 &301e ad 5e 12 LDA &125e ; room_states + &0a &3021 8d 5d 12 STA &125d ; room_states + &09 ; not_room_02 &3024 a9 09 LDA #&09 ; ROOM_09 ; "the oil drum" ; set_player_room_and_look_at_room &3026 8d 04 13 STA &1304 ; player_room ; to_look_at_room_with_scrolling &3029 4c f7 39 JMP &39f7 ; look_at_room_with_scrolling ; handle_stand_bed &302c ad 04 13 LDA &1304 ; player_room &302f c9 30 CMP #&30 ; ROOM_30 ; "the small cabin" &3031 d0 ce BNE &3001 ; to_you_can't_do_that &3033 20 8e 63 JSR &638e ; write_ok &3036 ad c5 11 LDA &11c5 ; object_locations + &19 (OBJECT_MATTRESS) &3039 c9 c0 CMP #&c0 ; ROOM_OBJECTS + OBJECT_BED &303b d0 05 BNE &3042 ; mattress_not_on_bed &303d a9 33 LDA #&33 ; ROOM_33 ; "balanced on the mattress" &303f 18 CLC &3040 90 e4 BCC &3026 ; set_player_room_and_look_at_room # Always branches ; mattress_not_on_bed &3042 a9 32 LDA #&32 ; ROOM_32 ; "on the bed" &3044 18 CLC &3045 90 df BCC &3026 ; set_player_room_and_look_at_room # Always branches ; handle_remember &3047 ad 06 13 LDA &1306 ; player_is_remembering # Negative if player is not remembering &304a 30 03 BMI &304f ; not_remembering &304c 4c 8e 63 JMP &638e ; write_ok ; not_remembering &304f ee 06 13 INC &1306 ; player_is_remembering # Set to positive to indicate player is remembering &3052 a9 fd LDA #&fd ; ROOM_DESTROYED &3054 8d b4 11 STA &11b4 ; object_locations + &08 (OBJECT_SUIT) &3057 a9 fe LDA #&fe ; ROOM_WEARING &3059 8d b3 11 STA &11b3 ; object_locations + &07 (OBJECT_UNIFORM) &305c a2 00 LDX #&00 ; string_200 : "You close your eyes and the memories come streaming back to you! Your mission to lead a coup against a South American junta: the parachute drop into enemy terrain, the capture, that abhorrent prison, your evasion of the soldiers and eventually, your leap for cover into the gaping blackness of the ditch! " &305e 8e 04 13 STX &1304 ; player_room &3061 20 c2 1f JSR &1fc2 ; write_string_from_table_two_and_newline &3064 18 CLC &3065 90 c2 BCC &3029 ; to_look_at_room_with_scrolling # Always branches ; handle_cut &3067 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &306a 90 01 BCC &306d ; handle_cut_word &306c 60 RTS ; handle_cut_word &306d e0 03 CPX #&03 ; WORD_OBJECT &306f f0 03 BEQ &3074 ; handle_cut_object ; to_you_can't_do_that &3071 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_cut_object &3074 85 87 STA &87 ; object &3076 18 CLC # Clear carry to permit error &3077 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry clear if object found &307a 90 01 BCC &307d ; handle_cut_object_with_object &307c 60 RTS ; handle_cut_object_with_object &307d c9 00 CMP #&00 ; OBJECT_CAN &307f d0 f0 BNE &3071 ; to_you_can't_do_that &3081 ad ac 11 LDA &11ac ; object_locations + &00 (OBJECT_CAN) &3084 c9 ff CMP #&ff ; ROOM_CARRYING &3086 f0 10 BEQ &3098 ; handle_cut_object_with_can &3088 c9 b7 CMP #&b7 ; ROOM_OBJECTS + OBJECT_POINTED_TWIG &308a d0 e5 BNE &3071 ; to_you_can't_do_that &308c ad b0 11 LDA &11b0 ; object_locations + &04 (OBJECT_POINTED_TWIG) &308f c9 ff CMP #&ff ; ROOM_CARRYING &3091 d0 de BNE &3071 ; to_you_can't_do_that &3093 a2 0f LDX #&0f ; string_20f : "Your attempts at severing the creeper fail. " &3095 18 CLC &3096 90 07 BCC &309f ; to_write_string_from_table_two_and_newline # Always branches ; handle_cut_object_with_can &3098 20 67 22 JSR &2267 ; are_you_sure # Returns carry set if player is sure &309b b0 05 BCS &30a2 ; really_cut_object_with_can &309d a2 11 LDX #&11 ; string_211 : "Scaredy cat, scaredy cat, sitting on the doormat, all the little doggie-wogs. . . Ahem. " ; to_write_string_from_table_two_and_newline &309f 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; really_cut_object_with_can &30a2 a6 87 LDX &87 ; object &30a4 e0 06 CPX #&06 ; OBJECT_CREEPER &30a6 d0 05 BNE &30ad ; that_is_pointless &30a8 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &30ab b0 05 BCS &30b2 ; handle_cut_creeper ; handle_dig ; that_is_pointless &30ad a2 13 LDX #&13 ; string_213 : "That is pointless. " &30af 38 SEC &30b0 b0 ed BCS &309f ; to_write_string_from_table_two_and_newline # Always branches ; handle_cut_creeper &30b2 ae 04 13 LDX &1304 ; player_room &30b5 e0 0a CPX #&0a ; ROOM_0a ; "the creeper" &30b7 d0 f4 BNE &30ad ; that_is_pointless &30b9 ad 5e 12 LDA &125e ; room_states + &0a &30bc c9 01 CMP #&01 ; &11 - &10 : string_111 : "a length of creeper dangles below you. " &30be f0 08 BEQ &30c8 ; cut_creeper_below &30c0 20 a5 38 JSR &38a5 ; kill_player &30c3 a2 12 LDX #&12 ; string_212 : "You sever the creeper above your head and plummet! " &30c5 18 CLC &30c6 90 d7 BCC &309f ; to_write_string_from_table_two_and_newline # Always branches ; cut_creeper_below &30c8 ee 5e 12 INC &125e ; room_states + &0a ; &12 - &10 : string_112 : "the creeper has been severed beneath your feet. " &30cb ad 13 13 LDA &1313 ; creeper_exit &30ce 8d b2 11 STA &11b2 ; object_locations + &06 (OBJECT_CREEPER) &30d1 a2 0e LDX #&0e ; string_20e : "Holding the creeper tightly, you sever it below your feet. A length of creeper falls to the floor. " &30d3 18 CLC &30d4 90 c9 BCC &309f ; to_write_string_from_table_two_and_newline # Always branches ; handle_cover &30d6 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &30d9 90 01 BCC &30dc ; handle_cover_object ; leave &30db 60 RTS ; handle_cover_object &30dc c9 02 CMP #&02 ; OBJECT_HOLE &30de f0 03 BEQ &30e3 ; handle_cover_hole ; to_you_can't_do_that &30e0 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_cover_hole &30e3 aa TAX &30e4 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &30e7 b0 f7 BCS &30e0 ; to_you_can't_do_that &30e9 a9 b5 LDA #&b5 ; ROOM_OBJECTS + OBJECT_HOLE &30eb 20 5f 2c JSR &2c5f ; count_objects_in_room_A &30ee e0 00 CPX #&00 &30f0 d0 ee BNE &30e0 ; to_you_can't_do_that &30f2 18 CLC # Clear carry to permit error &30f3 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry set if no object found &30f6 b0 e3 BCS &30db ; leave &30f8 aa TAX ; handle_cover_hole_with_object &30f9 e0 05 CPX #&05 ; OBJECT_LID &30fb d0 17 BNE &3114 ; handle_cover_hole_with_not_lid ; handle_cover_hole_with_lid &30fd ad b1 11 LDA &11b1 ; object_locations + &05 (OBJECT_LID) &3100 c9 ff CMP #&ff ; ROOM_CARRYING &3102 d0 dc BNE &30e0 ; to_you_can't_do_that ; cover_hole_with_object &3104 a9 b5 LDA #&b5 ; ROOM_OBJECTS + OBJECT_HOLE &3106 9d ac 11 STA &11ac,X ; object_locations &3109 8a TXA &310a a2 0d LDX #&0d ; string_20d : "You block the hole with the " ; write_string_from_table_two_and_object_A &310c a0 02 LDY #&02 &310e 20 01 2c JSR &2c01 ; write_string_and_object_A &3111 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; handle_cover_hole_with_not_lid &3114 e0 00 CPX #&00 ; OBJECT_CAN &3116 f0 3c BEQ &3154 ; handle_cover_hole_with_can &3118 e0 04 CPX #&04 ; OBJECT_POINTED_TWIG &311a d0 c4 BNE &30e0 ; to_you_can't_do_that ; handle_cover_hole_with_pointed_twig &311c ad b0 11 LDA &11b0 ; object_locations + &04 (OBJECT_POINTED_TWIG) &311f c9 ff CMP #&ff ; ROOM_CARRYING &3121 d0 bd BNE &30e0 ; to_you_can't_do_that &3123 ad ac 11 LDA &11ac ; object_locations + &00 (OBJECT_CAN) &3126 c9 b7 CMP #&b7 ; ROOM_OBJECTS + OBJECT_POINTED_TWIG &3128 f0 2a BEQ &3154 ; handle_cover_hole_with_can &312a ad 19 13 LDA &1319 ; spider_room &312d c9 b5 CMP #&b5 ; ROOM_OBJECTS + OBJECT_HOLE &312f d0 d3 BNE &3104 ; cover_hole_with_object ; spider_emerges_from_hole_uppercase &3131 20 7c 1b JSR &1b7c ; use_uppercase ; spider_emerges_from_hole &3134 a2 07 LDX #&07 ; string_207 : "a venomous, black spider emerges from the hole! " &3136 a0 02 LDY #&02 &3138 20 22 20 JSR &2022 ; write_string &313b ad ad 11 LDA &11ad ; object_locations + &01 (OBJECT_BAG) &313e c9 fe CMP #&fe ; ROOM_WEARING &3140 f0 08 BEQ &314a ; is_wearing_bag &3142 20 a5 38 JSR &38a5 ; kill_player &3145 a2 0b LDX #&0b ; string_20b : "the creature crawls onto your hand and bites you! " ; to_write_string_from_table_two_and_newline &3147 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; is_wearing_bag &314a a9 04 LDA #&04 ; ROOM_04 ; "a rubbish mountain" &314c 8d 19 13 STA &1319 ; spider_room &314f a2 0c LDX #&0c ; string_20c "the creature crawls onto the bag, slithers to the floor and runs to the enormous rubbish mountain! " &3151 18 CLC &3152 90 f3 BCC &3147 ; to_write_string_from_table_two_and_newline # Always branches ; handle_cover_hole_with_can &3154 a2 00 LDX #&00 ; OBJECT_CAN &3156 ad ac 11 LDA &11ac ; object_locations + &00 (OBJECT_CAN) &3159 c9 ff CMP #&ff ; ROOM_CARRYING &315b f0 a7 BEQ &3104 ; cover_hole_with_object &315d c9 b7 CMP #&b7 ; ROOM_OBJECTS + OBJECT_POINTED_TWIG &315f f0 a3 BEQ &3104 ; cover_hole_with_object ; to_to_you_can't_do_that &3161 4c e0 30 JMP &30e0 ; to_you_can't_do_that ; handle_swing &3164 ad 04 13 LDA &1304 ; player_room &3167 c9 0a CMP #&0a ; ROOM_0a ; "the creeper" &3169 d0 f6 BNE &3161 ; to_to_you_can't_do_that ; get_next_word &316b 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &316e b0 14 BCS &3184 ; handle_swing_nothing &3170 e0 01 CPX #&01 ; WORD_DIRECTION &3172 d0 f7 BNE &316b ; get_next_word &3174 c9 03 CMP #&03 ; DIRECTION_WEST &3176 f0 1c BEQ &3194 ; handle_swing_west &3178 c9 02 CMP #&02 ; DIRECTION_EAST &317a f0 10 BEQ &318c ; handle_swing_east &317c 20 a5 38 JSR &38a5 ; kill_player &317f a2 1b LDX #&1b ; string_21b : "You swing into the wall! " &3181 18 CLC &3182 90 c3 BCC &3147 ; to_write_string_from_table_two_and_newline # Always branches ; handle_swing_nothing &3184 a9 00 LDA #&00 # Set to positive to indicate swinging on creeper &3186 8d 1b 13 STA &131b ; creeper_state &3189 4c 8e 63 JMP &638e ; write_ok ; handle_swing_east &318c a9 00 LDA #&00 # Set to positive to indicate swinging east ; set_creeper_swing_direction &318e 8d 1d 13 STA &131d ; creeper_swing_direction &3191 18 CLC &3192 90 f0 BCC &3184 ; handle_swing_nothing ; handle_swing_west &3194 a9 80 LDA #&80 # Set to negative to indicate swinging west &3196 18 CLC &3197 90 f5 BCC &318e ; set_creeper_swing_direction ; handle_tie &3199 20 ea 1e JSR &1eea ; get_object # Returns carry set if no object found &319c b0 07 BCS &31a5 ; leave &319e 85 87 STA &87 ; object &31a0 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &31a3 90 01 BCC &31a6 ; handle_tie_object ; leave &31a5 60 RTS ; handle_tie_object &31a6 85 88 STA &88 ; object_two &31a8 c5 87 CMP &87 ; object &31aa f0 13 BEQ &31bf ; to_you_can't_do_that &31ac c9 0c CMP #&0c ; OBJECT_FORKED_TWIG &31ae d0 03 BNE &31b3 ; handle_tie_object_not_forked_twig &31b0 4c 57 2a JMP &2a57 ; handle_put_object_object ; handle_tie_object_not_forked_twig &31b3 c9 06 CMP #&06 ; OBJECT_CREEPER &31b5 f0 10 BEQ &31c7 ; handle_tie_object_creeper &31b7 48 PHA &31b8 a5 87 LDA &87 ; object &31ba c9 06 CMP #&06 ; OBJECT_CREEPER &31bc f0 04 BEQ &31c2 ; handle_tie_creeper_object &31be 68 PLA ; to_you_can't_do_that &31bf 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_tie_creeper_object &31c2 85 88 STA &88 ; object_two &31c4 68 PLA &31c5 85 87 STA &87 ; object ; handle_tie_object_creeper &31c7 ad b2 11 LDA &11b2 ; object_locations + &06 (OBJECT_CREEPER) &31ca c9 ff CMP #&ff ; ROOM_CARRYING &31cc d0 f1 BNE &31bf ; to_you_can't_do_that &31ce a6 87 LDX &87 ; object &31d0 e0 0b CPX #&0b ; OBJECT_BODY &31d2 f0 0f BEQ &31e3 ; handle_tie_body_creeper &31d4 bd ac 11 LDA &11ac,X ; object_locations &31d7 cd 04 13 CMP &1304 ; player_room &31da d0 e3 BNE &31bf ; to_you_can't_do_that &31dc e0 03 CPX #&03 ; OBJECT_DRUM &31de f0 10 BEQ &31f0 ; handle_tie_drum_creeper &31e0 4c ad 30 JMP &30ad ; that_is_pointless ; handle_tie_body_creeper &31e3 ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Negative if player is tied to creeper &31e6 30 d7 BMI &31bf ; to_you_can't_do_that ; toggle_player_is_tied_to_creeper &31e8 49 80 EOR #&80 &31ea 8d 1e 13 STA &131e ; player_is_tied_to_creeper ; to_write_ok &31ed 4c 8e 63 JMP &638e ; write_ok ; handle_tie_drum_creeper &31f0 ad 1f 13 LDA &131f ; drum_is_tied_to_creeper # Negative if drum is tied to creeper &31f3 30 ca BMI &31bf ; to_you_can't_do_that ; toggle_drum_is_tied_to_creeper &31f5 49 80 EOR #&80 &31f7 8d 1f 13 STA &131f ; drum_is_tied_to_creeper &31fa 18 CLC &31fb 90 f0 BCC &31ed ; to_write_ok # Always branches ; handle_untie &31fd 18 CLC # Clear carry to ask to specify &31fe 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &3201 90 01 BCC &3204 ; handle_untie_object &3203 60 RTS ; handle_untie_object &3204 c9 06 CMP #&06 ; OBJECT_CREEPER &3206 f0 f5 BEQ &31fd ; handle_untie &3208 c9 0b CMP #&0b ; OBJECT_BODY &320a f0 12 BEQ &321e ; handle_untie_body &320c c9 03 CMP #&03 ; OBJECT_DRUM &320e d0 af BNE &31bf ; to_you_can't_do_that ; handle_untie_drum &3210 aa TAX &3211 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &3214 b0 a9 BCS &31bf ; to_you_can't_do_that &3216 ad 1f 13 LDA &131f ; drum_is_tied_to_creeper # Positive if drum is not tied to creeper &3219 10 a4 BPL &31bf ; to_you_can't_do_that &321b 18 CLC &321c 90 d7 BCC &31f5 ; toggle_drum_is_tied_to_creeper # Always branches ; handle_untie_body &321e ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Positive if player is not tied to creeper &3221 10 9c BPL &31bf ; to_you_can't_do_that &3223 18 CLC &3224 90 c2 BCC &31e8 ; toggle_player_is_tied_to_creeper # Always branches ; open_or_close &3226 00 ; write_message_after_opening_or_closing &3227 00 ; door_was_opened_or_closed &3228 00 ; handle_close &3229 a9 80 LDA #&80 ; DOOR_CLOSED # Set to negative to indicate closing &322b 8d 26 32 STA &3226 ; open_or_close &322e 18 CLC &322f 90 05 BCC &3236 ; handle_open_or_close # Always branches ; handle_open &3231 a9 00 LDA #&00 ; DOOR_OPEN # Set to zero to indicate opening &3233 8d 26 32 STA &3226 ; open_or_close ; handle_open_or_close &3236 a9 ff LDA #&ff &3238 8d 2c 24 STA &242c ; exit_direction &323b 8d 27 32 STA &3227 ; write_message_after_opening_or_closing # Set to negative to write message &323e 8d 28 32 STA &3228 ; door_was_opened_or_closed # Set to negative to indicate no door changed state &3241 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found ; to_handle_open_or_close_word &3244 90 01 BCC &3247 ; handle_open_or_close_word &3246 60 RTS ; handle_open_or_close_word &3247 ac 2c 24 LDY &242c ; exit_direction &324a 10 22 BPL &326e ; check_word_after_direction &324c e0 03 CPX #&03 ; WORD_OBJECT &324e d0 03 BNE &3253 ; not_object ; to_handle_open_or_close_object &3250 4c 7d 33 JMP &337d ; handle_open_or_close_object ; not_object &3253 e0 01 CPX #&01 ; WORD_DIRECTION &3255 d0 06 BNE &325d ; not_direction ; handle_open_or_close_direction &3257 8d 2c 24 STA &242c ; exit_direction &325a 18 CLC &325b 90 e4 BCC &3241 ; to_handle_open_or_close_word # Always branches ; not_direction &325d e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &325f d0 09 BNE &326a ; not_ambiguous_noun &3261 20 e1 1e JSR &1ee1 ; get_object_or_with_what # Returns carry clear if object found &3264 90 ea BCC &3250 ; to_handle_open_or_close_object &3266 60 RTS &3267 4c 47 1e JMP &1e47 ; please_specify ; not_ambiguous_noun &326a e0 07 CPX #&07 ; WORD_EVERYTHING &326c f0 7e BEQ &32ec ; handle_open_or_close_everything ; check_word_after_direction &326e e0 04 CPX #&04 ; WORD_NOUN &3270 d0 3a BNE &32ac ; invalid_open_or_close &3272 c9 02 CMP #&02 ; NOUN_DOORS &3274 f0 76 BEQ &32ec ; handle_open_or_close_everything &3276 c9 01 CMP #&01 ; NOUN_DOOR &3278 d0 32 BNE &32ac ; invalid_open_or_close ; handle_open_or_close_door &327a ad 2c 24 LDA &242c ; exit_direction &327d 10 16 BPL &3295 ; handle_open_or_close_direction_door &327f 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &3282 b0 11 BCS &3295 ; handle_open_or_close_direction_door &3284 e0 09 CPX #&09 ; WORD_CONJUNCTION &3286 d0 06 BNE &328e ; not_end &3288 20 6b 1e JSR &1e6b ; restore_previous_current_word &328b 18 CLC &328c 90 07 BCC &3295 ; handle_open_or_close_direction_door # Always branches ; not_end &328e e0 01 CPX #&01 ; WORD_DIRECTION &3290 d0 15 BNE &32a7 ; not_direction &3292 8d 2c 24 STA &242c ; exit_direction ; handle_open_or_close_direction_door &3295 a2 00 LDX #&00 ; find_door_loop &3297 bd 00 11 LDA &1100,X ; door_rooms &329a c9 ff CMP #&ff ; END_OF_DOOR_LIST &329c f0 0e BEQ &32ac ; invalid_open_or_close &329e cd 04 13 CMP &1304 ; player_room &32a1 f0 12 BEQ &32b5 ; found_door_to_open_or_close ; consider_next_door &32a3 e8 INX &32a4 18 CLC &32a5 90 f0 BCC &3297 ; find_door_loop # Always branches ; not_direction &32a7 ad 2c 24 LDA &242c ; exit_direction &32aa 30 f7 BMI &32a3 ; consider_next_door ; invalid_open_or_close &32ac ad 27 32 LDA &3227 ; write_message_after_opening_or_closing &32af 30 01 BMI &32b2 ; to_you_can't_do_that ; leave &32b1 60 RTS ; to_you_can't_do_that &32b2 4c 3d 1e JMP &1e3d ; you_can't_do_that ; found_door_to_open_or_close &32b5 ad 2c 24 LDA &242c ; exit_direction &32b8 30 05 BMI &32bf ; skip_checking_direction &32ba dd 5b 11 CMP &115b,X ; door_directions &32bd d0 e4 BNE &32a3 ; consider_next_door ; skip_checking_direction &32bf bd 2e 11 LDA &112e,X ; door_numbers &32c2 a8 TAY &32c3 b9 88 11 LDA &1188,Y ; door_states &32c6 c9 ff CMP #&ff ; DOOR_SPECIAL_CLOSED &32c8 f0 dd BEQ &32a7 ; not_direction # Can't open or close special doors &32ca cd 26 32 CMP &3226 ; open_or_close &32cd f0 d8 BEQ &32a7 ; not_direction # Can't open an open door or close a closed one &32cf ad 26 32 LDA &3226 ; open_or_close &32d2 99 88 11 STA &1188,Y ; door_states &32d5 ee 28 32 INC &3228 ; door_was_opened_or_closed # Set to positive to indicate a door changed state &32d8 ad 27 32 LDA &3227 ; write_message_after_opening_or_closing &32db 10 d4 BPL &32b1 ; leave ; write_ok_and_repopulate_room_exits &32dd 20 8e 63 JSR &638e ; write_ok &32e0 20 7d 23 JSR &237d ; populate_room_exits &32e3 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &32e6 20 aa 24 JSR &24aa ; list_room_exits &32e9 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; handle_open_or_close_everything &32ec 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &32ef b0 2a BCS &331b ; handle_open_or_close_everything_end &32f1 e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &32f3 f0 20 BEQ &3315 ; to_please_specify &32f5 e0 09 CPX #&09 ; WORD_CONJUNCTION &32f7 d0 06 BNE &32ff ; not_end &32f9 20 6b 1e JSR &1e6b ; restore_previous_current_word &32fc 38 SEC &32fd b0 1c BCS &331b ; handle_open_or_close_everything_end # Always branches ; not_end &32ff e0 08 CPX #&08 ; WORD_EXCEPT &3301 d0 06 BNE &3309 ; not_except &3303 20 6b 1e JSR &1e6b ; restore_previous_current_word &3306 18 CLC &3307 90 12 BCC &331b ; handle_open_or_close_everything # Always branches ; not_except &3309 e0 04 CPX #&04 ; WORD_NOUN &330b d0 0b BNE &3318 ; to_you_can't_do_that &330d c9 01 CMP #&01 ; NOUN_DOOR &330f f0 0a BEQ &331b ; handle_open_or_close_everything &3311 c9 02 CMP #&02 ; NOUN_DOORS &3313 f0 06 BEQ &331b ; handle_open_or_close_everything ; to_please_specify &3315 4c 47 1e JMP &1e47 ; please_specify ; to_you_can't_do_that &3318 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_open_or_close_everything &331b a2 0b LDX #&0b ; DIRECTION_OUT &331d 8e 27 32 STX &3227 ; write_message_after_opening_or_closing # Set to positive to suppress message &3320 8e 2c 24 STX &242c ; exit_direction ; set_directions_to_apply_verb_to_loop &3323 a9 ff LDA #&ff # Set to negative to indicate door should be considered &3325 9d cd 26 STA &26cd,X ; directions_to_apply_verb_to &3328 ca DEX &3329 10 f8 BPL &3323 ; set_directions_to_apply_verb_to_loop &332b 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &332e b0 2d BCS &335d ; consider_which_doors_to_open_or_close &3330 e0 08 CPX #&08 ; WORD_EXCEPT &3332 f0 06 BEQ &333a ; consider_word_after_except &3334 20 6b 1e JSR &1e6b ; restore_previous_current_word &3337 18 CLC &3338 90 23 BCC &335d ; consider_which_doors_to_open_or_close # Always branches ; consider_word_after_except &333a 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &333d b0 1e BCS &335d ; consider_which_doors_to_open_or_close &333f e0 09 CPX #&09 ; WORD_CONJUNCTION &3341 f0 f7 BEQ &333a ; consider_word_after_except &3343 e0 01 CPX #&01 ; WORD_DIRECTION &3345 f0 0b BEQ &3352 ; exclude_direction &3347 e0 03 CPX #&03 ; WORD_OBJECT &3349 b0 ef BCS &333a ; consider_word_after_except &334b c6 6e DEC &6e ; current_word &334d c6 6e DEC &6e ; current_word &334f 18 CLC &3350 90 0b BCC &335d ; consider_which_doors_to_open_or_close ; exclude_direction &3352 ae 27 32 LDX &3227 ; write_message_after_opening_or_closing &3355 9d cd 26 STA &26cd,X ; directions_to_apply_verb_to # Set to positive to indicate door should be excluded &3358 ce 27 32 DEC &3227 ; write_message_after_opening_or_closing &335b 10 dd BPL &333a ; consider_word_after_except ; consider_which_doors_to_open_or_close &335d a2 0b LDX #&0b ; DIRECTION_OUT &335f 8e 27 32 STX &3227 ; write_message_after_opening_or_closing # Set to positive to suppress message ; consider_which_doors_to_open_or_close_loop &3362 bd cd 26 LDA &26cd,X ; directions_to_apply_verb_to &3365 cd 2c 24 CMP &242c ; exit_direction &3368 f0 06 BEQ &3370 ; skip_direction &336a ca DEX &336b 10 f5 BPL &3362 ; consider_which_doors_to_open_or_close_loop &336d 20 95 32 JSR &3295 ; handle_open_or_close_direction_door ; skip_direction &3370 ce 2c 24 DEC &242c ; exit_direction &3373 10 e8 BPL &335d ; consider_which_doors_to_open_or_close &3375 ad 28 32 LDA &3228 ; door_was_opened_or_closed # Negative if no door changed state &3378 30 9e BMI &3318 ; to_you_can't_do_that &337a 4c dd 32 JMP &32dd ; write_ok_and_repopulate_room_exits ; handle_open_or_close_object &337d aa TAX &337e 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &3381 b0 17 BCS &339a ; to_you_can't_do_that &3383 86 87 STX &87 ; object &3385 ad 26 32 LDA &3226 ; open_or_close &3388 dd e4 11 CMP &11e4,X ; object_states &338b f0 0d BEQ &339a ; to_you_can't_do_that &338d c9 80 CMP #&80 ; DOOR_CLOSED &338f 90 03 BCC &3394 ; handle_open_object &3391 4c ad 30 JMP &30ad ; that_is_pointless ; handle_open_object &3394 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry clear if object found (allow error) &3397 90 04 BCC &339d ; handle_open_object_with_object &3399 60 RTS ; to_you_can't_do_that &339a 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_open_object_with_object &339d 85 88 STA &88 ; object_two &339f aa TAX &33a0 bd ac 11 LDA &11ac,X ; object_locations &33a3 c9 ff CMP #&ff ; ROOM_CARRYING &33a5 d0 f3 BNE &339a ; to_you_can't_do_that &33a7 e0 11 CPX #&11 ; OBJECT_SMALL_KEY &33a9 f0 1d BEQ &33c8 ; handle_open_object_with_small_key &33ab e0 12 CPX #&12 ; OBJECT_LARGE_KEY &33ad d0 eb BNE &339a ; to_you_can't_do_that ; handle_open_object_with_large_key &33af a6 87 LDX &87 ; object &33b1 e0 10 CPX #&10 ; OBJECT_LARGE_CHEST &33b3 d0 e5 BNE &339a ; to_you_can't_do_that &33b5 8a TXA &33b6 48 PHA &33b7 a2 fa LDX #&fa ; ROOM_LOCKED_IN_LARGE_CHEST ; open_chest &33b9 18 CLC &33ba 69 b3 ADC #&b3 ; ROOM_OBJECTS &33bc a8 TAY &33bd 20 20 2c JSR &2c20 ; change_object_locations &33c0 68 PLA &33c1 aa TAX &33c2 de e4 11 DEC &11e4,X ; object_states &33c5 4c 8e 63 JMP &638e ; write_ok ; handle_open_object_with_small_key &33c8 a6 87 LDX &87 ; object &33ca e0 0f CPX #&0f ; OBJECT_SMALL_CHEST &33cc d0 cc BNE &339a ; to_you_can't_do_that &33ce 8a TXA &33cf 48 PHA &33d0 a2 fb LDX #&fb ; ROOM_LOCKED_IN_SMALL_CHEST &33d2 18 CLC &33d3 90 e4 BCC &33b9 ; open_chest # Always branches ; handle_pull &33d5 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &33d8 90 01 BCC &33db ; handle_pull_object ; leave &33da 60 RTS ; handle_pull_object &33db c9 16 CMP #&16 ; OBJECT_PLANK &33dd f0 07 BEQ &33e6 ; handle_pull_plank_or_nails &33df c9 1c CMP #&1c ; OBJECT_NAILS &33e1 f0 03 BEQ &33e6 ; handle_pull_plank_or_nails ; to_you_can't_do_that &33e3 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_pull_plank_or_nails &33e6 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry set if no object found (allow error) &33e9 b0 ef BCS &33da ; leave &33eb c9 17 CMP #&17 ; OBJECT_HAMMER &33ed d0 f4 BNE &33e3 ; to_you_can't_do_that &33ef 4c a2 28 JMP &28a2 ; handle_get_nails_or_plank_with_hammer ; throw_current_word &33f2 00 ; handle_throw &33f3 a5 6e LDA &6e ; current_word &33f5 8d f2 33 STA &33f2 ; throw_current_word &33f8 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &33fb 90 01 BCC &33fe ; handle_throw_word ; leave &33fd 60 RTS ; handle_throw_word &33fe e0 03 CPX #&03 ; WORD_OBJECT &3400 f0 0a BEQ &340c ; handle_throw_object &3402 90 ef BCC &33f3 ; handle_throw ; handle_throw_as_drop &3404 ad f2 33 LDA &33f2 ; throw_current_word &3407 85 6e STA &6e ; current_word &3409 4c da 26 JMP &26da ; handle_drop ; handle_throw_object &340c aa TAX &340d bd ac 11 LDA &11ac,X ; object_locations &3410 c9 ff CMP #&ff ; ROOM_CARRYING &3412 f0 03 BEQ &3417 ; handle_throw_carried_object ; to_you_can't_do_that &3414 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_throw_carried_object &3417 86 87 STX &87 ; object &3419 20 c3 1e JSR &1ec3 ; get_word # Returns carry set if no word found &341c b0 e6 BCS &3404 ; handle_throw_as_drop &341e e0 09 CPX #&09 ; WORD_CONJUNCTION &3420 d0 06 BNE &3428 ; handle_throw_object_word &3422 20 6b 1e JSR &1e6b ; restore_previous_current_word &3425 18 CLC &3426 90 dc BCC &3404 ; handle_throw_as_drop # Always branches ; handle_throw_object_word &3428 e0 01 CPX #&01 ; WORD_DIRECTION &342a d0 10 BNE &343c ; handle_throw_object_not_direction &342c aa TAX &342d bd 07 13 LDA &1307,X ; room_exits &3430 c9 fe CMP #&fe ; EXIT_CLOSED_DOOR &3432 b0 e0 BCS &3414 ; to_you_can't_do_that &3434 a6 87 LDX &87 ; object &3436 9d ac 11 STA &11ac,X ; object_locations &3439 4c 8e 63 JMP &638e ; write_ok ; handle_throw_object_not_direction &343c e0 04 CPX #&04 ; WORD_NOUN &343e d0 d4 BNE &3414 ; to_you_can't_do_that &3440 c9 08 CMP #&08 ; NOUN_AT &3442 d0 d0 BNE &3414 ; to_you_can't_do_that &3444 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &3447 b0 b4 BCS &33fd ; leave &3449 e0 04 CPX #&04 ; WORD_NOUN &344b f0 0a BEQ &3457 ; handle_throw_object_at_noun &344d e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &344f d0 03 BNE &3454 ; to_that_is_pointless &3451 4c 47 1e JMP &1e47 ; please_specify ; to_that_is_pointless &3454 4c ad 30 JMP &30ad ; that_is_pointless ; handle_throw_object_at_noun &3457 c9 03 CMP #&03 ; NOUN_PUMA &3459 d0 20 BNE &347b ; hide_object_you_missed ; handle_throw_object_at_puma &345b ad 04 13 LDA &1304 ; player_room &345e c9 2f CMP #&2f ; ROOM_2f ; "the cave" &3460 f0 f2 BEQ &3454 ; to_that_is_pointless &3462 c9 2e CMP #&2e ; ROOM_2e ; "the cave entrance" &3464 d0 ae BNE &3414 ; to_you_can't_do_that &3466 ad 20 13 LDA &1320 ; puma_state # Positive if puma has disappeared &3469 10 a9 BPL &3414 ; to_you_can't_do_that &346b a6 87 LDX &87 ; object &346d e0 15 CPX #&15 ; OBJECT_STONE &346f f0 05 BEQ &3476 ; handle_throw_stone_at_puma &3471 a2 2f LDX #&2f ; string_22f : "The creature charges after you and hurls itself at your throat! " ; to_kill_player_and_write_string_from_table_two &3473 4c 0f 2f JMP &2f0f ; kill_player_and_write_string_from_table_two ; handle_throw_stone_at_puma &3476 a2 2a LDX #&2a ; string_22a : "You fling the stone at the ferocious creature. It bounces weakly off the puma's side. The cat runs at you! " &3478 18 CLC &3479 90 f8 BCC &3473 ; to_kill_player_and_write_string_from_table_two # Always branches ; hide_object_you_missed &347b a9 fd LDA #&fd ; ROOM_DESTROYED &347d a6 87 LDX &87 ; object &347f 9d ac 11 STA &11ac,X ; object_locations &3482 a2 03 LDX #&03 ; string_303 : "You missed! " &3484 4c dc 1f JMP &1fdc ; write_string_from_table_three_with_scrolling ; handle_make &3487 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &348a 90 01 BCC &348d ; handle_make_object &348c 60 RTS ; handle_make_object &348d c9 14 CMP #&14 ; OBJECT_CATAPULT &348f f0 03 BEQ &3494 ; handle_make_catapult ; to_you_can't_do_that &3491 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_make_catapult &3494 ad c0 11 LDA &11c0 ; object_locations + &14 (OBJECT_CATAPULT) &3497 c9 fc CMP #&fc ; ROOM_HIDDEN &3499 d0 f6 BNE &3491 ; to_you_can't_do_that &349b ad b8 11 LDA &11b8 ; object_locations + &0c (OBJECT_FORKED_TWIG) &349e c9 ff CMP #&ff ; ROOM_CARRYING &34a0 d0 ef BNE &3491 ; to_you_can't_do_that &34a2 ad ba 11 LDA &11ba ; object_locations + &0e (OBJECT_BANDAGE) &34a5 c9 ff CMP #&ff ; ROOM_CARRYING &34a7 d0 e8 BNE &3491 ; to_you_can't_do_that &34a9 38 SEC # Set carry to suppress ask to specify &34aa 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &34ad 90 10 BCC &34bf ; make_catapult_with_objects ; make_catapult_with_unstated_objects &34af a2 04 LDX #&04 ; string_304 : "(from the bandage and forked twig)" &34b1 20 dc 1f JSR &1fdc ; write_string_from_table_three_with_scrolling &34b4 a9 0c LDA #&0c ; OBJECT_FORKED_TWIG &34b6 85 87 STA &87 ; object &34b8 a9 0e LDA #&0e ; OBJECT_BANDAGE &34ba 85 88 STA &88 ; object_two &34bc 18 CLC &34bd 90 26 BCC &34e5 ; make_catapult # Always branches ; make_catapult_with_objects &34bf 85 87 STA &87 ; object &34c1 38 SEC # Set carry to suppress ask to specify &34c2 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &34c5 b0 e8 BCS &34af ; make_catapult_with_unstated_objects &34c7 85 88 STA &88 ; object_two &34c9 c5 87 CMP &87 ; object &34cb f0 c4 BEQ &3491 ; to_you_can't_do_that &34cd a5 87 LDA &87 ; object &34cf c9 0e CMP #&0e ; OBJECT_BANDAGE &34d1 f0 0c BEQ &34df ; check_object_two &34d3 c9 0c CMP #&0c ; OBJECT_FORKED_TWIG &34d5 d0 ba BNE &3491 ; to_you_can't_do_that &34d7 a5 88 LDA &88 ; object_two &34d9 c9 0e CMP #&0e ; OBJECT_BANDAGE &34db d0 b4 BNE &3491 ; to_you_can't_do_that &34dd f0 06 BEQ &34e5 ; make_catapult # Always branches ; check_object_two &34df a5 88 LDA &88 ; object_two &34e1 c9 0c CMP #&0c ; OBJECT_FORKED_TWIG &34e3 d0 ac BNE &3491 ; to_you_can't_do_that ; make_catapult &34e5 a9 fd LDA #&fd ; ROOM_DESTROYED &34e7 8d b8 11 STA &11b8 ; object_locations + &0c (OBJECT_FORKED_TWIG) &34ea 8d ba 11 STA &11ba ; object_locations + &0e (OBJECT_BANDAGE) &34ed a9 ff LDA #&ff ; ROOM_CARRYING &34ef 8d c0 11 STA &11c0 ; object_locations + &14 (OBJECT_CATAPULT) &34f2 a2 02 LDX #&02 ; string_302 : "You have made a catapult! " &34f4 4c dc 1f JMP &1fdc ; write_string_from_table_three_with_scrolling ; handle_dismantle &34f7 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &34fa 90 01 BCC &34fd ; handle_dismantle_object ; leave &34fc 60 RTS ; handle_dismantle_object &34fd c9 14 CMP #&14 ; OBJECT_CATAPULT &34ff d0 90 BNE &3491 ; to_you_can't_do_that &3501 ad c0 11 LDA &11c0 ; object_locations + &14 (OBJECT_CATAPULT) &3504 c9 ff CMP #&ff ; ROOM_CARRYING &3506 d0 89 BNE &3491 ; to_you_can't_do_that &3508 a9 fc LDA #&fc ; ROOM_HIDDEN &350a 8d c0 11 STA &11c0 ; object_locations + &14 (OBJECT_CATAPULT) &350d a9 ff LDA #&ff ; ROOM_CARRYING &350f 8d b8 11 STA &11b8 ; object_locations + &0c (OBJECT_FORKED_TWIG) &3512 8d ba 11 STA &11ba ; object_locations + &0e (OBJECT_BANDAGE) &3515 4c 8e 63 JMP &638e ; write_ok ; handle_fire &3518 20 ea 1e JSR &1eea ; get_object # Returns carry set if no object found &351b b0 df BCS &34fc ; leave &351d aa TAX &351e bd ac 11 LDA &11ac,X ; object_locations &3521 c9 ff CMP #&ff ; ROOM_CARRYING &3523 d0 0f BNE &3534 ; to_you_can't_do_that &3525 e0 15 CPX #&15 ; OBJECT_STONE &3527 f0 0e BEQ &3537 ; handle_fire_stone &3529 e0 14 CPX #&14 ; OBJECT_CATAPULT &352b f0 3e BEQ &356b ; handle_fire_catapult &352d e0 2d CPX #&2d ; OBJECT_EXTINGUISHER &352f d0 03 BNE &3534 ; to_you_can't_do_that &3531 4c ec 36 JMP &36ec ; handle_extinguish_extinguisher ; to_you_can't_do_that &3534 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_fire_stone &3537 18 CLC # Clear carry to permit error &3538 20 f3 1e JSR &1ef3 ; get_with_object # Returns carry set if no object found &353b b0 bf BCS &34fc ; leave &353d c9 14 CMP #&14 ; OBJECT_CATAPULT &353f d0 f3 BNE &3534 ; to_you_can't_do_that &3541 ad c0 11 LDA &11c0 ; object_locations + &14 (OBJECT_CATAPULT) &3544 c9 ff CMP #&ff ; ROOM_CARRYING &3546 d0 ec BNE &3534 ; to_you_can't_do_that ; handle_fire_stone_with_catapult &3548 a2 2b LDX #&2b ; string_22b : "You fire the stone with the catapult! " &354a 20 d7 37 JSR &37d7 ; write_string_from_table_two &354d a9 fd LDA #&fd ; ROOM_DESTROYED &354f 8d c1 11 STA &11c1 ; object_locations + &15 (OBJECT_STONE) &3552 ad 04 13 LDA &1304 ; player_room &3555 c9 2e CMP #&2e ; ROOM_2e ; "the cave entrance" &3557 f0 05 BEQ &355e ; fire_stone_at_puma ; stone_disappears &3559 a2 2d LDX #&2d ; string_22d : "it disappears over the horizon and is lost forever. " ; to_write_string_from_table_two_and_newline &355b 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; fire_stone_at_puma &355e ad 20 13 LDA &1320 ; puma_state # Positive if puma has disappeared &3561 10 f6 BPL &3559 ; stone_disappears &3563 a2 2c LDX #&2c ; string_22c : "it speeds silently through the air and strikes the puma in the forehead. The creature snarls and disappears into the forest. The stone is nowhere to be seen. " &3565 8e 20 13 STX &1320 ; puma_state # Set to positive to indicate puma has disappeared &3568 18 CLC &3569 90 f0 BCC &355b ; to_write_string_from_table_two_and_newline # Always branches ; handle_fire_catapult &356b ad c1 11 LDA &11c1 ; object_locations + &15 (OBJECT_STONE) &356e c9 ff CMP #&ff ; ROOM_CARRYING &3570 d0 c2 BNE &3534 ; to_you_can't_do_that ; get_next_word_for_fire &3572 38 SEC # Set carry to suppress asking for more information &3573 20 72 1e JSR &1e72 ; get_noun # Returns carry set if no noun found &3576 b0 d0 BCS &3548 ; handle_fire_stone_with_catapult &3578 c9 08 CMP #&08 ; NOUN_AT &357a f0 f6 BEQ &3572 ; get_next_word_for_fire &357c c9 03 CMP #&03 ; NOUN_PUMA &357e d0 09 BNE &3589 ; fire_stone_at_other_object ; handle_fire_stone_at_puma &3580 ad 04 13 LDA &1304 ; player_room &3583 c9 2e CMP #&2e ; ROOM_2e ; "the cave entrance" &3585 d0 ad BNE &3534 ; to_you_can't_do_that &3587 f0 bf BEQ &3548 ; handle_fire_stone_with_catapult # Always branches ; fire_stone_at_other_object &3589 a2 15 LDX #&15 ; OBJECT_STONE &358b 86 87 STX &87 ; object &358d 4c 7b 34 JMP &347b ; hide_object_you_missed ; handle_where &3590 20 ac 1e JSR &1eac ; get_word_or_ask_for_more_information # Returns carry clear if word found &3593 90 01 BCC &3596 ; handle_where_word ; leave &3595 60 RTS ; handle_where_word &3596 e0 04 CPX #&04 ; WORD_NOUN &3598 f0 12 BEQ &35ac ; handle_where_noun &359a e0 03 CPX #&03 ; WORD_OBJECT &359c f0 1a BEQ &35b8 ; handle_where_object &359e e0 0b CPX #&0b ; WORD_AMBIGUOUS_NOUN &35a0 f0 03 BEQ &35a5 ; handle_where_ambiguous_noun &35a2 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_where_ambiguous_noun &35a5 20 e1 1e JSR &1ee1 ; get_object_or_with_what # Returns carry clear if object found &35a8 b0 eb BCS &3595 ; leave &35aa 90 0c BCC &35b8 ; handle_where_object # Always branches ; handle_where_noun &35ac c9 05 CMP #&05 ; NOUN_AM &35ae d0 03 BNE &35b3 ; handle_what &35b0 4c c9 22 JMP &22c9 ; look_at_room ; handle_what ; i'm_not_sure &35b3 a2 4a LDX #&4a ; string_24a : "I'm not sure. " ; to_write_string_from_table_two_and_newline &35b5 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; handle_where_object &35b8 aa TAX &35b9 bd ac 11 LDA &11ac,X ; object_locations &35bc cd 04 13 CMP &1304 ; player_room &35bf f0 1a BEQ &35db ; look_around &35c1 c9 fe CMP #&fe ; ROOM_WEARING &35c3 b0 13 BCS &35d8 ; to_handle_inventory &35c5 c9 b3 CMP #&b3 ; ROOM_OBJECTS &35c7 b0 ea BCS &35b3 ; i'm_not_sure &35c9 aa TAX &35ca bd 42 0c LDA &0c42,X ; room_string_ids &35cd aa TAX &35ce ca DEX # Use short room description &35cf 20 7c 1b JSR &1b7c ; use_uppercase &35d2 20 1c 20 JSR &201c ; end_string_with_period &35d5 4c bd 1f JMP &1fbd ; write_string_from_table_one_and_newline ; to_handle_inventory &35d8 4c d2 25 JMP &25d2 ; handle_inventory ; look_around &35db a2 05 LDX #&05 ; string_305 : "Look around! " &35dd 4c dc 1f JMP &1fdc ; write_string_from_table_three_with_scrolling ; handle_who &35e0 20 72 1e JSR &1e72 ; get_noun # Returns carry set if no noun found &35e3 b0 b0 BCS &3595 ; leave &35e5 c9 05 CMP #&05 ; NOUN_AM &35e7 d0 ca BNE &35b3 ; handle_what &35e9 a2 4b LDX #&4b ; string_24b : "You are Rick Hanson! " &35eb 18 CLC &35ec 90 c7 BCC &35b5 ; to_write_string_from_table_two_and_newline # Always branches ; restore_previous_game_state_addresses &35ee 00 79 ; &7900 = previous_game_state &35f0 88 11 ; &1188 = game_state &35f2 b4 01 ; &01b4 = end_of_game_state - game_state ; handle_oops &35f4 ad ed 5f LDA &5fed ; allow_colour &35f7 30 03 BMI &35fc ; check_for_previous_game_state ; to_you_can't_do_that &35f9 4c 3d 1e JMP &1e3d ; you_can't_do_that ; check_for_previous_game_state &35fc cd ec 37 CMP &37ec ; has_previous_game_state &35ff d0 f8 BNE &35f9 ; to_you_can't_do_that &3601 a2 ee LDX #&ee ; &35ee = restore_previous_game_state_addresses &3603 a0 35 LDY #&35 &3605 20 27 20 JSR &2027 ; copy_memory &3608 4c 04 37 JMP &3704 ; write_ok_and_look_at_room ; handle_fill &360b 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &360e 90 01 BCC &3611 ; handle_fill_object &3610 60 RTS ; handle_fill_object &3611 c9 1d CMP #&1d ; OBJECT_JAR &3613 f0 06 BEQ &361b ; handle_fill_jar &3615 20 6b 1e JSR &1e6b ; restore_previous_current_word &3618 4c dc 29 JMP &29dc ; handle_put ; handle_fill_jar &361b ad c9 11 LDA &11c9 ; object_locations + &1d (OBJECT_JAR) &361e c9 ff CMP #&ff ; ROOM_CARRYING &3620 d0 d7 BNE &35f9 ; to_you_can't_do_that &3622 ad 01 12 LDA &1201 ; object_states + &1d (OBJECT_JAR) &3625 d0 d2 BNE &35f9 ; to_you_can't_do_that &3627 ad b1 11 LDA &11b1 ; object_locations + &05 (OBJECT_LID) &362a c9 d0 CMP #&d0 ; ROOM_OBJECTS + OBJECTS_JAR &362c f0 cb BEQ &35f9 ; to_you_can't_do_that &362e ad 04 13 LDA &1304 ; player_room &3631 c9 57 CMP #&57 ; ROOM_57 ; "a watering hole" &3633 d0 06 BNE &363b ; not_room_57 ; set_jar_state &3635 ee 01 12 INC &1201 ; object_states + &1d (OBJECT_JAR) ; string_082 : "it has been filled with crystal clear water! " &3638 4c 8e 63 JMP &638e ; write_ok ; not_room_57 &363b c9 3a CMP #&3a ; ROOM_3a ; "the swampland" &363d 90 0a BCC &3649 ; not_swamp &363f c9 42 CMP #&42 ; ROOM_42 ; "the swampland" &3641 b0 b6 BCS &35f9 ; to_you_can't_do_that &3643 ee 01 12 INC &1201 ; object_states + &1d (OBJECT_JAR) ; string_083 : "it has been filled with swamp water. " &3646 18 CLC &3647 90 ec BCC &3635 ; set_jar_state # Always branches ; not_swamp &3649 c9 0d CMP #&0d ; ROOM_0d ; "the riverbank" &364b 90 ac BCC &35f9 ; to_you_can't_do_that &364d c9 11 CMP #&11 ; ROOM_11 ; "the riverbank" &364f b0 a8 BCS &35f9 ; to_you_can't_do_that &3651 a2 08 LDX #&08 ; string_308 : "That is dangerous! " &3653 4c dc 1f JMP &1fdc ; write_string_from_table_three_with_scrolling ; handle_drink &3656 38 SEC # Set carry to suppress ask to specify &3657 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &365a b0 2e BCS &368a ; handle_drink_nothing &365c c9 1d CMP #&1d ; OBJECT_JAR &365e f0 03 BEQ &3663 ; handle_drink_jar ; to_you_can't_do_that &3660 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_drink_jar &3663 ad c9 11 LDA &11c9 ; object_locations + &1d (OBJECT_JAR) &3666 c9 ff CMP #&ff ; ROOM_CARRYING &3668 d0 f6 BNE &3660 ; to_you_can't_do_that &366a ad b1 11 LDA &11b1 ; object_locations + &05 (OBJECT_LID) &366d c9 d0 CMP #&d0 ; ROOM_OBJECTS + OBJECTS_JAR &366f f0 ef BEQ &3660 ; to_you_can't_do_that &3671 ad 01 12 LDA &1201 ; object_states + &1d (OBJECT_JAR) &3674 f0 ea BEQ &3660 ; to_you_can't_do_that &3676 c9 01 CMP #&01 ; &082 - &081 : string_082 : "it has been filled with crystal clear water! " &3678 d0 08 BNE &3682 ; drink_swamp_water &367a ce 01 12 DEC &1201 ; object_states + &1d (OBJECT_JAR) ; drink_clean_water &367d a2 57 LDX #&57 ; string_257 : "You savour the clear water! " ; to_write_string_from_table_two_and_newline &367f 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; drink_swamp_water &3682 20 a5 38 JSR &38a5 ; kill_player &3685 a2 58 LDX #&58 ; string_258 : "Disgusting! " &3687 18 CLC &3688 90 f5 BCC &367f ; to_write_string_from_table_two_and_newline # Always branches ; handle_drink_nothing &368a ad 04 13 LDA &1304 ; player_room &368d c9 57 CMP #&57 ; ROOM_57 ; "a watering hole" &368f f0 ec BEQ &367d ; drink_clean_water &3691 c9 3a CMP #&3a ; ROOM_3a ; "the swampland" &3693 90 b4 BCC &3649 ; not_swamp &3695 c9 42 CMP #&42 ; ROOM_42 ; "the swampland" &3697 90 e9 BCC &3682 ; drink_swamp_water &3699 b0 c8 BCS &3663 ; handle_drink_jar # Always branches ; handle_roll &369b 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &369e 90 01 BCC &36a1 ; handle_roll_object &36a0 60 RTS ; handle_roll_object &36a1 aa TAX &36a2 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry clear if object is accessible &36a5 90 03 BCC &36aa ; handle_roll_accessible_object ; to_you_can't_do_that &36a7 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_roll_accessible_object &36aa e0 24 CPX #&24 ; OBJECT_BOULDER &36ac f0 03 BEQ &36b1 ; handle_roll_boulder ; to_that_is_pointless &36ae 4c ad 30 JMP &30ad ; that_is_pointless ; handle_roll_boulder &36b1 ad 04 13 LDA &1304 ; player_room &36b4 c9 78 CMP #&78 ; ROOM_78 ; "the steps" &36b6 90 f6 BCC &36ae ; to_that_is_pointless &36b8 c9 7b CMP #&7b ; ROOM_7b ; "the steps" &36ba b0 12 BCS &36ce ; set_boulder_location &36bc ee d4 12 INC &12d4 ; room_states + &80 ; &02 = &74 - &72 : string_172 : "the seal on the door has been broken. " &36bf a9 fd LDA #&fd ; ROOM_DESTROYED &36c1 8d d0 11 STA &11d0 ; object_locations + &24 (OBJECT_BOULDER) &36c4 a9 00 LDA #&00 ; DOOR_OPEN # Set huge door to be open &36c6 8d 8a 11 STA &118a ; door_states + DOOR_02 &36c9 a2 06 LDX #&06 ; string_406 : "You roll the large boulder down the steps and it disappears from view. Moments later, there is an enormous crash! " &36cb 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; set_boulder_location &36ce a9 80 LDA #&80 ; ROOM_80 ; "a large clearing" &36d0 8d d0 11 STA &11d0 ; object_locations + &24 (OBJECT_BOULDER) &36d3 4c 8e 63 JMP &638e ; write_ok ; handle_extinguish &36d6 38 SEC # Set carry to suppress ask to specify &36d7 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &36da 90 03 BCC &36df ; handle_extinguish_object &36dc 4c 42 1e JMP &1e42 : with_what ; handle_extinguish_object &36df c9 2d CMP #&2d ; OBJECT_EXTINGUISHER &36e1 f0 09 BEQ &36ec ; handle_extinguish_extinguisher &36e3 c9 32 CMP #&32 ; OBJECT_LIGHTHOUSE &36e5 f0 02 BEQ &36e9 ; handle_extinguish_lighthouse &36e7 d0 be BNE &36a7 ; to_you_can't_do_that # Always branches ; to_handle_extinguish_lighthouse &36e9 4c c6 37 JMP &37c6 ; handle_extinguish_lighthouse ; handle_extinguish_extinguisher &36ec ad d9 11 LDA &11d9 ; object_locations + &2d (OBJECT_EXTINGUISHER) &36ef c9 ff CMP #&ff ; ROOM_CARRYING &36f1 d0 b4 BNE &36a7 ; to_you_can't_do_that &36f3 ad 04 13 LDA &1304 ; player_room &36f6 c9 98 CMP #&98 ; ROOM_98 ; "the lounge" &36f8 d0 ad BNE &36a7 ; to_you_can't_do_that &36fa ad ec 12 LDA &12ec ; room_states + &98 &36fd c9 01 CMP #&01 ; &a4 - &a3 : string_1a4 : "the room is illuminated by the flickering glow of a blazing fire. " &36ff d0 a6 BNE &36a7 ; to_you_can't_do_that &3701 ee ec 12 INC &12ec ; room_states + &98 ; &02 = &a5 - &a3 : string_1a5 : "the fire has been extinguished. " ; write_ok_and_look_at_room &3704 20 8e 63 JSR &638e ; write_ok &3707 4c f7 39 JMP &39f7 ; look_at_room_with_scrolling ; handle_press &370a 20 ea 1e JSR &1eea ; get_object # Returns carry clear if object found &370d 90 01 BCC &3710 ; handle_press_object ; leave &370f 60 RTS ; handle_press_object &3710 c9 27 CMP #&27 ; OBJECT_CARVED_LION &3712 f0 1b BEQ &372f ; handle_press_lion &3714 c9 28 CMP #&28 ; OBJECT_CARVED_ROSE &3716 f0 46 BEQ &375e ; handle_press_rose_or_hearth &3718 c9 29 CMP #&29 ; OBJECT_HEARTH &371a f0 42 BEQ &375e ; handle_press_rose_or_hearth &371c aa TAX &371d 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &3720 b0 1c BCS &373e ; to_you_can't_do_that &3722 e0 2e CPX #&2e ; OBJECT_RED_BUTTON &3724 f0 3f BEQ &3765 ; handle_press_red_button &3726 e0 2f CPX #&2f ; OBJECT_YELLOW_BUTTON &3728 f0 43 BEQ &376d ; handle_press_yellow_button ; nothing_happens &372a a2 09 LDX #&09 ; string_309 : "Nothing happens. " &372c 4c dc 1f JMP &1fdc ; write_string_from_table_three_with_scrolling ; handle_press_lion &372f a9 00 LDA #&00 # Set to positive to make pressing effective &3731 85 87 STA &87 ; pressed ; check_fire_before_pressing &3733 ad 04 13 LDA &1304 ; player_room &3736 c9 98 CMP #&98 ; ROOM_98 ; "the lounge" &3738 f0 07 BEQ &3741 ; is_room_98 &373a c9 9f CMP #&9f ; ROOM_9f ; "the lounge" &373c f0 ec BEQ &372a ; nothing_happens ; to_you_can't_do_that &373e 4c 3d 1e JMP &1e3d ; you_can't_do_that ; is_room_98 &3741 ad ec 12 LDA &12ec ; room_states + &98 &3744 c9 02 CMP #&02 ; &a5 - &a3 ; string_1a5 : "the fire has been extinguished. " &3746 f0 05 BEQ &374d ; check_pressed &3748 a2 14 LDX #&14 ; string_414 : "The fire is too hot! " ; to_write_string_from_table_four_with_scrolling &374a 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; check_pressed &374d a5 87 LDA &87 ; pressed &374f 30 d9 BMI &372a ; nothing_happens &3751 a2 98 LDX #&98 ; ROOM_98 ; "the lounge" &3753 a0 9f LDY #&9f ; ROOM_9f ; "the lounge" &3755 8c 04 13 STY &1304 ; player_room &3758 20 20 2c JSR &2c20 ; change_object_locations &375b 18 CLC &375c 90 a6 BCC &3704 ; write_ok_and_look_at_room # Always branches ; handle_press_rose_or_hearth &375e a9 80 LDA #&80 # Set to negative to make pressing ineffective &3760 85 87 STA &87 ; pressed &3762 18 CLC &3763 90 ce BCC &3733 ; check_fire_before_pressing # Always branches ; handle_press_red_button &3765 20 a5 38 JSR &38a5 ; kill_player &3768 a2 17 LDX #&17 ; string_417 : "The horn sounds and guards run into the garage carrying pistols! They see you and take aim. " &376a 18 CLC &376b 90 dd BCC &374a ; to_write_string_from_table_four_with_scrolling # Always branches ; handle_press_yellow_button &376d ad 28 13 LDA &1328 ; yellow_button_state # Negative if yellow button has been pressed &3770 30 b8 BMI &372a ; nothing_happens &3772 a9 80 LDA #&80 &3774 8d 28 13 STA &1328 ; yellow_button_state # Set to negative to indicate yellow button has been pressed &3777 a2 16 LDX #&16 ; string_416 : "Nothing appears to happen. " &3779 18 CLC &377a 90 ce BCC &374a ; to_write_string_from_table_four_with_scrolling # Always branches ; handle_turn &377c 20 72 2c JSR &2c72 ; get_on_or_off # Returns carry set if on or off not found &377f b0 8e BCS &370f ; leave &3781 a6 87 LDX &87 ; object &3783 bd ac 11 LDA &11ac,X ; object_locations &3786 c9 ff CMP #&ff ; ROOM_CARRYING &3788 d0 b4 BNE &373e ; to_you_can't_do_that &378a e0 32 CPX #&32 ; OBJECT_LIGHTHOUSE &378c d0 b0 BNE &373e ; to_you_can't_do_that &378e a5 89 LDA &89 ; on_or_off &3790 c9 12 CMP #&12 ; NOUN_ON &3792 f0 14 BEQ &37a8 ; handle_turn_lighthouse_on &3794 c9 13 CMP #&13 ; NOUN_OFF &3796 d0 a6 BNE &373e ; to_you_can't_do_that ; handle_turn_lighthouse_off &3798 ad 27 13 LDA &1327 ; lighthouse_state # Positive if lighthouse is turned off &379b 10 a1 BPL &373e ; to_you_can't_do_that &379d a9 00 LDA #&00 &379f 8d 25 13 STA &1325 ; lighthouse_provides_light # Set to positive to indicate lighthouse does not provide light ; set_lighthouse_state &37a2 8d 27 13 STA &1327 ; lighthouse_state &37a5 4c 8e 63 JMP &638e ; write_ok ; handle_turn_lighthouse_on &37a8 ad 27 13 LDA &1327 ; lighthouse_state # Negative if lighthouse is turned on &37ab 30 91 BMI &373e ; to_you_can't_do_that &37ad a9 e5 LDA #&e5 ; ROOM_OBJECTS + OBJECT_LIGHTHOUSE &37af cd dd 11 CMP &11dd ; object_locations + &31 (OBJECT_BULB) &37b2 f0 03 BEQ &37b7 ; check_battery ; to_nothing_happens &37b4 4c 2a 37 JMP &372a ; nothing_happens ; check_battery &37b7 cd d7 11 CMP &11d7 ; object_locations + &2b (OBJECT_BATTERY) &37ba d0 f8 BNE &37b4 ; to_nothing_happens &37bc ad 26 13 LDA &1326 ; battery_cooldown &37bf 10 f3 BPL &37b4 ; to_nothing_happens &37c1 a9 80 LDA #&80 &37c3 18 CLC &37c4 90 dc BCC &37a2 ; set_lighthouse_state # Always branches ; handle_extinguish_lighthouse &37c6 ad de 11 LDA &11de ; object_locations + &32 (OBJECT_LIGHTHOUSE) &37c9 c9 ff CMP #&ff ; ROOM_CARRYING &37cb f0 cb BEQ &3798 ; handle_turn_lighthouse_off &37cd 4c 3d 1e JMP &1e3d ; you_can't_do_that ; handle_attack &37d0 a0 0c LDY #&0c ; &0cf2 = rather_silly_string &37d2 a2 f2 LDX #&f2 &37d4 4c 08 2b JMP &2b08 ; write_yellow_lowercase_string_at_address_and_newline ; write_string_from_table_two &37d7 a0 02 LDY #&02 ; to_write_string &37d9 4c 22 20 JMP &2022 ; write_string ; write_string_from_table_one &37dc a0 01 LDY #&01 &37de 18 CLC &37df 90 f8 BCC &37d9 ; to_write_string # Always branches ; write_string_from_table_zero &37e1 a0 00 LDY #&00 &37e3 18 CLC &37e4 90 f3 BCC &37d9 ; to_write_string # Always branches ; backup_previous_game_state_addresses &37e6 88 11 ; &1188 = game_state &37e8 00 79 ; &7900 = previous_game_state &37ea b4 01 ; &01b4 = end_of_game_state - game_state ; has_previous_game_state &37ec 00 ; update_world_before_action &37ed 20 6d 38 JSR &386d ; backup_game_state &37f0 20 10 20 JSR &2010 ; end_string_with_nothing &37f3 20 7c 38 JSR &387c ; set_previous_player_room &37f6 20 db 38 JSR &38db ; update_drum_objects &37f9 60 RTS ; update_world_after_action &37fa 20 10 20 JSR &2010 ; end_string_with_nothing &37fd 85 65 STA &65 ; player_state &37ff 20 b4 3c JSR &3cb4 ; update_wildlife &3802 20 33 3c JSR &3c33 ; update_battery &3805 20 43 3c JSR &3c43 ; update_lighthouse &3808 20 d0 3a JSR &3ad0 ; update_mattress &380b 20 c0 38 JSR &38c0 ; update_room_objects &380e 20 01 39 JSR &3901 ; update_pointed_twig_and_creeper_objects &3811 20 36 3a JSR &3a36 ; write_creeper_and_drum_state &3814 20 7a 3a JSR &3a7a ; update_creeper_and_drum_rooms &3817 20 bb 3a JSR &3abb ; update_hook &381a 20 e9 3a JSR &3ae9 ; update_plank_exit &381d 20 8a 38 JSR &388a ; update_soldiers &3820 a5 65 LDA &65 ; player_state &3822 30 48 BMI &386c ; leave &3824 20 aa 38 JSR &38aa ; update_can &3827 a5 65 LDA &65 ; player_state &3829 30 41 BMI &386c ; leave &382b 20 32 39 JSR &3932 ; update_spider_in_hole &382e a5 65 LDA &65 ; player_state &3830 30 3a BMI &386c ; leave &3832 20 70 39 JSR &3970 ; update_hole &3835 a5 65 LDA &65 ; player_state &3837 30 33 BMI &386c ; leave &3839 20 9c 39 JSR &399c ; update_spider_in_rubbish &383c a5 65 LDA &65 ; player_state &383e 30 2c BMI &386c ; leave &3840 20 b5 39 JSR &39b5 ; update_creeper_swing &3843 20 14 3a JSR &3a14 ; update_rain &3846 20 0a 3b JSR &3b0a ; update_plank &3849 a5 65 LDA &65 ; player_state &384b 30 1f BMI &386c ; leave &384d 20 4b 3b JSR &3b4b ; update_puma &3850 a5 65 LDA &65 ; player_state &3852 30 18 BMI &386c ; leave &3854 20 77 3b JSR &3b77 ; update_alligator &3857 a5 65 LDA &65 ; player_state &3859 30 11 BMI &386c ; leave &385b 20 b0 3b JSR &3bb0 ; update_capuchin &385e a5 65 LDA &65 ; player_state &3860 30 0a BMI &386c ; leave &3862 20 0c 3c JSR &3c0c ; update_condor &3865 a5 65 LDA &65 ; player_state &3867 30 03 BMI &386c ; leave &3869 20 7f 3c JSR &3c7f ; update_footsteps ; leave &386c 60 RTS ; backup_game_state &386d ad ed 5f LDA &5fed ; allow_colour &3870 10 10 BPL &3882 ; leave &3872 8d ec 37 STA &37ec ; has_previous_game_state &3875 a2 e6 LDX #&e6 &3877 a0 37 LDY #&37 ; &37e6 = backup_previous_game_state_addresses &3879 4c 27 20 JMP &2027 ; copy_memory ; set_previous_player_room &387c ad 04 13 LDA &1304 ; player_room &387f 8d 05 13 STA &1305 ; previous_player_room ; leave &3882 60 RTS ; soldier_string_ids &3883 04 ; string_104 : "there is not long to go! " &3884 04 ; string_104 : "there is not long to go! " &3885 03 ; string_103 : "soldiers march into the arena. " &3886 02 ; string_102 : "there is the sound of marching. " &3887 02 ; string_102 : "there is the sound of marching. " &3888 01 ; string_101 : "the sound of footsteps drifts in from the distance. " &3889 01 ; string_101 : "the sound of footsteps drifts in from the distance. " ; update_soldiers &388a ad 04 13 LDA &1304 ; player_room &388d c9 0c CMP #&0c ; ROOM_0c ; "a large, dusty arena" &388f d0 18 BNE &38a9 ; leave &3891 a2 00 LDX #&00 ; string_100 : "You are unable to do or say anything! " &3893 20 bd 1f JSR &1fbd ; write_string_from_table_one_and_newline &3896 ac 17 13 LDY &1317 ; soldiers_state &3899 b9 83 38 LDA &3883,Y ; soldier_string_ids &389c aa TAX &389d 20 c2 1f JSR &1fc2 ; write_string_from_table_two_and_newline &38a0 ce 17 13 DEC &1317 ; soldiers_state &38a3 10 04 BPL &38a9 ; leave ; kill_player &38a5 a9 ff LDA #&ff ; PLAYER_DEAD &38a7 85 65 STA &65 ; player_state # Set to negative to indicate player is dead ; leave &38a9 60 RTS ; update_can &38aa ad ac 11 LDA &11ac ; object_locations + &00 (OBJECT_CAN) &38ad c9 ff CMP #&ff ; ROOM_CARRYING &38af d0 f8 BNE &38a9 ; leave &38b1 ad ad 11 LDA &11ad ; object_locations + &01 (OBJECT_BAG) &38b4 c9 fe CMP #&fe ; ROOM_WEARING &38b6 f0 f1 BEQ &38a9 ; leave &38b8 a2 08 LDX #&08 ; string_208 : "The abrasive tin cuts your hand! " &38ba 20 c2 1f JSR &1fc2 ; write_string_from_table_two_and_newline &38bd 18 CLC &38be 90 e5 BCC &38a5 ; kill_player # Always branches ; update_room_objects &38c0 ae 04 13 LDX &1304 ; player_room &38c3 e0 23 CPX #&23 ; ROOM_23 ; "an area of the jungle" &38c5 90 14 BCC &38db ; update_drum_objects &38c7 e0 2d CPX #&2d ; ROOM_2d ; "a clearing" &38c9 90 2a BCC &38f5 ; hide_objects &38cb e0 32 CPX #&32 ; ROOM_32 ; "on the bed" &38cd f0 14 BEQ &38e3 ; move_objects_to_room_30 &38cf e0 33 CPX #&33 ; ROOM_33 ; "balanced on the mattress" &38d1 f0 10 BEQ &38e3 ; move_objects_to_room_30 &38d3 e0 34 CPX #&34 ; ROOM_34 ; "a branch" &38d5 f0 14 BEQ &38eb ; move_objects_to_room_1d &38d7 e0 35 CPX #&35 ; ROOM_35 ; "a branch" &38d9 f0 10 BEQ &38eb ; move_objects_to_room_1d ; update_drum_objects &38db a2 09 LDX #&09 ; ROOM_09 ; "the oil drum" &38dd ac af 11 LDY &11af ; object_locations + &03 (OBJECT_DRUM) &38e0 4c 20 2c JMP &2c20 ; change_object_locations ; move_objects_to_room_30 &38e3 a0 30 LDY #&30 ; ROOM_30 ; "the small cabin" ; move_objects_to_room &38e5 20 20 2c JSR &2c20 ; change_object_locations # Returns carry set if objects moved &38e8 b0 06 BCS &38f0 ; crash ; leave &38ea 60 RTS ; move_objects_to_room_1d &38eb a0 1d LDY #&1d ; ROOM_1d ; "a wide path" &38ed 18 CLC &38ee 90 f5 BCC &38e5 ; move_objects_to_room # Always branches ; crash &38f0 a2 07 LDX #&07 ; string_307 : ""Crash! " &38f2 4c a5 3b JMP &3ba5 ; to_write_string_from_table_three_with_scrolling ; hide_objects &38f5 a0 fd LDY #&fd ; ROOM_DESTROYED &38f7 20 20 2c JSR &2c20 ; change_object_locations # Returns carry clear if no objects moved &38fa 90 ee BCC &38ea ; leave &38fc a2 3f LDX #&3f ; string_23f : "A large howler monkey emerges from the undergrowth and steals something! " &38fe 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; update_pointed_twig_and_creeper_objects &3901 ad b0 11 LDA &11b0 ; object_locations + &04 (OBJECT_POINTED_TWIG) &3904 c9 ff CMP #&ff ; ROOM_CARRYING &3906 d0 05 BNE &390d ; skip_description_change &3908 a9 51 LDA #&51 ; string_051 : "pointed twig" &390a 8d 20 12 STA &1220 ; object_string_ids + &04 (OBJECT_POINTED_TWIG) ; skip_description_change &390d a2 00 LDX #&00 ; check_objects_in_room_0a_loop &390f a9 0a LDA #&0a ; ROOM_0a ; "the creeper" &3911 dd ac 11 CMP &11ac,X ; object_locations &3914 f0 06 BEQ &391c ; object_is_in_room_0a ; consider_next_object &3916 e8 INX &3917 e0 38 CPX #&38 ; OBJECT_LAST + 1 &3919 90 f4 BCC &390f ; check_objects_in_room_0a_loop &391b 60 RTS ; object_is_in_room_0a &391c e0 04 CPX #&04 ; OBJECT_POINTED_TWIG &391e f0 09 BEQ &3929 ; is_pointed_twig ; set_object_location &3920 ad 13 13 LDA &1313 ; creeper_exit &3923 9d ac 11 STA &11ac,X ; object_locations &3926 18 CLC &3927 90 ed BCC &3916 ; consider_next_object # Always branches ; is_pointed_twig &3929 ad 20 12 LDA &1220 ; object_string_ids + &04 (OBJECT_POINTED_TWIG) &392c c9 51 CMP #&51 ; string_051 : "pointed twig" &392e f0 f0 BEQ &3920 ; set_object_location &3930 d0 e4 BNE &3916 ; consider_next_object # Always branches ; update_spider_in_hole &3932 ad 1a 13 LDA &131a ; spider_is_in_hole # Negative if spider is in hole &3935 30 01 BMI &3938 ; is_in_hole ; leave &3937 60 RTS ; is_in_hole &3938 ad ad 11 LDA &11ad ; object_locations + &01 (OBJECT_BAG) &393b c9 ff CMP #&ff ; ROOM_CARRYING &393d d0 f8 BNE &3937 ; leave &393f ce 1a 13 DEC &131a ; spider_is_in_hole # Set to positive to indicate spider not in hole &3942 a9 b5 LDA #&b5 ; ROOM_OBJECTS + OBJECT_HOLE &3944 20 5f 2c JSR &2c5f ; count_objects_in_room_A &3947 e0 00 CPX #&00 &3949 d0 12 BNE &395d ; find_lid_in_hole &394b 20 16 20 JSR &2016 ; end_string_with_comma &394e a2 06 LDX #&06 ; string_206 : "As you pick up the " &3950 a0 02 LDY #&02 &3952 a9 01 LDA #&01 ; OBJECT_BAG &3954 20 06 2c JSR &2c06 ; write_string_and_object_A_with_ending &3957 20 10 20 JSR &2010 ; end_string_with_nothing &395a 4c 34 31 JMP &3134 ; spider_emerges_from_hole ; find_lid_in_hole &395d a9 00 LDA #&00 ; ROOM_00 ; "the ditch" &395f 8d b1 11 STA &11b1 ; object_locations + &05 (OBJECT_LID) &3962 a2 18 LDX #&18 ; string_018 : "You find " &3964 a0 00 LDY #&00 &3966 20 22 20 JSR &2022 ; write_string &3969 a2 1f LDX #&1f ; string_01f : "a " &396b a9 05 LDA #&05 ; OBJECT_LID &396d 4c 23 27 JMP &2723 ; write_string_and_object_A_with_scrolling ; update_hole &3970 ad 1a 13 LDA &131a ; spider_is_in_hole # Negative if spider is in hole &3973 30 13 BMI &3988 ; leave &3975 a9 b5 LDA #&b5 ; ROOM_OBJECTS + OBJECT_HOLE &3977 cd 19 13 CMP &1319 ; spider_room &397a d0 0c BNE &3988 ; leave &397c 20 5f 2c JSR &2c5f ; count_objects_in_room_A &397f e0 00 CPX #&00 &3981 f0 06 BEQ &3989 ; hole_has_no_objects &3983 a9 80 LDA #&80 # Set to negative to indicate spider hasn't yet looked at player &3985 8d 18 13 STA &1318 ; spider_state ; leave &3988 60 RTS ; hole_has_no_objects &3989 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &398c ad 18 13 LDA &1318 ; spider_state # Negative if spider hasn't looked at player &398f 30 03 BMI &3994 ; eight_gleaming_eyes_look_at_you &3991 4c 31 31 JMP &3131 ; spider_emerges_from_hole_uppercase ; eight_gleaming_eyes_look_at_you &3994 ce 18 13 DEC &1318 ; spider_state # Set to positive to indicate spider has looked at player &3997 a2 10 LDX #&10 ; string_210 : "Eight gleaming eyes look at you from the hole! " &3999 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; update_spider_in_rubbish &399c ad 04 13 LDA &1304 ; player_room &399f c9 04 CMP #&04 ; ROOM_04 ; "a rubbish mountain" &39a1 d0 e5 BNE &3988 ; leave &39a3 ad 19 13 LDA &1319 ; spider_room &39a6 c9 04 CMP #&04 ; ROOM_04 ; "a rubbish mountain" &39a8 d0 de BNE &3988 ; leave &39aa 20 a5 38 JSR &38a5 ; kill_player &39ad a2 14 LDX #&14 ; string_214 : "The spider emerges from the rubbish and crawls up your leg! It bites you! " ; write_string_from_table_two_and_newline_with_scrolling &39af 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &39b2 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; update_creeper_swing &39b5 ad 04 13 LDA &1304 ; player_room &39b8 c9 0a CMP #&0a ; ROOM_0a ; "the creeper" &39ba f0 01 BEQ &39bd ; is_room_0a ; leave &39bc 60 RTS ; is_room_0a &39bd ad 1b 13 LDA &131b ; creeper_state # Negative if not swinging on creeper &39c0 30 fa BMI &39bc ; leave &39c2 ad 20 12 LDA &1220 ; object_string_ids + &04 (OBJECT_POINTED_TWIG) &39c5 c9 4f CMP #&4f ; string_04f : "pointed twig which protrudes from a tree nearby" &39c7 d0 05 BNE &39ce ; skip_destroying_pointed_twig &39c9 a9 fc LDA #&fc ; ROOM_HIDDEN &39cb 8d b0 11 STA &11b0 ; object_locations + &04 (OBJECT_POINTED_TWIG) ; skip_destroying_pointed_twig &39ce ae 1c 13 LDX &131c ; creeper_swing_state &39d1 ad 1d 13 LDA &131d ; creeper_swing_direction &39d4 30 35 BMI &3a0b ; is_swinging_west &39d6 e0 00 CPX #&00 ; ROOM_00 ; "the ditch" &39d8 f0 26 BEQ &3a00 ; invert_creeper_swing_direction &39da ca DEX ; set_creeper_swing_state &39db 8e 1c 13 STX &131c ; creeper_swing_state &39de 8e 13 13 STX &1313 ; creeper_exit &39e1 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &39e4 a2 17 LDX #&17 ; string_217 : "The creeper is swinging. Below you is " &39e6 20 d7 37 JSR &37d7 ; write_string_from_table_two &39e9 ae 13 13 LDX &1313 ; creeper_exit &39ec bd 42 0c LDA &0c42,X ; room_string_ids &39ef aa TAX &39f0 ca DEX &39f1 20 1c 20 JSR &201c ; end_string_with_period &39f4 20 bd 1f JSR &1fbd ; write_string_from_table_one_and_newline ; look_at_room_with_scrolling &39f7 20 10 20 JSR &2010 ; end_string_with_nothing &39fa 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &39fd 4c c9 22 JMP &22c9 ; look_at_room ; invert_creeper_swing_direction &3a00 ad 1d 13 LDA &131d ; creeper_swing_direction &3a03 49 80 EOR #&80 &3a05 8d 1d 13 STA &131d ; creeper_swing_direction &3a08 38 SEC &3a09 b0 d0 BCS &39db ; set_creeper_swing_state # Always branches ; is_swinging_west &3a0b e0 04 CPX #&04 ; ROOM_04 ; "a rubbish mountain" &3a0d f0 f1 BEQ &3a00 ; invert_creeper_swing_direction &3a0f e8 INX &3a10 38 SEC &3a11 b0 c8 BCS &39db ; set_creeper_swing_state # Always branches ; raindrops_timer &3a13 00 ; update_rain &3a14 20 10 20 JSR &2010 ; end_string_with_nothing &3a17 ad 04 13 LDA &1304 ; player_room &3a1a c9 0c CMP #&0c ; ROOM_0c ; "a large, dusty arena" &3a1c b0 9e BCS &39bc ; leave &3a1e ee 13 3a INC &3a13 ; raindrops_timer &3a21 ad 13 3a LDA &3a13 ; raindrops_timer &3a24 c9 06 CMP #&06 &3a26 90 94 BCC &39bc ; leave &3a28 c9 09 CMP #&09 &3a2a 90 05 BCC &3a31 ; skip_reset &3a2c a9 00 LDA #&00 &3a2e 8d 13 3a STA &3a13 ; raindrops_timer ; skip_reset &3a31 a2 1e LDX #&1e ; string_21e : "A myriad raindrops fall in a steady stream from the dark stormclouds above. " &3a33 4c af 39 JMP &39af ; write_string_from_table_two_and_newline_with_scrolling ; write_creeper_and_drum_state &3a36 a5 8e LDA &8e ; word_value &3a38 c9 0d CMP #&0d ; VERB_LOOK &3a3a f0 04 BEQ &3a40 ; is_look_or_inventory &3a3c c9 0e CMP #&0e ; VERB_INVENTORY &3a3e d0 39 BNE &3a79 ; leave ; is_look_or_inventory &3a40 ad b2 11 LDA &11b2 ; object_locations + &06 (OBJECT_CREEPER) &3a43 c9 ff CMP #&ff ; ROOM_CARRYING &3a45 f0 05 BEQ &3a4c ; creeper_is_with_player &3a47 cd 04 13 CMP &1304 ; player_room &3a4a d0 0a BNE &3a56 ; skip_creeper ; creeper_is_with_player &3a4c ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Positive if player is not tied to creeper &3a4f 10 05 BPL &3a56 ; skip_creeper &3a51 a2 16 LDX #&16 ; string_216 : "The creeper is tied about your waist. " &3a53 20 d7 37 JSR &37d7 ; write_string_from_table_two ; skip_creeper &3a56 ad 1f 13 LDA &131f ; drum_is_tied_to_creeper # Negative if drum is tied to creeper &3a59 30 08 BMI &3a63 ; consider_drum &3a5b ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Positive if player is not tied to creeper &3a5e 10 19 BPL &3a79 ; leave &3a60 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; consider_drum &3a63 ad af 11 LDA &11af ; object_locations + &03 (OBJECT_DRUM) &3a66 c9 ff CMP #&ff ; ROOM_CARRYING &3a68 f0 05 BEQ &3a6f ; drum_is_with_player &3a6a cd 04 13 CMP &1304 ; player_room &3a6d d0 0a BNE &3a79 ; leave ; drum_is_with_player &3a6f a9 03 LDA #&03 ; OBJECT_DRUM &3a71 a2 15 LDX #&15 ; string_215 : "The creeper is tied to the " &3a73 20 0c 31 JSR &310c ; write_string_from_table_two_and_object_A &3a76 20 10 20 JSR &2010 ; end_string_with_nothing ; leave &3a79 60 RTS ; update_creeper_and_drum_rooms &3a7a ad 04 13 LDA &1304 ; player_room &3a7d c9 0c CMP #&0c ; ROOM_0c ; "a large, dusty arena" &3a7f b0 f8 BCS &3a79 ; leave &3a81 cd 05 13 CMP &1305 ; previous_player_room &3a84 f0 f3 BEQ &3a79 ; leave &3a86 ad b2 11 LDA &11b2 ; object_locations + &06 (OBJECT_CREEPER) &3a89 c9 ff CMP #&ff ; ROOM_CARRYING &3a8b f0 10 BEQ &3a9d ; skip_trailing_creeper &3a8d ad 1e 13 LDA &131e ; player_is_tied_to_creeper # Positive if player is not tied to creeper &3a90 10 e7 BPL &3a79 ; leave &3a92 ad 04 13 LDA &1304 ; player_room &3a95 8d b2 11 STA &11b2 ; object_locations + &06 (OBJECT_CREEPER) &3a98 a2 1f LDX #&1f ; string_21f : "Behind you comes the creeper! " &3a9a 20 c2 1f JSR &1fc2 ; write_string_from_table_two_and_newline ; skip_trailing_creeper &3a9d ad 04 13 LDA &1304 ; player_room &3aa0 c9 09 CMP #&09 ; ROOM_09 ; "the oil drum" &3aa2 f0 d5 BEQ &3a79 ; leave &3aa4 ad af 11 LDA &11af ; object_locations + &03 (OBJECT_DRUM) &3aa7 c9 ff CMP #&ff ; ROOM_CARRYING &3aa9 f0 ce BEQ &3a79 ; leave &3aab ad 1f 13 LDA &131f ; drum_is_tied_to_creeper # Positive if drum is not tied to creeper &3aae 10 c9 BPL &3a79 ; leave &3ab0 ad 04 13 LDA &1304 ; player_room &3ab3 8d af 11 STA &11af ; object_locations + &03 (OBJECT_DRUM) &3ab6 a2 20 LDX #&20 ; string_220 : "The drum trails after you! " &3ab8 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; update_hook &3abb ad 04 13 LDA &1304 ; player_room &3abe c9 31 CMP #&31 ; ROOM_31 ; "a cupboard" &3ac0 d0 08 BNE &3aca ; leave &3ac2 ae 89 11 LDX &1189 ; door_states + DOOR_01 &3ac5 f0 04 BEQ &3acb ; remove_hook # Hook is only accessible if cupboard door is closed ; set_hook_location &3ac7 8d c6 11 STA &11c6 ; object_locations + &1a (OBJECT_HOOK) ; leave &3aca 60 RTS ; remove_hook &3acb a9 fc LDA #&fc ; ROOM_HIDDEN &3acd 18 CLC &3ace 90 f7 BCC &3ac7 ; set_hook_location ; update_mattress &3ad0 ad c5 11 LDA &11c5 ; object_locations + &19 (OBJECT_MATTRESS) &3ad3 c9 ff CMP #&ff ; ROOM_CARRYING &3ad5 d0 f3 BNE &3aca ; leave &3ad7 20 5f 2c JSR &2c5f ; count_objects_in_room_A &3ada e0 02 CPX #&02 &3adc 90 ec BCC &3aca ; leave &3ade ad 04 13 LDA &1304 ; player_room &3ae1 8d c5 11 STA &11c5 ; object_locations + &19 (OBJECT_MATTRESS) &3ae4 a2 3e LDX #&3e ; string_23e : "Carrying the mattress with your other things is a struggle and you eventually drop it. " &3ae6 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; update_plank_exit &3ae9 a9 36 LDA #&36 ; ROOM_36 ; "a clearing" &3aeb cd c2 11 CMP &11c2 ; object_locations + &16 (OBJECT_PLANK) &3aee f0 15 BEQ &3b05 ; plank_is_in_room_36 &3af0 a9 37 LDA #&37 ; ROOM_37 ; "the quicksand" &3af2 a2 02 LDX #&02 &3af4 8e 16 13 STX &1316 ; plank_cooldown ; set_plank_exit &3af7 8d 15 13 STA &1315 ; plank_exit &3afa ad 04 13 LDA &1304 ; player_room &3afd c9 36 CMP #&36 ; ROOM_36 ; "a clearing" &3aff d0 03 BNE &3b04 ; leave &3b01 20 7d 23 JSR &237d ; populate_room_exits ; leave &3b04 60 RTS ; plank_is_in_room_36 &3b05 a9 39 LDA #&39 ; ROOM_39 ; "the plank which extends over the quicksand" &3b07 18 CLC &3b08 90 ed BCC &3af7 ; set_plank_exit # Always branches ; update_plank &3b0a ad c2 11 LDA &11c2 ; object_locations + &16 (OBJECT_PLANK) &3b0d c9 36 CMP #&36 ; ROOM_36 ; "a clearing" &3b0f d0 f3 BNE &3b04 ; leave &3b11 ad 04 13 LDA &1304 ; player_room &3b14 c9 39 CMP #&39 ; ROOM_39 ; "the plank which extends over the quicksand" &3b16 f0 1b BEQ &3b33 ; is_on_plank &3b18 c9 36 CMP #&36 ; ROOM_36 ; "a clearing" &3b1a f0 04 BEQ &3b20 ; is_next_to_quicksand &3b1c c9 38 CMP #&38 ; ROOM_38 ; "the far side of the quicksand" &3b1e d0 e4 BNE &3b04 ; leave ; is_next_to_quicksand &3b20 ce 16 13 DEC &1316 ; plank_cooldown &3b23 10 df BPL &3b04 ; leave ; remove_plank &3b25 a9 fd LDA #&fd ; ROOM_DESTROYED &3b27 8d c2 11 STA &11c2 ; object_locations + &16 (OBJECT_PLANK) &3b2a 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3b2d 20 04 2b JSR &2b04 ; write_slurp &3b30 18 CLC &3b31 90 b6 BCC &3ae9 ; update_plank_exit # Always branches ; is_on_plank &3b33 ce 16 13 DEC &1316 ; plank_cooldown &3b36 10 cc BPL &3b04 ; leave &3b38 a9 37 LDA #&37 ; ROOM_37 ; "the quicksand" &3b3a 8d 04 13 STA &1304 ; player_room &3b3d 20 25 3b JSR &3b25 ; remove_plank &3b40 4c f7 39 JMP &39f7 ; look_at_room_with_scrolling ; slurp_string &3b43 53 4c 55 52 52 50 21 0d ; "SLURRP!" ; update_puma &3b4b ad 04 13 LDA &1304 ; player_room &3b4e c9 2e CMP #&2e ; ROOM_2e ; "the cave entrance" &3b50 f0 05 BEQ &3b57 ; is_room_2e &3b52 c9 2f CMP #&2f ; ROOM_2f ; "the cave" &3b54 f0 0b BEQ &3b61 ; is_room_2f ; leave &3b56 60 RTS ; is_room_2e # Outside cave &3b57 ad 20 13 LDA &1320 ; puma_state # Positive if puma has disappeared &3b5a 10 fa BPL &3b56 ; leave &3b5c a2 28 LDX #&28 ; string_228 : "A ferocious puma prowls menacingly outside the cave! " ; to_write_string_from_table_two_and_newline_with_scrolling &3b5e 4c af 39 JMP &39af ; write_string_from_table_two_and_newline_with_scrolling ; is_room_2f # Inside cave &3b61 a2 2e LDX #&2e ; string_22e : "The puma lurks at the entrance to the cave! " &3b63 ce 21 13 DEC &1321 ; puma_cooldown &3b66 ad 21 13 LDA &1321 ; puma_cooldown &3b69 c9 01 CMP #&01 &3b6b 90 03 BCC &3b70 ; puma_kills_player &3b6d 18 CLC &3b6e 90 ee BCC &3b5e ; to_write_string_from_table_two_and_newline_with_scrolling # Always branches ; puma_kills_player &3b70 20 a5 38 JSR &38a5 ; kill_player &3b73 e8 INX ; string_22f : "The creature charges after you and hurls itself at your throat! " &3b74 18 CLC &3b75 90 e7 BCC &3b5e ; to_write_string_from_table_two_and_newline_with_scrolling # Always branches ; update_alligator &3b77 ad 22 13 LDA &1322 ; alligator_room &3b7a cd 04 13 CMP &1304 ; player_room &3b7d f0 1c BEQ &3b9b ; is_in_alligator_room &3b7f ee 22 13 INC &1322 ; alligator_room &3b82 ad 22 13 LDA &1322 ; alligator_room &3b85 c9 42 CMP #&42 ; ROOM_42 ; "the swampland" &3b87 90 05 BCC &3b8e ; skip_wraparound &3b89 a9 3a LDA #&3a ; ROOM_3a ; "the swampland" &3b8b 8d 22 13 STA &1322 ; alligator_room ; skip_wraparound &3b8e cd 04 13 CMP &1304 ; player_room &3b91 f0 08 BEQ &3b9b ; is_in_alligator_room &3b93 a9 01 LDA #&01 &3b95 8d 23 13 STA &1323 ; alligator_cooldown &3b98 18 CLC &3b99 90 bb BCC &3b56 ; leave # Always branches ; is_in_alligator_room &3b9b ce 23 13 DEC &1323 ; alligator_cooldown &3b9e 10 0b BPL &3bab ; alligator_emerges &3ba0 a2 01 LDX #&01 ; string_301 : "The enormous alligator submerges in the water before you. Suddenly, its gaping mouth closes around you, squashing you until your blood reddens the surrounding water! " &3ba2 20 a5 38 JSR &38a5 ; kill_player ; to_write_string_from_table_three_with_scrolling &3ba5 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3ba8 4c dc 1f JMP &1fdc ; write_string_from_table_three_with_scrolling ; alligator_emerges &3bab a2 00 LDX #&00 ; string_300 : "A massive alligator emerges from the dark water! The creature, cold and malevolent, has not seen you! " &3bad 18 CLC &3bae 90 f5 BCC &3ba5 ; to_write_string_from_table_three_with_scrolling # Always branches ; update_capuchin &3bb0 ad 04 13 LDA &1304 ; player_room &3bb3 c9 4f CMP #&4f ; ROOM_4f ; "a wide open space" &3bb5 f0 06 BEQ &3bbd ; is_in_room_4f &3bb7 a9 00 LDA #&00 &3bb9 8d 24 13 STA &1324 ; capuchin_timer &3bbc 60 RTS ; is_in_room_4f &3bbd ac 24 13 LDY &1324 ; capuchin_timer &3bc0 c0 00 CPY #&00 &3bc2 f0 15 BEQ &3bd9 ; capuchin_looks_from_palm &3bc4 c0 01 CPY #&01 &3bc6 f0 16 BEQ &3bde ; capuchin_throws_coconut &3bc8 c0 03 CPY #&03 &3bca 90 04 BCC &3bd0 ; capuchin_does_nothing &3bcc c0 04 CPY #&04 &3bce b0 2d BCS &3bfd ; capuchin_steals_basket ; capuchin_does_nothing &3bd0 a2 51 LDX #&51 ; string_251 : "The Capuchin does nothing! " ; write_string_from_table_two_and_increment_capuchin_timer &3bd2 20 af 39 JSR &39af ; write_string_from_table_two_and_newline_with_scrolling &3bd5 ee 24 13 INC &1324 ; capuchin_timer ; leave &3bd8 60 RTS ; capuchin_looks_from_palm &3bd9 a2 4c LDX #&4c ; string_24c : "A Capuchin looks at you from the palm! " &3bdb 18 CLC &3bdc 90 f4 BCC &3bd2 ; write_string_from_table_two_and_increment_capuchin_timer # Always branches ; capuchin_throws_coconut &3bde 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3be1 a2 4d LDX #&4d ; string_24d : "The creature grabs a coconut and throws it at you! It bounces on your " &3be3 20 d7 37 JSR &37d7 ; write_string_from_table_two &3be6 ad bf 11 LDA &11bf ; object_locations + &13 (OBJECT_BASKET) &3be9 c9 fe CMP #&fe ; ROOM_WEARING &3beb f0 0b BEQ &3bf8 ; is_wearing_basket &3bed a2 4e LDX #&4e ; string_24e : "head! " ; capuchin_kills_player &3bef 20 a5 38 JSR &38a5 ; kill_player ; increment_capuchin_timer_and_write_string_from_table_two &3bf2 ee 24 13 INC &1324 ; capuchin_timer ; to_write_string_from_table_two_and_newline &3bf5 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; is_wearing_basket &3bf8 a2 4f LDX #&4f ; string_24f : "basket and rolls into the undergrowth close by! " &3bfa 18 CLC &3bfb 90 f5 BCC &3bf2 ; increment_capuchin_timer_and_write_string_from_table_two # Always branches ; capuchin_steals_basket &3bfd ad bf 11 LDA &11bf ; object_locations + &13 (OBJECT_BASKET) &3c00 c9 fe CMP #&fe ; ROOM_WEARING &3c02 d0 da BNE &3bde ; capuchin_throws_coconut &3c04 a2 50 LDX #&50 ; string_250 : "Suddenly, the creature steals your basket and hits you on the head with a coconut! " &3c06 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3c09 18 CLC &3c0a 90 e3 BCC &3bef ; capuchin_kills_player # Always branches ; update_condor &3c0c ad 04 13 LDA &1304 ; player_room &3c0f c9 65 CMP #&65 ; ROOM_65 ; "a long trail" &3c11 90 c5 BCC &3bd8 ; leave &3c13 c9 77 CMP #&77 ; ROOM_77 ; "a grass-covered mountain slope" &3c15 f0 04 BEQ &3c1b ; is_in_condor_room &3c17 c9 72 CMP #&72 ; ROOM_72 ; "a narrow mountain pass" &3c19 b0 bd BCS &3bd8 ; leave ; is_in_condor_room &3c1b 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3c1e ad 04 13 LDA &1304 ; player_room &3c21 cd 05 13 CMP &1305 ; previous_player_room &3c24 d0 08 BNE &3c2e ; condor_swoops &3c26 20 a5 38 JSR &38a5 ; kill_player &3c29 a2 53 LDX #&53 ; string_253 : "The condor attempts to grab you with its huge talons! " &3c2b 18 CLC &3c2c 90 c7 BCC &3bf5 ; to_write_string_from_table_two_and_newline # Always branches ; condor_swoops &3c2e a2 52 LDX #&52 ; string_252 : "A beautiful condor swoops down from above! " &3c30 18 CLC &3c31 90 c2 BCC &3bf5 ; to_write_string_from_table_two_and_newline # Always branches ; update_battery &3c33 ad d7 11 LDA &11d7 ; object_locations + &2b (OBJECT_BATTERY) &3c36 c9 df CMP #&df ; ROOM_OBJECTS + OBJECT_POWERMATIC &3c38 d0 08 BNE &3c42 ; leave &3c3a ad 26 13 LDA &1326 ; battery_cooldown &3c3d 30 03 BMI &3c42 ; leave &3c3f ce 26 13 DEC &1326 ; battery_cooldown ; leave &3c42 60 RTS ; update_lighthouse &3c43 a9 e5 LDA #&e5 ; ROOM_OBJECTS + OBJECT_LIGHTHOUSE &3c45 cd d7 11 CMP &11d7 ; object_locations + &2b (OBJECT_BATTERY) &3c48 d0 2c BNE &3c76 ; set_lighthouse_to_be_unlit &3c4a cd dd 11 CMP &11dd ; object_locations + &31 (OBJECT_BULB) &3c4d d0 27 BNE &3c76 ; set_lighthouse_to_be_unlit &3c4f ad 27 13 LDA &1327 ; lighthouse_state # Zero if lighthouse is turned off &3c52 f0 22 BEQ &3c76 ; set_lighthouse_to_be_unlit &3c54 a2 32 LDX #&32 ; OBJECT_LIGHTHOUSE &3c56 20 40 2c JSR &2c40 ; check_if_object_is_accessible # Returns carry set if object is inaccessible &3c59 b0 e7 BCS &3c42 ; leave &3c5b 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3c5e a2 10 LDX #&10 ; string_410 : "The lighthouse goes " &3c60 20 05 20 JSR &2005 ; write_string_from_table_four &3c63 ad 25 13 LDA &1325 ; lighthouse_provides_light &3c66 49 80 EOR #&80 &3c68 8d 25 13 STA &1325 ; lighthouse_provides_light &3c6b 30 05 BMI &3c72 ; lighthouse_is_on &3c6d a2 12 LDX #&12 ; string_412 : "out. " ; to_write_string_from_table_four_with_scrolling &3c6f 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; lighthouse_is_on &3c72 e8 INX ; string_411 : "on. " &3c73 18 CLC &3c74 90 f9 BCC &3c6f ; to_write_string_from_table_four_with_scrolling # Always branches ; set_lighthouse_to_be_unlit &3c76 a9 00 LDA #&00 &3c78 8d 27 13 STA &1327 ; lighthouse_state # Set to positive to indicate lighthouse turned off &3c7b 8d 25 13 STA &1325 ; lighthouse_provides_light # Set to positive to indicate lighthouse does not provide light ; leave &3c7e 60 RTS ; update_footsteps &3c7f ad 04 13 LDA &1304 ; player_room &3c82 c9 af CMP #&af ; ROOM_af ; "the boot" &3c84 d0 f8 BNE &3c7e ; leave &3c86 ce 29 13 DEC &1329 ; footsteps_cooldown &3c89 10 f3 BPL &3c7e ; leave &3c8b 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3c8e a2 bc LDX #&bc ; string_1bc : "There is the sound of footsteps! " &3c90 20 bd 1f JSR &1fbd ; write_string_from_table_one_and_newline &3c93 ad 8b 11 LDA &118b ; door_states + DOOR_03 # Tunnel door &3c96 f0 14 BEQ &3cac ; footsteps_kill_player &3c98 ad 8c 11 LDA &118c ; door_states + DOOR_04 # Limousine door &3c9b f0 0f BEQ &3cac ; footsteps_kill_player &3c9d ad 8d 11 LDA &118d ; door_states + DOOR_05 # Limousine door &3ca0 f0 0a BEQ &3cac ; footsteps_kill_player &3ca2 ad 8e 11 LDA &118e ; door_states + DOOR_06 # Garage door &3ca5 f0 05 BEQ &3cac ; footsteps_kill_player &3ca7 a9 02 LDA #&02 ; PLAYER_WON &3ca9 85 65 STA &65 ; player_state ; leave &3cab 60 RTS ; footsteps_kill_player &3cac a2 b5 LDX #&b5 ; string_1b5 : ""Why is this door open? " Says a voice and begins searching the room! Eventually, the boot opens! " &3cae 20 a5 38 JSR &38a5 ; kill_player &3cb1 4c bd 1f JMP &1fbd ; write_string_from_table_one_and_newline ; update_wildlife &3cb4 ad 04 13 LDA &1304 ; player_room &3cb7 c9 11 CMP #&11 ; ROOM_11 ; "the riverbank" &3cb9 90 f0 BCC &3cab ; leave &3cbb c9 2d CMP #&2d ; ROOM_2d ; "a clearing" &3cbd 90 08 BCC &3cc7 ; room_has_wildlife &3cbf c9 52 CMP #&52 ; ROOM_52 ; "a long trail" &3cc1 90 e8 BCC &3cab ; leave &3cc3 c9 65 CMP #&65 ; ROOM_65 ; "a long trail" &3cc5 b0 e4 BCS &3cab ; leave ; room_has_wildlife &3cc7 ee 2b 13 INC &132b ; wildlife_timer &3cca ad 2b 13 LDA &132b ; wildlife_timer &3ccd c9 05 CMP #&05 &3ccf 90 da BCC &3cab ; leave &3cd1 a9 00 LDA #&00 &3cd3 8d 2b 13 STA &132b ; wildlife_timer &3cd6 ae 2a 13 LDX &132a ; wildlife_state &3cd9 e0 1d CPX #&1d ; &1c + 1 : string_41c : "a large reptile appears. The creature sees you and runs away! " &3cdb 90 05 BCC &3ce2 ; skip_wraparound &3cdd a2 18 LDX #&18 ; string_418 ; "a large, black and yellow snake slithers by! " &3cdf 8e 2a 13 STX &132a ; wildlife_state ; skip_wraparound &3ce2 20 6e 1b JSR &1b6e ; check_for_scrolling_protecting_registers &3ce5 20 7c 1b JSR &1b7c ; use_uppercase &3ce8 20 e2 1f JSR &1fe2 ; write_string_from_table_four_with_scrolling &3ceb ee 2a 13 INC &132a ; wildlife_state &3cee 60 RTS ; rooms_with_exit_handlers &3cef 0a ; ROOM_0a ; "the creeper" &3cf0 2e ; ROOM_2e ; "the cave entrance" &3cf1 2f ; ROOM_2f ; "the cave" &3cf2 15 ; ROOM_15 ; "a path which leads through the rain forest" &3cf3 39 ; ROOM_39 ; "the plank which extends over the quicksand" &3cf4 48 ; ROOM_48 ; "a rope bridge" &3cf5 7d ; ROOM_7d ; "the roadside" &3cf6 9f ; ROOM_9f ; "the lounge" &3cf7 a1 ; ROOM_a1 ; "a tunnel" &3cf8 a5 ; ROOM_a5 ; "an area of the garage" &3cf9 a9 ; ROOM_a9 ; "an area of the garage" ; room_exit_handler_addresses &3cfa 17 3d ; &3d17 = handle_room_0a_exit &3cfc 5c 3d ; &3d5c = handle_room_2e_exit &3cfe 65 3d ; &3d65 = handle_room_2f_exit &3d00 6a 3d ; &3d6a = handle_room_15_exit &3d02 72 3d ; &3d72 = handle_room_39_exit &3d04 7b 3d ; &3d7b = handle_room_48_exit &3d06 8d 3d ; &3d8d = handle_room_7d_exit &3d08 ba 3d ; &3dba = handle_room_9f_exit &3d0a cd 3d ; &3dcd = handle_room_a1_exit &3d0c e8 3d ; &3de8 = handle_room_a5_exit &3d0e 03 3e ; &3e03 = handle_room_a9_exit ; leap_from_swinging_creeper &3d10 a2 18 LDX #&18 ; string_218 : "You leap from the swinging creeper and land " &3d12 a0 02 LDY #&02 &3d14 4c 22 20 JMP &2022 ; write_string ; handle_room_0a_exit # "the creeper" &3d17 c0 09 CPY #&09 ; DIRECTION_DOWN &3d19 d0 0e BNE &3d29 ; to_use_room_exit_Y &3d1b ad 13 13 LDA &1313 ; creeper_exit &3d1e c9 09 CMP #&09 ; ROOM_09 ; "the oil drum" &3d20 d0 15 BNE &3d37 ; not_room_09 &3d22 ad 5e 12 LDA &125e ; room_states + &0a &3d25 c9 01 CMP #&01 ; &11 - &10 : string_111 : "a length of creeper dangles below you. " &3d27 d0 2e BNE &3d57 ; leap_from_creeper_onto_drum ; to_use_room_exit_Y &3d29 4c 71 25 JMP &2571 ; use_room_exit_Y ; leap_from_creeper_onto_granite_floor &3d2c 20 10 3d JSR &3d10 ; leap_from_swinging_creeper &3d2f a2 1a LDX #&1a ; string_21a : "on the granite floor of the ditch! " ; write_string_from_table_two_and_newline_then_kill_player &3d31 20 a5 38 JSR &38a5 ; kill_player &3d34 4c c2 1f JMP &1fc2 ; write_string_from_table_two_and_newline ; not_room_09 &3d37 ad 13 13 LDA &1313 ; creeper_exit &3d3a c9 04 CMP #&04 ; ROOM_04 ; "a rubbish mountain" &3d3c d0 ee BNE &3d2c ; leap_from_creeper_onto_granite_floor &3d3e ad 20 12 LDA &1220 ; object_string_ids + &04 (OBJECT_POINTED_TWIG) &3d41 c9 4f CMP #&4f ; string_04f : "pointed twig which protrudes from a tree nearby" &3d43 d0 05 BNE &3d4a ; skip_pointed_twig &3d45 a9 0a LDA #&0a ; ROOM_0a ; "the creeper" &3d47 8d b0 11 STA &11b0 ; object_locations + &04 (OBJECT_POINTED_TWIG) ; skip_pointed_twig &3d4a 20 10 3d JSR &3d10 ; leap_from_swinging_creeper &3d4d a2 19 LDX #&19 ; string_219 : "on the soft rubbish mountain! Eventually, the creeper stops swinging. " &3d4f 20 c2 1f JSR &1fc2 ; write_string_from_table_two_and_newline &3d52 a0 09 LDY #&09 ; DIRECTION_DOWN &3d54 18 CLC &3d55 90 d2 BCC &3d29 ; to_use_room_exit_Y # Always branches ; leap_from_creeper_onto_drum &3d57 a2 1d LDX #&1d ; string_21d : "You leap from the creeper, accidentally toppling the oil drum and landing with a thump on the floor! " &3d59 18 CLC &3d5a 90 d5 BCC &3d31 ; write_string_from_table_two_and_newline_then_kill_player # Always branches ; handle_room_2e_exit # "the cave entrance" &3d5c c0 0a CPY #&0a ; DIRECTION_IN &3d5e d0 c9 BNE &3d29 ; to_use_room_exit_Y &3d60 ad 20 13 LDA &1320 ; puma_state # Positive if puma has disappeared &3d63 10 c4 BPL &3d29 ; to_use_room_exit_Y ; handle_room_2f_exit # "the cave" &3d65 a2 29 LDX #&29 ; string_229 : "At the entrance to the cave, the puma pounces! " &3d67 18 CLC &3d68 90 c7 BCC &3d31 ; write_string_from_table_two_and_newline_then_kill_player # Always branches ; handle_room_15_exit # "a path which leads through the rain forest" &3d6a a9 36 LDA #&36 ; ROOM_36 ; "a clearing" ; set_quicksand_location &3d6c 8d c4 11 STA &11c4 ; object_locations + &18 (OBJECT_QUICKSAND) ; to_use_room_exit_Y &3d6f 4c 71 25 JMP &2571 ; use_room_exit_Y ; handle_room_39_exit # "the plank which extends over the quicksand" &3d72 c0 00 CPY #&00 ; DIRECTION_NORTH &3d74 f0 f4 BEQ &3d6a ; handle_room_15_exit &3d76 a9 38 LDA #&38 ; ROOM_38 ; "the far side of the quicksand" &3d78 18 CLC &3d79 90 f1 BCC &3d6c ; set_quicksand_location # Always branches ; handle_room_48_exit # "a rope bridge" &3d7b 98 TYA &3d7c 48 PHA &3d7d 20 30 2f JSR &2f30 ; kill_player_if_carrying_too_much &3d80 68 PLA &3d81 a8 TAY &3d82 b0 02 BCS &3d86 ; leave &3d84 90 e9 BCC &3d6f ; to_use_room_exit_Y # Always branches ; leave &3d86 60 RTS ; to_write_string_from_table_four_with_scrolling &3d87 20 e2 1f JSR &1fe2 ; write_string_from_table_four_with_scrolling &3d8a 4c 6e 1b JMP &1b6e ; check_for_scrolling_protecting_registers ; handle_room_7d_exit # "the roadside" &3d8d c0 02 CPY #&02 ; DIRECTION_EAST &3d8f d0 de BNE &3d6f ; to_use_room_exit_Y &3d91 a9 81 LDA #&81 ; ROOM_81 ; "a large clearing" &3d93 8d 04 13 STA &1304 ; player_room &3d96 a2 fe LDX #&fe ; ROOM_WEARING &3d98 a0 fd LDY #&fd ; ROOM_DESTROYED &3d9a 20 20 2c JSR &2c20 ; change_object_locations &3d9d a2 ff LDX #&ff ; ROOM_CARRYING &3d9f a0 fd LDY #&fd ; ROOM_DESTROYED &3da1 20 20 2c JSR &2c20 ; change_object_locations &3da4 a9 ff LDA #&ff ; ROOM_WEARING &3da6 8d d1 11 STA &11d1 ; object_locations + &25 (OBJECT_OVERALLS) &3da9 a2 00 LDX #&00 ; string_400 : "As you cross the road, the men leap at you! You struggle but before long find yourself bound in the back of the lorry between bundles of coca leaves! Hours later, after a long and uncomfortable journey, the lorry halts outside a large mansion. You are dragged from the back and bundled inside. " ; write_arch_strings_loop &3dab 20 87 3d JSR &3d87 ; to_write_string_from_table_four_with_scrolling &3dae e8 INX &3daf e0 04 CPX #&04 ; &03 + 1 : string_403 : ""Things change. I'm the boss here! " He replies. "Please make yourself comfortable. You have the run of the house. Only stay inside! This is a dangerous place! "" &3db1 90 f8 BCC &3dab ; write_arch_strings_loop &3db3 e8 INX ; string_405 : "Arch hands you a pair of overalls and wanders away. " &3db4 20 87 3d JSR &3d87 ; to_write_string_from_table_four_with_scrolling &3db7 4c c9 22 JMP &22c9 ; look_at_room ; handle_room_9f_exit # "the lounge" &3dba 98 TYA &3dbb 48 PHA &3dbc a2 13 LDX #&13 ; string_413 : "There is a grating sound and the tunnel closes! " &3dbe 20 e2 1f JSR &1fe2 ; write_string_from_table_four_with_scrolling &3dc1 a2 9f LDX #&9f ; ROOM_9f ; "the lounge" &3dc3 a0 98 LDY #&98 ; ROOM_98 ; "the lounge" &3dc5 20 20 2c JSR &2c20 ; change_object_locations &3dc8 68 PLA &3dc9 a8 TAY ; to_use_room_exit_Y &3dca 4c 71 25 JMP &2571 ; use_room_exit_Y ; handle_room_a1_exit # "a tunnel" &3dcd c0 00 CPY #&00 ; DIRECTION_NORTH &3dcf d0 f9 BNE &3dca ; to_use_room_exit_Y &3dd1 ad d9 11 LDA &11d9 ; object_locations + &2d (OBJECT_EXTINGUISHER) &3dd4 c9 a2 CMP #&a2 ; ROOM_a2 ; "a narrow area of the tunnel" &3dd6 f0 08 BEQ &3de0 ; extinguisher_is_on_pressure_pad &3dd8 20 a5 38 JSR &38a5 ; kill_player &3ddb a2 15 LDX #&15 ; string_415 : "You enter the narrow tunnel and step on a pressure pad! The walls close in! " &3ddd 4c e2 1f JMP &1fe2 ; write_string_from_table_four_with_scrolling ; extinguisher_is_on_pressure_pad &3de0 a9 2d LDA #&2d ; OBJECT_EXTINGUISHER &3de2 8d 35 13 STA &1335 ; immovable_objects + 9 &3de5 18 CLC &3de6 90 e2 BCC &3dca ; to_use_room_exit_Y # Always branches ; handle_room_a5_exit # "an area of the garage" &3de8 c0 00 CPY #&00 ; DIRECTION_NORTH ; check_yellow_button_state &3dea d0 de BNE &3dca ; to_use_room_exit_Y &3dec ad 28 13 LDA &1328 ; yellow_button_state # Zero if yellow button hasn't been pressed &3def f0 d9 BEQ &3dca ; to_use_room_exit_Y &3df1 98 TYA &3df2 48 PHA &3df3 a2 ad LDX #&ad ; ROOM_ad ; "an area of the garage" &3df5 a9 ae LDA #&ae ; ROOM_ae ; "an area of the garage" &3df7 99 07 13 STA &1307,Y ; room_exits &3dfa a8 TAY &3dfb 20 20 2c JSR &2c20 ; change_object_locations &3dfe 68 PLA &3dff a8 TAY &3e00 18 CLC &3e01 90 c7 BCC &3dca ; to_use_room_exit_Y # Always branches ; handle_room_a9_exit # "an area of the garage" &3e03 c0 01 CPY #&01 ; DIRECTION_SOUTH &3e05 d0 # Tape version is missing three bytes, so calls BRK # c3 BNE &3dca ; to_use_room_exit_Y # regardless of direction when room &a9 is exited # f0 e3 BEQ &edea ; check_yellow_button_state # Always branches ; ADCODE2 ; 003e24 003e24 002e5c ; string_table_two ; string_200 &3e24 fd 35 08 fb 38 55 cd e0 56 2b 2a e8 95 69 e4 e0 ; "You close your eyes and the memories come streaming back to you! &3e34 56 6e e8 4f cf 63 37 0f 3a 38 f8 38 55 e8 79 7f ; Your mission to lead a coup against a South American junta: the &3e44 3d 3a 28 fb 53 de 65 eb fb cf bd ee 51 53 fd 07 ; parachute drop into enemy terrain, the capture, that abhorrent &3e54 fb fd 85 5a e4 80 50 e5 f0 6a dc fa 2a eb 5e dc ; prison, your evasion of the soldiers and eventually, your leap for &3e64 82 f0 ef 4f df 8e eb fb 59 3a 5f 95 54 cf 8d f9 ; cover into the gaping blackness of the ditch! " &3e74 2a 80 eb ef f0 5b f9 0d cf 4e cf 62 f9 38 55 ba &3e84 dc 7f 3d 3c 2a cf 76 56 2b cf cf f9 38 55 cf 8a &3e94 e1 ea 55 de 22 fb 59 3a 2a cf 3a cf 85 e9 67 56 &3ea4 3c 2a df 66 82 f8 d0 ; string_201 &3eab 2a cf c6 fb 3c 24 26 56 cf 35 56 3b 0a 2a cf 12 ; "the sound of footsteps drifts in from the distance. " &3ebb f6 d0 ; string_202 &3ebd 00 4e 2a cf c6 fb 3c e8 cf 17 49 f6 d0 ; "there is the sound of marching. " ; string_203 &3eca cf 76 56 e8 cf 17 fb 59 3a 2a 45 92 f6 d0 ; "soldiers march into the arena. " ; string_204 &3ed8 00 4e 9d 51 13 fb 3a a4 f8 d0 ; "there is not long to go! " ; string_205 &3ee2 fd 35 cf d2 fb 2a bb 88 fb 3d 66 56 21 f9 cf a1 ; "You push the drum on its side, clear it of rubbish and replace &3ef2 3e 3c cf 6e 2b 5b cf 83 fb 66 f6 d0 ; it. " ; string_206 &3efe fd dc 56 35 9b a0 fb c6 fb 2a d0 ; "As you pick up the " ; string_207 &3f09 53 cf f0 f9 cf 85 fb ee 9b 6f 55 cf 84 56 0a 2a ; "a venomous, black spider emerges from the hole! " &3f19 9c 73 f8 d0 ; string_208 &3f1d fd 2a cf 50 fb ef 3b de f0 ef 56 38 55 e3 41 f8 ; "The abrasive tin cuts your hand! " &3f2d d0 ; string_209 &3f2e fd 35 cf d7 fb 2a ef 3b 9e e1 7d f4 f6 d0 ; "You carry the tin safely. " ; string_20a &3f3c fd 04 3f f7 d0 ; "Which way? " ; string_20b &3f41 2a cf 4c fb cf 5b 56 63 3a 38 55 e3 2b 2b c7 61 ; "the creature crawls onto your hand and bites you! " &3f51 56 38 f8 d0 ; string_20c &3f55 2a cf 4c fb cf 5b 56 63 3a 2a dd 78 f9 cf 7f 56 ; "the creature crawls onto the bag, slithers to the floor and runs &3f65 3a 2a 10 fb 2b 42 56 3a 2a cf 13 cf 6e cf 06 f8 ; to the enormous rubbish mountain! " &3f75 d0 ; string_20d &3f76 fd 35 89 ea a0 fb 2a cf d3 09 2a d0 ; "You block the hole with the " ; string_20e &3f82 fd cf d5 37 2a cf bc e0 55 cf c2 e7 f4 f9 35 cf ; "Holding the creeper tightly, you sever it below your feet. A &3f92 3d fb 3e 14 fb 38 55 e1 b9 ef f6 53 cf e8 3c cf ; length of creeper falls to the floor. " &3fa2 bc e0 55 e1 77 e7 56 3a 2a 10 f6 d0 ; string_20f &3fae fd 38 55 cf d1 56 43 cf 3d 37 2a cf bc e0 55 e1 ; "Your attempts at severing the creeper fail. " &3fbe dc 96 f6 d0 ; string_210 &3fc2 fd a7 4a fb cf f1 37 cd e0 56 23 fb 43 35 0a 2a ; "Eight gleaming eyes look at you from the hole! " &3fd2 9c 73 f8 d0 ; string_211 &3fd6 fd ee de 45 df 54 de 62 f9 ee de 45 df 54 de 62 ; "Scaredy cat, scaredy cat, sitting on the doormat, all the little &3fe6 f9 ee 66 ef 37 3d 2a 34 e8 62 f9 77 e7 fb 2a cf ; doggie-wogs. . . Ahem. " &3ff6 fb 71 e2 b4 e0 db f2 a9 ee f6 f6 f6 dc 5d e8 f6 &4006 d0 ; string_212 &4007 fd 35 cf 3d fb 2a cf bc e0 55 15 fb 38 55 5d dc ; "You sever the creeper above your head and plummet! " &4017 52 2b c1 88 a1 ef f8 d0 ; string_213 &401f fd 0d 4e 8a 59 ef 27 f6 d0 ; "That is pointless. " ; string_214 &4028 fd 2a ee 9b 6f 55 cf 84 56 0a 2a cf 6e 2b cf 5b ; "The spider emerges from the rubbish and crawls up your leg! It &4038 56 c6 fb 38 55 73 e2 f8 3e c7 61 56 38 f8 d0 ; bites you! " ; string_215 &4047 fd 2a cf bc e0 55 4e 60 e0 52 3a 2a d0 ; "The creeper is tied to the " ; string_216 &4054 fd 2a cf bc e0 55 4e 60 e0 52 cf 82 38 55 f2 a3 ; "The creeper is tied about your waist. " &4064 68 f6 d0 ; string_217 &4067 fd 2a cf bc e0 55 4e aa 49 49 f6 14 fb 35 4e d0 ; "The creeper is swinging. Below you is " ; string_218 &4077 fd 35 cf 8a 0a 2a aa 49 37 cf bc e0 55 2b e7 2b ; "You leap from the swinging creeper and land " &4087 d0 ; string_219 &4088 3d 2a cf d9 fb cf 6e cf 06 f8 cf cf f9 2a cf bc ; "on the soft rubbish mountain! Eventually, the creeper stops &4098 e0 55 68 ea eb 56 aa 49 49 f6 d0 ; swinging. " ; string_21a &40a3 3d 2a cf 8f fb 10 fb 3c 2a df 66 82 f8 d0 ; "on the granite floor of the ditch! " ; string_21b &40b1 fd 35 aa 37 59 3a 2a 19 f8 d0 ; "You swing into the wall! " ; string_21c &40bb fd cf 65 fb cf 65 fb cf 65 f8 35 0e 64 f1 4f 11 ; "Bounce bounce bounce! You only have this much fun in a Robico &40cb e8 f0 82 fb e1 f0 50 3b 53 fd 8e c7 6e fb cf 5a ; adventure! " &40db f8 d0 ; string_21d &40dd fd 35 cf 8a 0a 2a cf bc 5a f9 cf 55 77 e7 54 72 ; "You leap from the creeper, accidentally toppling the oil drum and &40ed 9a e7 37 2a ea 96 fb bb 88 fb 2b e7 41 37 09 53 ; landing with a thump on the floor! " &40fd 58 88 eb fb 3d 2a 10 f8 d0 ; string_21e &4106 fd 53 cf 81 70 59 df 8e eb 56 e1 77 e7 fb 3b 53 ; "A myriad raindrops fall in a steady stream from the dark &4116 cf 33 fb cf 63 fb 0a 2a 1f fb cf 39 cf d8 56 15 ; stormclouds above. " &4126 f6 d0 ; string_21f &4128 fd cf 11 fb 35 6e a1 56 2a cf bc 5a f8 d0 ; "Behind you comes the creeper! " ; string_220 &4136 fd 2a bb 88 fb ef 33 56 cf fd 38 f8 d0 ; "The drum trails after you! " ; string_221 &4143 fd 35 cf 8a 59 3a 2a cf f8 37 cf 63 fb 3c 2a de ; "You leap into the terrifying stream of the culvert! " &4153 f0 e7 f1 5a ef f8 d0 ; string_222 &415a cf ad 3a 2a cf bc e0 55 04 4e 60 e0 52 3a 2a ee ; "clinging to the creeper which is tied to the sealed drum, you &416a 6c 73 52 bb 88 f9 35 cf b7 fb cf 51 2a cf ed fb ; travel through the passage and in minutes are drifting down a &417a 2b 3b cf 32 56 36 cf 35 37 1c fb 53 cf 14 cf ea ; massive river. You climb to the side, but in the process lose the &418a f6 35 cf 1e fb 3a 2a 21 f9 29 3b 2a 87 ea de 67 ; drum and creeper. " &419a 56 8c ee 4f 2a bb 88 fb 2b cf bc 5a f6 d0 ; string_223 &41a8 2a bb 88 fb 4e cf 90 0a 38 55 e3 41 56 2b 35 cf ; "the drum is dragged from your hands and you bounce into the &41b8 65 fb 59 3a 2a cf ed fb 19 ee f6 d0 ; passage walls. " ; string_224 &41c4 3b cf 32 56 3e 4e cf 11 fb 38 f6 43 2a cf 05 fb ; "in minutes it is behind you. At the entrance to a massive river &41d4 3a 53 cf 14 cf ea fb 35 cf 1e fb 3a 2a dd 5c e6 ; you climb to the bank, but as the drum accelerates down-water you &41e4 f9 29 dc 56 2a bb 88 fb cf 53 e0 56 1c db cf 28 ; are dragged back in! " &41f4 fb 35 36 cf 90 0f 59 f8 d0 ; string_225 &41fd cf ad 3a 2a dd 5e 5b e7 f9 77 e7 fb cf cb 56 3a ; "clinging to the barrel, all appears to go well, until it is filled &420d a4 fb f2 7d e7 f9 81 60 e7 fb 3e 4e cf 4d 09 cf ; with water and you are dragged downwards! " &421d 28 fb 2b 35 36 cf 90 1c f2 5e df ee f8 d0 ; string_226 &422b 35 cf 8b fb 3b 2a cf 70 fb cf 28 fb 2b cf 65 fb ; "you submerge in the violent water and bounce into the passage &423b 59 3a 2a cf ed fb 19 ee f8 d0 ; walls! " ; string_227 &4245 2a ea 96 fb bb 88 fb cf 65 56 cf fd 35 2b e3 66 ; "the oil drum bounces after you and hits you on the head! " &4255 56 35 3d 2a 5d ab f8 d0 ; string_228 &425d fd 53 cf c3 eb 88 53 87 c0 e7 56 cf dd e7 54 44 ; "A ferocious puma prowls menacingly outside the cave! " &426d 21 fb 2a 80 6d f8 d0 ; string_229 &4274 fd 43 2a cf 05 fb 3a 2a 80 6d f9 2a eb 88 53 eb ; "At the entrance to the cave, the puma pounces! " &4284 65 e9 de 67 f8 d0 ; string_22a &428a fd 35 be 37 2a cf eb fb 43 2a cf c3 cf 4c f6 3e ; "You fling the stone at the ferocious creature. It bounces weakly &429a cf 65 56 f2 6c e6 e7 54 ea e1 e1 fb 2a eb f0 75 ; off the puma's side. The cat runs at you! " &42aa fc 56 21 f6 2a de 43 42 56 43 38 f8 d0 ; string_22b &42b7 fd 35 cf fa 2a cf eb fb 09 2a cf a2 f8 d0 ; "You fire the stone with the catapult! " ; string_22c &42c5 3e ee 99 8f 56 cf 38 ef e7 54 cf 51 2a a3 55 2b ; "it speeds silently through the air and strikes the puma in the &42d5 68 ed e4 e6 e0 56 2a eb 88 53 3b 2a e1 ea 5b 5d ; forehead. The creature snarls and disappears into the forest. The &42e5 ab f6 2a cf 4c fb ee e9 5e e7 56 2b cf ca 56 59 ; stone is nowhere to be seen. " &42f5 3a 2a cf 26 f6 2a cf eb fb 4e 9d cf 22 3a dd 4f &4305 39 e9 f6 d0 ; string_22d &4309 3e cf ca 56 22 fb 2a e3 69 e4 f5 3d 2b 4e 8c ee ; "it disappears over the horizon and is lost forever. " &4319 51 e1 ea 5b f1 5a f6 d0 ; string_22e &4321 fd 2a eb 88 53 e7 f0 ed e6 56 43 2a cf 05 fb 3a ; "The puma lurks at the entrance to the cave! " &4331 2a 80 6d f8 d0 ; string_22f &4336 fd 2a cf 4c fb 82 5e 8b 56 cf fd 35 2b 98 ed e7 ; "The creature charges after you and hurls itself at your throat! " &4346 56 66 76 e7 e1 fb 43 38 55 58 8e 62 f8 d0 ; string_230 &4354 fd 35 be 37 cf 61 59 3a 2a cf f8 37 1f e9 67 56 ; "You fling yourself into the terrifying darkness of the chasm. The &4364 3c 2a cf 6f f6 2a 19 56 f5 91 e8 fb ce f9 53 cf ; walls zoom by, a colourless blur. Eventually, you splash into a &4374 08 27 fb 89 f0 ed f6 cf cf f9 35 ee eb 7b bc fb ; pool and submerge in the water. You are dragged through a network &4384 59 3a 53 8a ea e7 fb 2b cf 8b fb 3b 2a cf 28 f6 ; of underwater passageways and before long you find yourself in the &4394 35 36 cf 90 cf 51 53 7a ef cf 3e 3c 12 cf 28 fb ; huge river. You climb to the bank. " &43a4 cf ed 3f 56 2b cf 0f 13 fb 35 cf ef cf 61 3b 2a &43b4 cf 16 cf ea f6 35 cf 1e fb 3a 2a dd 5c e6 f6 d0 ; string_231 &43c4 fd 35 cf 8a 0a 2a 30 f9 e7 2b 3d 2a 80 dd 3b 09 ; "You leap from the tree, land on the cabin with the athletic &43d4 2a dc 58 73 60 de fb 78 96 66 54 3c 53 0b fb e2 ; agility of a large gnu, crash straight through it and fall onto &43e4 e9 f0 f9 de 70 bc fb cf 9c fb cf 51 3e 2b e1 77 ; the " &43f4 e7 fb 63 3a 2a d0 ; string_232 &43fa cf a0 f8 d0 ; "mattress! " ; string_233 &43fe e3 5e df f9 32 e0 50 cf 88 56 3c 2a dd 8f f8 d0 ; "hard, wooden boards of the bed! " ; string_234 &440e fd 35 cf 8a 0a 2a 30 fb 2b cf ca fb cf 51 2a cf ; "You leap from the tree and disappear through the hole in the roof. &441e d3 3b 2a 8e ea e1 f6 35 e7 2b 3d d0 ; You land on " ; string_235 &442a fd 35 cf 8a 0a 2a cf 1d fb 2b e7 2b 3d d0 ; "You leap from the cliff and land on " ; string_236 &4438 2a cf 1f fb 09 53 7f a0 5f 37 58 f0 df f8 d0 ; "the ground with a sickening thud! " ; string_237 &4447 2a cf a0 f6 35 01 fb c6 f6 d0 ; "the mattress. You stand up. " ; string_238 &4451 fd 35 cf d6 fb 2a cf 29 fb 3d 38 55 5d ab f8 d0 ; "You wear the basket on your head! " ; string_239 &4461 fd 00 4e cf a3 fb 3b 66 f8 d0 ; "There is something in it! " ; string_23a &446b fd 35 39 fb 53 cf 29 f8 d0 ; "You see a basket! " ; string_23b &4474 fd 35 cf a5 fb cf 9f f9 cf d0 fb 2b 01 fb 0f c6 ; "You wander around, stumble and stand back up! You eventually find &4484 f8 35 cf cf fb cf ef 38 fc f1 4f cf b7 73 52 9d ; you've travelled nowhere! " &4494 bd 5a e0 f8 d0 ; string_23c &4499 fd 35 cf 65 fb 3d 2a cf a0 f9 6b e2 5d 55 2b 6b ; "You bounce on the mattress, higher and higher until you disappear &44a9 e2 5d 55 81 60 e7 fb 35 cf ca fb cf 51 2a cf d3 ; through the hole in the ceiling! Your hands clasp the overhanging &44b9 3b 2a cf 20 f8 38 55 e3 41 56 de 7b ee eb fb 2a ; branch and you pull yourself up! " &44c9 22 e3 5c e2 37 cf ac fb 2b 35 eb f0 86 fb cf 61 &44d9 c6 f8 d0 ; string_23d &44dc fd 35 73 6d 55 2a c1 5c e6 fb 09 2a 64 e8 e8 5a ; "You lever the plank with the hammer. The nails disappear into the &44ec f6 2a 92 96 56 cf ca fb 59 3a 2a 12 cf 2c 2b 2a ; undergrowth and the plank lands before you! " &44fc c1 5c e6 fb e7 41 56 cf 0f 38 f8 d0 ; string_23e &4508 fd cf d7 37 2a cf a0 fb 09 38 55 ea 40 55 58 49 ; "Carrying the mattress with your other things is a struggle and you &4518 56 4e 53 cf c7 fb 2b 35 cf cf fb df 8e eb fb 66 ; eventually drop it. " &4528 f6 d0 ; string_23f &452a fd 53 0b fb 9c f2 73 55 e8 63 e6 e0 54 cf 84 56 ; "A large howler monkey emerges from the undergrowth and steals &453a 0a 2a 12 cf 2c 2b ee 61 77 56 cf a3 f8 d0 ; something! " ; string_240 &4548 fd cf 0f 35 3a 2a d0 ; "Before you to the " ; string_241 &454f cf 00 53 cf ac fb 4e cf 21 f6 d0 ; "northeast a branch is broken. " ; string_242 &455a 18 fb 2a 12 cf 2c 2c cf 6a 7e 68 f0 ed b6 52 2b ; "west the undergrowth has been disturbed and tracks lead north. " &456a cf 19 56 28 fb 06 f6 d0 ; string_243 &4572 07 fb 2a cf 3f fb 2c cf 6a eb 5e 61 52 2b 53 cf ; "south the grass has been parted and a branch is broken to the &4582 ac fb 4e cf 21 fb 3a 2a 17 f6 d0 ; east. " ; string_244 &458d cf 01 cf 19 56 28 fb cf 9f fb 53 30 fb 2b 53 cf ; "northwest tracks lead around a tree and a pinnacle is to the &459d e6 fb 4e 3a 2a 06 f6 d0 ; north. " ; string_245 &45a5 07 fb 00 4e 53 cf a7 f6 3a 2a cf 02 2a 12 cf 2c ; "south there is a clearing. To the southeast the undergrowth has &45b5 2c cf 6a eb 5e 61 df f6 d0 ; been parted. " ; string_246 &45be 06 fb 4e 53 cf 1a fb 20 3f f6 d0 ; "north is a narrow pathway. " ; string_247 &45c9 fd 35 76 cf 17 fb 29 cf ef cf f9 f6 d0 ; "You search but find nothing. " ; string_248 &45d6 fd cf f4 fb cf 3c fb 3a eb 7b f4 fb cf bd f6 d0 ; "Press space to play again. " ; string_249 &45e6 fd 11 58 cf 36 7e 68 f0 ed dd 56 35 2b 38 55 e8 ; "This thought disturbs you and your mind drifts back to reality. &45f6 59 52 cf 35 56 0f 3a 5b 77 66 f4 f6 38 55 cd e0 ; Your eyes open and a picture of the arena forms. The firing squad &4606 56 1d fb 2b 53 cf c0 fb 3c 2a 45 e9 53 2e ee f6 ; is on stand-by! " &4616 2a e1 b0 37 ee 9f dc 52 4e 3d 01 db ce f8 d0 ; string_24a &4625 fd e4 fc e8 fb 9d 51 ee f0 5b f6 d0 ; "I'm not sure. " ; string_24b &4631 fd 35 36 fd cf 58 fd e3 5c ee 63 f8 d0 ; "You are Rick Hanson! " ; string_24c &463e fd 53 fd 80 eb f0 82 3b 23 56 43 35 0a 2a eb 77 ; "A Capuchin looks at you from the palm! " &464e e8 f8 d0 ; string_24d &4651 fd 2a cf 4c fb e2 70 dd 56 53 6e de 63 f0 51 2b ; "The creature grabs a coconut and throws it at you! It bounces on &4661 58 8e f2 56 3e 43 38 f8 3e cf 65 56 3d 38 55 d0 ; your " ; string_24e &4671 5d ab f8 d0 ; "head! " ; string_24f &4675 cf 29 fb 2b 8e 86 56 59 3a 2a 12 cf 2c 08 fb ce ; "basket and rolls into the undergrowth close by! " &4685 f8 d0 ; string_250 &4687 fd cf 8c e7 f4 f9 2a cf 4c fb ee 61 77 56 38 55 ; "Suddenly, the creature steals your basket and hits you on the head &4697 cf 29 fb 2b e3 66 56 35 3d 2a 5d dc 52 09 53 6e ; with a coconut! " &46a7 de 63 f0 ef f8 d0 ; string_251 &46ad fd 2a fd 80 eb f0 82 3b 71 e0 56 cf f9 f8 d0 ; "The Capuchin does nothing! " ; string_252 &46bc fd 53 cf 94 fb de 63 71 55 aa 91 eb 56 1c fb 0a ; "A beautiful condor swoops down from above! " &46cc 15 f8 d0 ; string_253 &46cf fd 2a de 63 71 55 cf d1 56 3a e2 70 dd fb 35 09 ; "The condor attempts to grab you with its huge talons! " &46df 66 56 cf 16 ef 77 63 ee f8 d0 ; string_254 &46e9 fd 35 5b dc 52 2a d0 ; "You read the " ; string_255 &46f0 fd 2a cf 28 fb 4e 94 fb 1f fb 0d cf f9 fb 4e cf ; "The water is so dark that nothing is visible through it! " &4700 e2 cf 51 66 f8 d0 ; string_256 &4706 fd cf 28 fb 80 ee 80 6f 56 0a 2a e5 5e f6 cf cf ; "Water cascades from the jar. Eventually, it disappears. " &4716 f9 3e cf ca ee f6 d0 ; string_257 &471d fd 35 9e f1 47 fb 2a cf a1 cf 28 f8 d0 ; "You savour the clear water! " ; string_258 &472a fd cf bb 49 f8 d0 ; "Disgusting! " ; string_table_one ; string_100 &4730 fd 35 36 81 02 fb 3a 71 fb ea 55 9e 54 cf cd f8 ; "You are unable to do or say anything! " &4740 d0 ; string_101 &4741 3b 2a cf 02 cf aa fb 3c 53 0b f9 cf 2b 45 92 f9 ; "in the southeast corner of a large, dusty arena, bound to a sturdy &4751 cf 4f fb 3a 53 cf af fb 8a ee 51 dd 54 cf e3 fb ; post by thick ropes. Smooth, stone walls, ancient and yellowing, &4761 8e eb 67 f6 cf 30 f9 cf eb fb 19 ee f9 cf ae 2b ; surround you, reflecting the sunlight into your eyes. You are &4771 cf 46 49 f9 cf 95 fb 38 f9 5b e1 73 de ef 37 2a ; choked by the gag pushed into your mouth minutes before. You can &4781 ee 81 05 fb 59 3a 38 55 cd 67 f6 35 36 82 ea e6 ; say nothing. You can do nothing. You have only your thoughts. " &4791 e0 52 dd 54 2a e2 78 fb cf d2 e0 52 59 3a 38 55 &47a1 e8 44 e3 fb cf 32 56 b6 e1 ea 5b f6 35 80 50 9e &47b1 54 cf f9 f6 35 80 50 71 fb cf f9 f6 35 64 f1 4f &47c1 0e 38 55 58 65 4a ee f6 d0 ; string_102 &47ca 2a df 66 82 d0 ; "the ditch" ; string_103 &47cf 01 37 3b dc 50 cf 13 df 70 59 4d fb df 66 82 fb ; "standing in an enormous drainage ditch running beside a narrow, &47df 42 e9 37 b6 21 fb 53 cf 1a f9 7e ed 51 25 fb 04 ; dirt road which bisects the jungle like a scar. The walls are &47ef c7 76 de ef 56 2a cf 5e fb 83 e6 4f 53 ee de 5e ; about three times your height and the floor is hard as granite. " &47ff f6 2a 19 56 36 cf 82 58 5b 4f 60 a1 56 38 55 5d &480f e4 4a fb 2b 2a 10 fb 4e e3 5e 52 dc 56 cf 8f f6 &481f d0 ; string_104 &4820 53 cf bc e0 55 cf ce 56 44 fb 3c 5b dc 82 f6 d0 ; "a creeper dangles out of reach. " ; string_105 &4830 53 cf 06 fb 3c cf 6e 2c e2 dc 40 46 fb cf bd ee ; "a mountain of rubbish has gathered against the western wall of the &4840 51 2a 18 5a 50 19 fb 3c 2a df 66 82 f6 d0 ; ditch. " ; string_106 &484e 53 0c fb cf d3 4e cf e2 3b 2a 06 fb 19 f6 d0 ; "a small hole is visible in the north wall. " ; string_107 &485d 53 cf 6e cf 06 d0 ; "a rubbish mountain" ; string_108 &4863 cf ab 3d 53 cf 06 fb 3c cf 6e 04 2c 2e e0 52 43 ; "perched on a mountain of rubbish which has formed at the western &4873 2a 18 5a 50 cf 96 3c 2a cf 14 df 66 82 f6 2a cf ; extremity of the massive ditch. The pungent stench of soft, &4883 7d cf 27 fb 3c cf d9 f9 6f 80 f4 37 cf 9b fb cf ; decaying material pervades the atmosphere! " &4893 79 56 2a cf 7a e0 f8 d0 ; string_109 &489b 53 cf 28 fb cf ed d0 ; "a water passage" ; string_10a &48a2 43 2a 17 5a 50 cf 96 3c 2a df 66 82 fb 04 22 23 ; "at the eastern extremity of the ditch which overlooks a deep &48b2 56 53 6f b2 fb de f0 e7 f1 5a 51 cf d7 37 e1 8c ; culvert carrying flood-water under the road. " &48c2 ea df db cf 28 fb 12 fb 2a 25 f6 d0 ; string_10b &48ce 2a ea 96 fb bb 88 d0 ; "the oil drum" ; string_10c &48d5 cf e4 e0 52 3d 2a 0b fb ea 96 fb bb 88 f6 d0 ; "balanced on the large oil drum. " ; string_10d &48e4 2a cf bc e0 55 cf ce 56 0a 15 f6 d0 ; "the creeper dangles from above. " ; string_10e &48f0 35 36 14 fb 2a cf bc e0 55 04 4e 44 fb 3c 5b dc ; "you are below the creeper which is out of reach. " &4900 82 f6 d0 ; string_10f &4903 fd 35 cf d6 fb 2a dd 78 fb 3d 38 55 e3 41 f6 d0 ; "You wear the bag on your hand. " ; string_110 &4913 cf ad 3a 2a cf bc 5a f8 38 55 5d dc 52 4e e5 bf ; "clinging to the creeper! Your head is just below the level of the &4923 51 14 fb 2a 73 6d e7 fb 3c 2a 25 f6 d0 ; road. " ; string_111 &4930 53 cf e8 3c cf bc e0 55 cf ce 56 14 fb 38 f6 d0 ; "a length of creeper dangles below you. " ; string_112 &4940 2a cf bc e0 55 2c cf 6a cf 3d e0 52 cf 0e fb 38 ; "the creeper has been severed beneath your feet. " &4950 55 e1 b9 ef f6 d0 ; string_113 &4956 2a cf bc 5a d0 ; "the creeper" ; string_114 &495b 43 2a 72 eb fb 3c 2a cf bc e0 55 cf 22 3e a1 e0 ; "at the top of the creeper where it meets the branch of a tree. You &496b ef 56 2a cf ac fb 3c 53 30 f6 35 36 15 fb 2a 25 ; are above the road level and a soldier sees you. Silently, he &497b fb 73 6d e7 fb 2b 53 cf 76 fb 39 56 38 f6 cf 38 ; raises his pistol! " &498b ef e7 f4 f9 e3 4f 70 e4 76 56 e3 4e cf c4 f8 d0 ; string_115 &499b 2a cf ea dd 5c e6 d0 ; "the riverbank" ; string_116 &49a2 01 37 3a 2a 07 fb 3c 53 2d f9 cf 9c fb cf ea f6 ; "standing to the south of a wide, straight river. The water rushes &49b2 2a cf 28 fb ed bf 5d 56 dd 54 09 53 cf f8 37 8e ; by with a terrifying roar! " &49c2 5e f8 d0 ; string_117 &49c5 2a cf e0 fb cf 28 56 3c cf ea d0 ; "the dangerous waters of river" ; string_118 &49d0 3b 2a cf 70 fb cf 28 56 3c 2a cf ea f8 35 cf c7 ; "in the violent waters of the river! You struggle, attempting to &49e0 f9 cf d1 37 3a aa e4 e8 f9 29 94 3d f2 6c e6 e0 ; swim, but soon weaken and are dragged downstream! " &49f0 50 2b 36 cf 90 1c cf 63 f8 d0 ; string_119 &49fa 53 20 fb 04 28 56 cf 51 2a 70 3b cf 26 d0 ; "a path which leads through the rain forest" ; string_11a &4a08 cf a5 37 cf 51 2a cf 26 fb 3d 53 cf 1a fb 20 fb ; "wandering through the forest on a narrow path which winds around &4a18 04 1b 56 cf 9f fb 2a 30 ee f6 cf e3 fb 12 cf 2c ; the trees. Thick undergrowth runs either side of you, preventing &4a28 42 56 cf 10 21 fb 3c 38 f9 cf 5d 38 55 cf ed fb ; your passage into the jungle. " &4a38 59 3a 2a cf 5e f6 d0 ; string_11b &4a3f 53 e1 69 e6 fb 3b 2a 20 d0 ; "a fork in the path" ; string_11c &4a48 01 37 43 53 e1 69 e6 fb 3b 2a 20 f6 2a cf e3 f9 ; "standing at a fork in the path. The thick, green undergrowth of &4a58 cf 48 fb 12 cf 2c 3c 2a cf 5e fb cf 95 56 38 f9 ; the jungle surrounds you, shadowing you in semi-darkness! " &4a68 cf b2 37 35 3b 76 af db 1f e9 67 ee f8 d0 ; string_11d &4a76 53 cf 5e fb 20 d0 ; "a jungle path" ; string_11e &4a7c 01 37 43 2a 5f 52 3c 2a cf 26 fb 20 f6 2a 1f fb ; "standing at the end of the forest path. The dark leaves camouflage &4a8c cf 15 fb cf 6b fb 5c 54 cf 4c 56 04 75 54 dd 4f ; any creatures which may be gazing at you. " &4a9c cf 78 43 38 f6 d0 ; string_11f &4aa2 2a 12 cf 2c 4e 27 fb df 5f ee 4f 3a 2a 18 f9 2b ; "the undergrowth is less dense to the west, and a way into the &4ab2 53 3f fb 59 3a 2a cf 26 fb 4e f1 79 cf fe f6 d0 ; forest is visible. " ; string_120 &4ac2 53 cf 8f fb cf 1d f9 cf 30 fb 2b 59 ee f0 ed e8 ; "a granite cliff, smooth and insurmountable, rears before you! " &4ad2 65 6a 02 f9 5b 5e 56 cf 0f 38 f8 d0 ; string_121 &4ade cf eb fb 26 56 cf 1e fb cf 0f 38 f6 d0 ; "stone steps climb before you. " ; string_122 &4aeb dc 50 45 53 3c 2a cf 5e d0 ; "an area of the jungle" ; string_123 &4af4 6f b2 fb 3b 2a cf 5e f6 30 56 cf 95 fb 38 f9 80 ; "deep in the jungle. Trees surround you, casting grotesque shadows &4b04 68 37 e2 8e 61 ee 9f 4f cf b2 56 22 fb 2a cf 26 ; over the forest floor. Flickering sunlight filters through the &4b14 fb 10 f6 cf 18 ee 81 05 fb cf f2 56 cf 51 2a cf ; thick canopy of leaves above and bathes you in yellow half-light. &4b24 e3 fb de 5c ea eb 54 3c cf 15 fb 15 fb 2b dd dc ; " &4b34 40 56 35 3b cf 46 fb 64 e7 e1 db 05 f6 d0 ; string_124 &4b42 53 2d fb 20 d0 ; "a wide path" ; string_125 &4b47 3d 53 20 fb 3b 2a cf 5e f9 44 21 fb 53 0c f9 32 ; "on a path in the jungle, outside a small, wooden cabin, crudely &4b57 e0 50 80 dd 59 f9 cf be e7 54 cf 41 0a cf da f9 ; constructed from rough, forest material. " &4b67 cf 26 fb cf 9b f6 d0 ; string_126 &4b6e 53 0b fb c1 5c e6 fb 3c 32 fb 2c cf 6a 92 e4 73 ; "a large plank of wood has been nailed across the cabin door, &4b7e 52 cf b5 2a 80 dd 3b 34 f9 ee 6c e7 37 3e 08 df ; sealing it closed. " &4b8e f6 d0 ; string_127 &4b90 2a c1 5c e6 fb 04 2e 5a e7 54 89 ea a0 e0 52 2a ; "the plank which formerly blocked the cabin door has been removed. &4ba0 80 dd 3b 34 fb 2c cf 6a 5b ae 6d df f6 d0 ; " ; string_128 &4bae 2a cf 45 fb 4e 3a 2a 17 f6 d0 ; "the building is to the east. " ; string_129 &4bb8 2a 80 dd 3b 4e 07 17 f6 d0 ; "the cabin is southeast. " ; string_12a &4bc1 53 16 fb 30 fb 4e 3b cf f7 fb 3c 38 f6 d0 ; "a short tree is in front of you. " ; string_12b &4bcf 53 ef 33 fb cf 9f fb 2a aa 85 eb d0 ; "a trail around the swamp" ; string_12c &4bdb 01 37 3d 53 ef 33 fb 04 28 56 cf 9f fb 2a aa 85 ; "standing on a trail which leads around the swamp. The environment &4beb eb f6 2a cf e7 fb 4e df 85 eb f9 2a cf 7a 4f e3 ; is damp, the atmosphere humid, the landscape brilliantly green. &4bfb 88 e4 df f9 2a cf 72 fb cf 6d e7 54 cf 48 f6 2a ; The trail " &4c0b ef 33 fb d0 ; string_12d &4c0f cf 91 56 3a 2a 17 f6 d0 ; "continues to the east. " ; string_12e &4c17 cf 1e 56 cf db e7 54 3a 2a 06 f6 d0 ; "climbs steeply to the north. " ; string_12f &4c23 cf 8c e7 54 5f df 56 2b 35 cf ef 0d 35 36 23 37 ; "suddenly ends and you find that you are looking over a cliff to a &4c33 22 fb 53 cf 1d fb 3a 53 cf 26 fb 20 fb 14 f6 d0 ; forest path below. " ; string_130 &4c43 53 cf a7 d0 ; "a clearing" ; string_131 &4c47 3b 53 cf 16 cf a7 fb 3b 2a cf 26 f6 35 36 cf 95 ; "in a huge clearing in the forest. You are surrounded by trees on &4c57 e0 52 dd 54 30 56 3d 77 e7 fb 21 56 29 18 f9 cf ; all sides but west, where you see a small cave. " &4c67 22 35 39 fb 53 0c fb 80 6d f6 d0 ; string_132 &4c72 2a 80 f1 4f cf 05 d0 ; "the cave entrance" ; string_133 &4c79 01 37 44 21 fb 2a cf 05 fb 3a 53 cf 32 fb 80 f1 ; "standing outside the entrance to a minute cave which leads into &4c89 4f 04 28 56 59 3a 2a cf 14 8e a0 fb e1 a5 4f cf ; the massive rock face before you. " &4c99 0f 38 f6 d0 ; string_134 &4c9d 2a 80 6d d0 ; "the cave" ; string_135 &4ca1 cf 99 52 3b 2a cf b4 52 cf 3c fb 3c 53 cf 32 fb ; "huddled in the confined space of a minute cave. It has a smooth &4cb1 80 6d f6 3e 2c 53 cf 30 fb 10 f9 cf 50 fb 19 56 ; floor, abrasive walls and a low ceiling. White, gnawed bones &4cc1 2b 53 8c f2 fb cf 20 f6 cf 47 f9 e2 92 b3 52 dd ; surround you and a dark abyss opens before you. " &4cd1 63 e0 56 cf 95 fb 35 2b 53 1f fb cf 52 fb 1d 56 &4ce1 cf 0f 38 f6 d0 ; string_136 &4ce6 2a 0c fb 80 dd 59 d0 ; "the small cabin" ; string_137 &4ced 3b 53 0c f9 cf 2b cf 45 f9 cf be e7 54 cf 41 0a ; "in a small, dusty building, crudely constructed from wood cut from &4cfd 32 fb de f0 51 0a 2a 30 56 3c 2a cf 26 f6 cf 25 ; the trees of the forest. Dazzling light streams in through the &4d0d 37 05 fb cf 63 56 3b cf 51 2a cf 13 cf d3 3b 2a ; enormous hole in the ceiling. " &4d1d cf 20 f6 d0 ; string_138 &4d21 53 cf 87 d0 ; "a cupboard" ; string_139 &4d25 cf 99 52 3b 53 cf 32 fb cf 87 f9 cf 0a cf 0b dd ; "huddled in a minute cupboard, partially illuminated by light which &4d35 54 05 fb 04 cf bc 56 cf 51 9c 73 56 3b 2a 19 56 ; creeps through holes in the walls and ceiling. " &4d45 2b cf 20 f6 d0 ; string_13a &4d4a 3d 2a dd 8f f6 15 fb 35 4e 2a cf 3a cf d3 3b 2a ; "on the bed. Above you is the gaping hole in the ceiling. " &4d5a cf 20 f6 d0 ; string_13b &4d5e cf e4 e0 52 3d 2a cf a0 fb 04 83 e0 56 3d 2a 32 ; "balanced on the mattress which lies on the wooden bed beneath a &4d6e e0 50 b6 52 cf 0e fb 53 cf 14 cf d3 3b 2a cf 20 ; massive hole in the ceiling. " &4d7e f6 d0 ; string_13c &4d80 53 cf ac d0 ; "a branch" ; string_13d &4d84 cf ab 3d 53 0c f9 cf 9d fb cf ac fb 3c 2a 16 fb ; "perched on a small, rickety branch of the short tree. Looking down &4d94 30 f6 23 37 1c fb 35 39 fb d0 ; you see " ; string_13e &4d9e 2a 0c fb 80 dd 3b 8e ea e1 f6 d0 ; "the small cabin roof. " ; string_13f &4da9 2a cf 3a cf d3 3b 2a 8e 3c 3c 2a cf 45 f8 d0 ; "the gaping hole in the roof of the building! " ; string_140 &4db8 53 cf ac d0 ; "a branch" ; string_141 &4dbc cf ad 3a 53 0b f9 cf af fb cf ac fb 3c 2a 16 fb ; "clinging to a large, sturdy branch of the short tree. " &4dcc 30 f6 d0 ; string_142 &4dcf 53 cf a7 d0 ; "a clearing" ; string_143 &4dd3 01 37 3b 53 cf a7 fb 3b 2a cf 26 f9 b6 21 fb dc ; "standing in a clearing in the forest, beside an area of dangerous &4de3 50 45 53 3c cf e0 fb cf 31 ee 41 f8 d0 ; quicksand! " ; string_144 &4df0 53 32 e0 50 c1 5c e6 fb 2c cf 6a cf 83 52 22 fb ; "a wooden plank has been placed over the quicksand. " &4e00 2a cf 31 ee 41 f6 d0 ; string_145 &4e07 2a cf 31 ee 41 d0 ; "the quicksand" ; string_146 &4e0d cf 31 e7 54 ee 59 e6 37 3b 2a cf 31 ee 41 f8 d0 ; "quickly sinking in the quicksand! " ; string_147 &4e1d 2a c1 5c e6 fb 04 cf 92 56 22 fb 2a cf 31 ee 41 ; "the plank which extends over the quicksand" &4e2d d0 ; string_148 &4e2e cf e4 e0 52 3d 2a 32 e0 50 c1 5c e6 fb 04 cf ba ; "balanced on the wooden plank which crosses the quicksand. The &4e3e e0 56 2a cf 31 ee 41 f6 2a c1 5c e6 fb cf 8b 56 ; plank submerges gradually! " &4e4e e2 70 c2 77 e7 f4 f8 d0 ; string_149 &4e56 2a e1 dc 55 21 fb 3c 2a cf 31 ee 41 d0 ; "the far side of the quicksand" ; string_14a &4e63 01 37 3d 53 16 f9 cf 9c fb 20 fb 43 2a e1 dc 55 ; "standing on a short, straight path at the far side of the &4e73 21 fb 3c 2a cf 31 ee 41 f6 53 16 fb cf 12 fb 3a ; quicksand. A short distance to the south there is a large area of &4e83 2a 07 fb 00 4e 53 0b fb 45 53 3c aa 85 c1 41 f6 ; swampland. " &4e93 d0 ; string_14b &4e94 2a aa 85 c1 41 d0 ; "the swampland" ; string_14c &4e9a cf a5 37 cf 51 53 0b fb 45 53 3c aa 85 c1 41 f6 ; "wandering through a large area of swampland. This watery &4eaa 11 cf 28 54 cf e7 fb 4e dc 50 e4 df 6c e7 fb 64 ; environment is an ideal habitat for alligators! " &4eba dd 66 43 e1 ea 55 cf 89 ee f8 d0 ; string_14d &4ec5 53 e1 05 fb 3c 26 ee d0 ; "a flight of steps" ; string_14e &4ecd 3d 53 16 fb e1 05 fb 3c cf 8f fb 26 ee f6 cf eb ; "on a short flight of granite steps. Stone walls run either side of &4edd fb 19 56 42 fb cf 10 21 fb 3c 38 f9 cf 5d 38 55 ; you, preventing your passage into the forest. " &4eed cf ed fb 59 3a 2a cf 26 f6 d0 ; string_14f &4ef7 53 cf 1a fb 20 3f d0 ; "a narrow pathway" ; string_150 &4efe 01 37 3d 53 cf 1a fb 20 3f fb 04 28 56 cf 51 2a ; "standing on a narrow pathway which leads through the thick &4f0e cf e3 fb 12 cf 2c 3c 2a cf 5e f6 2a cf c6 fb 3c ; undergrowth of the jungle. The sound of water echoes all around! " &4f1e cf 28 fb e0 82 ea e0 56 77 e7 fb cf 9f f8 d0 ; string_151 &4f2d 26 56 28 fb 1c f6 d0 ; "steps lead down. " ; string_152 &4f34 2a cf 14 cf ea fb 4e 53 13 fb 3f fb 14 fb 38 f9 ; "the massive river is a long way below you, crossed by a narrow &4f44 cf ba e0 52 dd 54 53 cf 1a fb 8e eb 4f cf 69 f6 ; rope bridge. " &4f54 d0 ; string_153 &4f55 53 8e eb 4f cf 69 d0 ; "a rope bridge" ; string_154 &4f5c cf e4 37 3d 53 8e eb 4f cf 69 f9 13 fb 2b cf 1a ; "balancing on a rope bridge, long and narrow, which crosses a wide &4f6c f9 04 cf ba e0 56 53 2d fb cf 52 f6 2a cf 70 fb ; abyss. The violent waters of the river are below you, ferocious &4f7c cf 28 56 3c 2a cf ea fb 36 14 fb 38 f9 cf c3 2b ; and menacing! " &4f8c cf dd f8 d0 ; string_155 &4f90 53 2d fb 1d fb cf 3c d0 ; "a wide open space" ; string_156 &4f98 01 37 3d 2a cf 3f 54 cf 40 fb 3c 53 2d f9 1d fb ; "standing on the grassy carpet of a wide, open space in the forest. &4fa8 cf 3c fb 3b 2a cf 26 f6 3b 2a cf de 3c 2a cf a7 ; In the middle of the clearing is a tall coconut palm. " &4fb8 fb 4e 53 ef 77 e7 fb 6e de 63 f0 51 eb 77 e8 f6 &4fc8 d0 ; string_157 &4fc9 53 2d fb cf 19 d0 ; "a wide track" ; string_158 &4fcf f2 77 e6 37 dc 13 fb 53 2d f9 cf 24 37 cf 19 fb ; "walking along a wide, twisting track which winds through the &4fdf 04 1b 56 cf 51 2a cf 5e f6 2a cf 26 fb 4e cf 6d ; jungle. The forest is brilliantly green around you. " &4fef e7 54 cf 48 fb cf 9f fb 38 f6 d0 ; string_159 &4ffa 2a 20 fb cf aa 56 cf 9f fb 53 0b fb 8e a0 f6 d0 ; "the path corners around a large rock. " ; string_15a &500a 53 cf 28 37 9c 73 d0 ; "a watering hole" ; string_15b &5011 01 37 3b 53 2d fb cf a7 fb b6 21 fb 53 cf 28 37 ; "standing in a wide clearing beside a watering hole. The crystal &5021 9c 73 f6 2a cf e9 cf a1 cf 28 fb cf f1 56 3b 2a ; clear water gleams in the sunlight! " &5031 ee 81 05 f8 d0 ; string_15c &5036 2a 8a ea e7 d0 ; "the pool" ; string_15d &503b 3b 2a 8a ea e7 f6 3e 4e 6f e0 99 55 58 dc 50 35 ; "in the pool. It is deeper than you thought and you begin to &504b 58 cf 36 2b 35 b6 e2 3b 3a cf c7 f8 d0 ; struggle! " ; string_15e &5058 53 13 fb ef 33 d0 ; "a long trail" ; string_15f &505e 01 37 3d 53 cf 1a f9 cf 2b ef 33 fb 28 37 3a 53 ; "standing on a narrow, dusty trail leading to a dark, ominous range &506e 1f f9 cf 98 fb ed 5c e2 4f 3c cf 06 56 04 8c b1 ; of mountains which loom " &507e fb d0 ; string_160 &5080 3b 2a cf 12 f6 2a cf 72 fb 4e 30 27 f9 70 f1 4d ; "in the distance. The landscape is treeless, ravaged by &5090 52 dd 54 6f cf 26 62 4c f6 d0 ; deforestation. " ; string_161 &509a 77 e7 fb cf 9f fb 38 f8 d0 ; "all around you! " ; string_162 &50a3 53 cf 3f db de 22 e0 52 cf 06 fb 31 e0 d0 ; "a grass-covered mountain slope" ; string_163 &50b1 cf a5 37 cf 51 53 cf 6c fb ed 5c e2 4f 3c cf 06 ; "wandering through a magnificent range of mountains! Pinnacles &50c1 ee f8 cf e6 56 cf 95 fb 35 2b 53 7a ef cf 3e 3c ; surround you and a network of paths criss-cross the landscape. " &50d1 20 56 de ed 79 ee db cf ba fb 2a cf 72 f6 d0 ; string_164 &50e0 53 cf 1a fb cf 06 fb eb b8 ee d0 ; "a narrow mountain pass" ; string_165 &50eb cf 99 52 3b 53 cf b4 52 cf 06 fb eb b8 ee f6 2a ; "huddled in a confined mountain pass. The cold wind howls around &50fb cf df fb 1b fb 9c f2 e7 56 cf 9f fb 38 f9 64 f0 ; you, haunting the atmosphere with its abhorrent cry! " &510b 6a 37 2a cf 7a 4f 09 66 56 cf 4e de ed f4 f8 d0 ; string_166 &511b 53 cf 71 d0 ; "a plateau" ; string_167 &511f 01 37 3d 53 2d f9 cf e1 cf 71 f9 1d fb 2b 1b aa ; "standing on a wide, barren plateau, open and windswept. Looking &512f b2 ef f6 23 37 07 f9 2a cf 5e fb cf c9 56 cf 0f ; south, the jungle spreads before you like a green carpet. A flight &513f 35 83 e6 4f 53 cf 48 fb cf 40 f6 53 e1 05 fb 3c ; of ancient steps is north. " &514f cf ae 26 56 4e 06 f6 d0 ; string_168 &5157 2a 26 ee d0 ; "the steps" ; string_169 &515b 01 37 15 d0 ; "standing above" ; string_16a &515f 2a cf 66 3c 2a 26 ee d0 ; "the bottom of the steps" ; string_16b &5167 43 2a cf 66 ea e1 d0 ; "at the bottom of" ; string_16c &516e 2a 26 ee d0 ; "the steps" ; string_16d &5172 01 37 63 d0 ; "standing on" ; string_16e &5176 fb 53 13 f9 cf 24 37 e1 05 fb 3c ee 9b 70 e7 fb ; " a long, twisting flight of spiral steps which winds its way from &5186 26 56 04 1b 56 66 56 3f fb 0a 2a cf 71 fb 3a 2a ; the plateau to the roadside. " &5196 25 21 f6 d0 ; string_16f &519a 2a 25 21 d0 ; "the roadside" ; string_170 &519e 6b df 37 3b 2a 12 cf 2c b6 21 fb 2a cf ae 34 f6 ; "hiding in the undergrowth beside the ancient door. To the east is &51ae 3a 2a 17 fb 4e 53 13 fb 25 fb 04 cf b7 56 3b 53 ; a long road which travels in a north-south direction. A lorry is &51be 06 db 07 fb cf 64 f6 53 cf 67 fb 4e 3d 2a 21 fb ; on the side of the road and a group of men load peculiar bundles &51ce 3c 2a 25 fb 2b 53 90 65 eb fb 3c a1 50 8c dc 52 ; onto the back of it. " &51de cf cc cf 86 56 63 3a 2a 0f 3c 66 f6 d0 ; string_171 &51eb 53 0b fb cf a7 d0 ; "a large clearing" ; string_172 &51f1 3a 2a 06 fb 3c 53 cf 16 34 f9 cf 6c e7 54 cf 41 ; "to the north of a huge door, magnificently constructed from wood &5201 0a 32 fb 2b b0 3d dd 54 dc 50 cf ae de e4 f1 96 ; and iron by an ancient civilisation. " &5211 79 62 4c f6 d0 ; string_173 &5216 2a 34 fb 2c cf 6a cf 73 df f9 cf 5d 38 55 cf ed ; "the door has been secured, preventing your passage to the south. " &5226 fb 3a 2a 07 f6 d0 ; string_174 &522c 2a ee 6c e7 fb 3d 2a 34 fb 2c cf 6a cf 21 f6 d0 ; "the seal on the door has been broken. " ; string_175 &523c 2a cf 05 fb 64 86 d0 ; "the entrance hall" ; string_176 &5243 3b 2a cf 13 cf 05 fb 64 86 fb 3c 2a cf 3b f6 2a ; "in the enormous entrance hall of the mansion. The floor is covered &5253 10 fb 4e de 22 e0 52 3b 53 cf 56 f9 46 fb cf 40 ; in a luxurious, red carpet and the ceiling has been exquisitely &5263 fb 2b 2a cf 20 fb 2c cf 6a cf a9 e7 54 cf 43 fb ; painted by craftsmen. " &5273 dd 54 de 70 e1 ef 93 5f f6 d0 ; string_177 &527d 2a cf 05 fb 26 ee d0 ; "the entrance steps" ; string_178 &5284 01 37 43 2a cf 05 fb 3c 2a cf 3b f6 53 cf 75 fb ; "standing at the entrance of the mansion. A guard sees you, shouts &5294 39 56 38 f9 cf c8 56 2b a3 e8 56 e3 4e cf c4 f8 ; and aims his pistol! " &52a4 d0 ; string_179 &52a5 53 cf 07 fb 3b 2a cf 3b d0 ; "a corridor in the mansion" ; string_17a &52ae 3b 53 13 f9 2d fb cf 07 fb 3b 2a cf 3b f9 cf 0a ; "in a long, wide corridor in the mansion, partially illuminated by &52be cf 0b dd 54 0c fb cf 20 fb 05 56 04 80 ee 51 53 ; small ceiling lights which cast a warm, yellow glow over the white &52ce f2 5e e8 f9 cf 46 fb e2 8c f2 fb 22 fb 2a cf 47 ; painted walls and the " &52de fb cf 43 fb 19 56 2b 2a d0 ; string_17b &52e7 46 fb cf 40 fb 04 42 56 dc 13 fb 2a cf 1f fb 10 ; "red carpet which runs along the ground floor. " &52f7 f6 d0 ; string_17c &52f9 cf 48 fb cf 40 fb 04 de 22 56 2a c6 cf 2d 56 10 ; "green carpet which covers the upstairs floor. " &5309 f6 d0 ; string_17d &530b 53 08 ef d0 ; "a closet" ; string_17e &530f cf 99 52 3b 53 0c fb 08 ef f6 cf 2b ee 5d e7 6d ; "huddled in a small closet. Dusty shelves line the walls spreading &531f 56 e7 59 4f 2a 19 56 cf c9 37 cf b2 fb cf b5 2a ; shadow across the room. " &532f 1e f6 d0 ; string_17f &5332 2a cf 66 3c 2a cf 2d ee d0 ; "the bottom of the stairs" ; string_180 &533b 01 37 43 2a cf 66 ea e1 d0 ; "standing at the bottom of" ; string_181 &5344 2a cf 2d ee d0 ; "the stairs" ; string_182 &5349 cf 1e 49 d0 ; "climbing" ; string_183 &534d 2a 72 eb fb 3c 2a cf 2d ee d0 ; "the top of the stairs" ; string_184 &5357 01 37 15 d0 ; "standing above" ; string_185 &535b fb 53 2d fb e1 05 fb 3c cf 2d 56 3b 2a cf 13 cf ; " a wide flight of stairs in the enormous mansion. " &536b 3b f6 d0 ; string_186 &536e 2a 75 3b dd 8f 1e d0 ; "the main bedroom" ; string_187 &5375 3b 2a cf 56 fb 75 3b dd 8f 1e fb 3c 2a cf 3b fb ; "in the luxurious main bedroom of the mansion which is wallpapered &5385 04 4e 19 cf 42 e0 52 3b 53 cf 97 cf 2e fb 3c cf ; in a subtle shade of blue. A magnificent four-poster" &5395 4b f6 53 cf 6c fb e1 47 db 8a 68 5a d0 ; string_188 &53a2 2a e2 f0 67 51 1e d0 ; "the guest room" ; string_189 &53a9 3b 2a 0b fb e2 f0 67 51 1e fb 3c 2a cf 3b f6 2a ; "in the large guest room of the mansion. The walls are a light &53b9 19 56 36 53 05 fb cf 08 fb 2b 53 cf 1c 02 fb dd ; colour and a comfortable bed" &53c9 8f d0 ; string_18a &53cb 2a e9 f0 ed ee 5a f4 d0 ; "the nursery" ; string_18b &53d3 01 37 3b 2a cf de 3c 2a 0c f9 cf 0c cf 43 fb e9 ; "standing in the middle of the small, brightly painted nursery. A &53e3 f0 ed ee 5a f4 f6 53 6e ef d0 ; cot" ; string_18c &53ed fb 2c cf 6a cf 83 52 3b 2a 07 5a 50 cf 96 3c 2a ; " has been placed in the southern extremity of the room. " &53fd 1e f6 d0 ; string_18d &5400 53 cf 87 d0 ; "a cupboard" ; string_18e &5404 01 37 3b 53 cf 87 f9 cf 0b dd 54 53 cf 1a fb cf ; "standing in a cupboard, illuminated by a narrow ceiling light. " &5414 20 fb 05 f6 d0 ; string_18f &5419 53 dd dc 58 1e d0 ; "a bathroom" ; string_190 &541f 01 37 3b 53 0b f9 cf 47 db 60 73 52 dd dc 58 1e ; "standing in a large, white-tiled bathroom. The floor is covered in &542f f6 2a 10 fb 4e de 22 e0 52 3b cf d9 fb cf 40 fb ; soft carpet and the room is illuminated by a dazzling neon light. &543f 2b 2a 1e fb 4e cf 0b dd 54 53 cf 25 37 7a 3d 05 ; " &544f f6 d0 ; string_191 &5451 53 68 ea 5b 1e d0 ; "a storeroom" ; string_192 &5457 3b 53 0c f9 cf 0d cf 0b 68 ea 5b 1e f6 cf 2b ee ; "in a small, dimly illuminated storeroom. Dusty shelves line the &5467 5d e7 6d 56 e7 59 4f 2a 06 f9 17 fb 2b 18 fb 19 ; north, east and west walls. " &5477 ee f6 d0 ; string_193 &547a 2a 83 c9 5e f4 d0 ; "the library" ; string_194 &5480 01 37 3b 2a cf 6c fb 83 c9 5e 54 3c 2a cf 3b f6 ; "standing in the magnificent library of the mansion. The walls are &5490 2a 19 56 36 eb 5c 7d 73 52 2b 53 cf 56 fb cf 40 ; panelled and a luxurious carpet covers the floor. A picture has &54a0 fb de 22 56 2a 10 f6 53 cf c0 fb 2c cf 6a cf 43 ; been painted on the ceiling. " &54b0 fb 3d 2a cf 20 f6 d0 ; string_195 &54b7 2a df 59 37 1e d0 ; "the dining room" ; string_196 &54bd 3b 2a cf 13 df 59 37 1e fb 3c 2a cf 3b f6 53 0b ; "in the enormous dining room of the mansion. A large table is in &54cd fb ef 02 fb 4e 3b 2a cf de 3c 2a 1e fb 2b cf 95 ; the middle of the room and surrounding it are wooden chairs. " &54dd 37 3e 36 32 e0 50 de 64 b0 ee f6 d0 ; string_197 &54e9 2a 72 eb fb 3c 2a 26 ee d0 ; "the top of the steps" ; string_198 &54f2 01 37 15 d0 ; "standing above" ; string_199 &54f6 2a 26 ee d0 ; "the steps" ; string_19a &54fa cf e4 e0 52 63 d0 ; "balanced on" ; string_19b &5500 2a 24 fb 3c 2a 26 ee d0 ; "the foot of the steps" ; string_19c &5508 01 37 14 d0 ; "standing below" ; string_19d &550c fb 53 13 f9 cf 1a fb e1 05 fb 3c cf eb fb 26 56 ; " a long, narrow flight of stone steps which lead between the &551c 04 28 fb cf b9 fb 2a cf 1f fb 10 fb 2b 2a e6 66 ; ground floor and the kitchen. " &552c de 5d e9 f6 d0 ; string_19e &5531 2a cf 16 e6 66 de 5d e9 d0 ; "the huge kitchen" ; string_19f &553a 3b 2a cf 16 e6 66 de 5d 50 3c 2a cf 3b f6 cf 3e ; "in the huge kitchen of the mansion. Work areas line the walls and &554a 45 dc 56 e7 59 4f 2a 19 56 2b 53 ef 02 fb 2c cf ; a table has been placed in the centre of the room. " &555a 6a cf 83 52 3b 2a cf 74 4f 3c 2a 1e f6 d0 ; string_1a0 &5568 2a e2 5e df 5f ee d0 ; "the gardens" ; string_1a1 &556f 01 37 44 21 fb 2a cf 3b fb 3d 53 7b f2 e9 f6 53 ; "standing outside the mansion on a lawn. A guard appears from the &557f cf 75 fb cf cb 56 0a 2a cf aa fb 3c 2a cf 45 fb ; corner of the building and raises his pistol! " &558f 2b 70 e4 76 56 e3 4e cf c4 f8 d0 ; string_1a2 &559a 2a e7 65 e9 8b d0 ; "the lounge" ; string_1a3 &55a0 3b 2a cf 16 e7 65 e9 8b f6 2a 1e fb 2c cf 6a 19 ; "in the huge lounge. The room has been wallpapered and the floor is &55b0 cf 42 e0 52 2b 2a 10 fb 4e cf 40 e0 52 3b 46 f6 ; carpeted in red. A stone hearth is set into the north wall. " &55c0 53 cf eb fb 5d 5e 58 fb 4e 76 51 59 3a 2a 06 fb &55d0 19 f6 d0 ; string_1a4 &55d3 2a 1e fb 4e cf 0b dd 54 2a cf 18 e2 8c f2 fb 3c ; "the room is illuminated by the flickering glow of a blazing fire. &55e3 53 dd 7b f5 37 e1 e4 5b f6 d0 ; " ; string_1a5 &55ed 2a cf fa 2c cf 6a a8 ef 49 f0 79 5d df f6 d0 ; "the fire has been extinguished. " ; string_1a6 &55fc 53 1f fb cf f3 fb 2c cf 6a cf a4 e0 52 04 28 56 ; "a dark tunnel has been revealed which leads north into the hearth! &560c 06 fb 59 3a 2a 5d 5e 58 f8 d0 ; " ; string_1a7 &5616 53 cf f3 d0 ; "a tunnel" ; string_1a8 &561a cf 99 52 3b 53 cf 2b cf f3 fb 09 19 ee f9 10 fb ; "huddled in a dusty tunnel with walls, floor and ceiling sculptured &562a 2b cf 20 fb cf ff eb ef f0 46 fb 0a cf df fb cf ; from cold granite. The atmosphere is musty. " &563a 8f f6 2a cf 7a 4f 4e e8 f0 68 f4 f6 d0 ; string_1a9 &5647 53 cf 1a fb 45 53 3c 2a cf f3 d0 ; "a narrow area of the tunnel" ; string_1aa &5652 01 37 3d 2a cf f4 f0 ed 4f cb 52 3c 2a cf 1a fb ; "standing on the pressure pad of the narrow area of the tunnel. The &5662 45 53 3c 2a cf f3 f6 2a cf af fb cf fa a8 ef 49 ; sturdy fire extinguisher is holding the walls apart! " &5672 f0 79 5d 55 4e cf d5 37 2a 19 56 dc eb 5e ef f8 &5682 d0 ; string_1ab &5683 53 ef 70 eb 34 fb 28 56 cf 51 2a cf 20 f6 d0 ; "a trapdoor leads through the ceiling. " ; string_1ac &5692 dc 50 45 53 3c 2a e2 5e 4d d0 ; "an area of the garage" ; string_1ad &569c 01 37 3b 53 0b fb e2 5e 4d fb 04 13 fb 78 ea fb ; "standing in a large garage which long ago served as the stables. &56ac ee 5a 6d 52 dc 56 2a 68 02 ee f6 00 4e 53 cf 85 ; There is a black limousine here. " &56bc fb 83 e8 4b 59 4f e3 5a e0 f6 d0 ; string_1ae &56c7 35 36 dd 54 2a 84 ea ef f6 d0 ; "you are by the boot. " ; string_1af &56d1 35 36 3b cf f7 fb 3c 2a de 5e f6 d0 ; "you are in front of the car. " ; string_1b0 &56dd 35 36 b6 21 fb 2a de 5e f6 d0 ; "you are beside the car. " ; string_1b1 &56e7 2a 83 e8 4b 59 e0 d0 ; "the limousine" ; string_1b2 &56ee 59 21 fb 2a 0b f9 cf 85 fb 83 e8 4b 59 4f 3d 2a ; "inside the large, black limousine on the comfortable front seat. &56fe cf 1c 02 fb cf f7 fb 76 62 f6 2a f2 77 e9 f0 51 ; The walnut dashboard is before you, a dazzling array of lights and &570e df b8 e3 cf 88 fb 4e cf 0f 38 f9 53 cf 25 37 5e ; buttons! " &571e 70 54 3c 05 56 41 cf 49 ee f8 d0 ; string_1b3 &5729 2a 84 ea ef d0 ; "the boot" ; string_1b4 &572e 59 21 fb 2a 0b fb 84 ea 51 3c 2a 83 e8 4b 59 4f ; "inside the large boot of the limousine between peculiar bundles. &573e cf b9 fb cf cc cf 86 ee f6 35 08 fb 2a 84 ea 51 ; You close the boot and wait. " &574e 2b f2 dc 66 f6 d0 ; string_1b5 &5754 ff fd bd 54 4e 11 34 fb 1d f7 ff fb cf 57 fb 53 ; ""Why is this door open? " Says a voice and begins searching the &5764 f1 ea e4 de 4f 2b b6 e2 59 56 76 cf 17 37 2a 1e ; room! Eventually, the boot opens! " &5774 f8 cf cf f9 2a 84 ea 51 1d ee f8 d0 ; string_1b6 &5780 ff fd cf d7 fb 11 ee 6b eb 2f fb cf b5 ef 63 e4 ; ""Carry this shipment across tonight! ", Says a voice. " &5790 4a f8 ff f9 cf 57 fb 53 f1 ea e4 de e0 f6 d0 ; string_1b7 &579f ff fd e4 fc 86 fb dd 4f 22 fb 2a cf bf fb 3b dc ; ""I'll be over the border in an hour, boss! " A second voice &57af 50 e3 47 f9 84 ee ee f8 ff fb 53 76 de 63 52 f1 ; replies! " &57bf ea e4 de 4f cf 5c f8 d0 ; string_1b8 &57c7 2a 5f e2 59 4f 68 5e ef 56 2b 2a 80 55 cf 15 fb ; "the engine starts and the car leaves the mansion, heading through &57d7 2a cf 3b f9 5d ab 37 cf 51 2a 1f e9 67 56 3a 2a ; the darkness to the border. You feel elated at the prospect of &57e7 cf bf f6 35 e1 e0 7d fb e0 7b 61 52 43 2a 87 ea ; freedom! Then you are troubled. There was something peculiar about &57f7 ee 99 de 51 3c e1 5b e0 71 e8 f8 40 50 35 36 b5 ; the first voice. Suddenly it hits you! It was K! You press the &5807 65 dd 73 df f6 00 f2 dc 56 cf a3 fb cf cc cf 82 ; boot-release and leap from the accelerating limousine. You see K &5817 2a e1 b0 ee 51 f1 ea e4 de e0 f6 cf 8c e7 54 3e ; outside the garage and run at him! Before long, he lies dead in &5827 e3 66 56 38 f8 3e f2 dc 56 fd e6 f8 35 cf f4 fb ; your arms, strangled. Guards appear from everywhere and you are &5837 2a 84 ea ef db 5b e7 6c ee 4f 2b cf 8a 0a 2a cf ; bundled into the mansion! Later you are taken to be shot. " &5847 53 37 83 e8 4b 59 e0 f6 35 39 fb fd e6 fb 44 21 &5857 fb 2a e2 5e 4d fb 2b 42 fb 43 6b e8 f8 cf 0f 13 &5867 f9 e3 4f 83 e0 56 df 6c 52 3b 38 55 5e e8 ee f9 &5877 cf c5 73 df f6 cf 75 56 cf cb fb 0a ba 5a f4 cf &5887 22 2b 35 36 cf 86 52 59 3a 2a cf 3b f8 7b 61 55 &5897 35 36 7c e6 e0 50 3a dd 4f ee 9c ef f6 d0 ; string_1b9 &58a5 2a bb e4 6d 3f d0 ; "the driveway" ; string_1ba &58ab 3d 2a 13 fb bb e4 6d 3f fb 3c 2a cf 3b f6 53 cf ; "on the long driveway of the mansion. A guard sees you and raises &58bb 75 fb 39 56 35 2b 70 e4 76 56 e3 4e cf c4 f8 d0 ; his pistol! " ; string_1bb &58cb 53 ef 70 eb 34 f9 cf b3 fb e1 ea 55 e8 5c 54 f4 ; "a trapdoor, hidden for many years, has been revealed! " &58db e0 5e ee f9 2c cf 6a cf a4 8f f8 d0 ; string_1bc &58e7 fd 00 4e 2a cf c6 fb 3c 24 26 ee f8 d0 ; "There is the sound of footsteps! " ; string_table_zero ; string_000 &58f4 fd 09 bd 62 f7 d0 ; "With what? " ; string_001 &58fa fd 2a 45 e9 53 4e cf 4d 09 cf 98 fb cf 38 de 4f ; "The arena is filled with ominous silence which lingers in the &590a 04 e7 49 5a 56 3b 2a cf 7a 4f 2b 4e cf 8c e7 54 ; atmosphere and is suddenly broken by the shout of "Fire! ". There &591a cf 21 fb dd 54 2a cf c8 fb 3c ff fd e1 e4 5b f8 ; is a storm of bullets! " &592a ff f6 00 4e 53 cf 39 fb 3c c8 e7 73 ef ee f8 d0 ; string_002 &593a 29 9d 51 0a 2a cf 76 ee f8 53 5d 83 6e eb 61 55 ; "but not from the soldiers! A helicopter gunship appears and &594a e2 81 ee 6b eb fb cf cb 56 2b 6f de e4 75 61 56 ; decimates your foes! It lands to rescue you! You have won! " &595a 38 55 e1 ea 67 f8 3e e7 41 56 3a 5b ee de f0 4f &596a 38 f8 35 64 f1 4f f2 63 f8 d0 ; string_003 &5974 fd cf bd d0 ; "Again" ; string_004 &5978 fd 57 df 63 fc 51 12 01 fb 38 f8 d0 ; "I don't understand you! " ; string_005 &5984 fd 0d 0e be 88 ae f3 e0 52 a1 f8 d0 ; "That only flummoxed me! " ; string_006 &5990 fd cf c5 e0 f8 d0 ; "Strange! " ; string_007 &5996 fd cf 44 b4 f1 4f e8 69 4f 59 2e 62 4c f6 d0 ; "Please give more information. " ; string_008 &59a5 fd 35 de 5c fc 51 71 fb 58 62 f6 d0 ; "You can't do that. " ; string_009 &59b1 fd 35 f2 dc 3e 53 ae 2f f6 d0 ; "You wait a moment. " ; string_00a &59bb 06 d0 ; "north" ; string_00b &59bd 07 d0 ; "south" ; string_00c &59bf 17 d0 ; "east" ; string_00d &59c1 18 d0 ; "west" ; string_00e &59c3 06 17 d0 ; "northeast" ; string_00f &59c6 06 18 d0 ; "northwest" ; string_010 &59c9 07 17 d0 ; "southeast" ; string_011 &59cc 07 18 d0 ; "southwest" ; string_012 &59cf c6 d0 ; "up" ; string_013 &59d1 1c d0 ; "down" ; string_014 &59d3 59 d0 ; "in" ; string_015 &59d5 44 d0 ; "out" ; string_016 &59d7 fb 2b d0 ; " and " ; string_017 &59da fd 35 36 81 02 fb 3a ae f1 4f 2a d0 ; "You are unable to move the " ; string_018 &59e6 fd 35 cf ef d0 ; "You find " ; string_019 &59eb fd 35 36 cf d6 37 d0 ; "You are wearing " ; string_01a &59f2 fd 35 36 cf d7 37 d0 ; "You are carrying " ; string_01b &59f9 fd 2a 0e cf e2 1a fb 4e d0 ; "The only visible exit is " ; string_01c &5a02 fd 2a 0e 3f fb 3a a4 fb 4e d0 ; "The only way to go is " ; string_01d &5a0c fd 2a 0e cf 54 cf fe fb 1a fb 4e d0 ; "The only accessible exit is " ; string_01e &5a18 cf f9 d0 ; "nothing" ; string_01f &5a1b 53 d0 ; "a " ; string_020 &5a1d fd e8 f4 ea 5b e8 fb db fb fd 2a fd e1 59 77 fb ; "Myorem - The Final Part of the Rick Hanson Trilogy (c) Robico &5a2d fd eb 5e 51 3c 2a fd cf 58 fd e3 5c ee 3d fd b5 ; Software 1986. " &5a3d e4 8c e2 54 fe de fe fb fd 8e c7 6e fb fd cf d9 &5a4d f2 36 d2 da d9 d7 f6 d0 ; string_021 &5a55 fd 00 4e 9d cf 22 3a a4 fb 0a e3 5a e0 f8 d0 ; "There is nowhere to go from here! " ; string_022 &5a64 fb 3a d0 ; " to " ; string_023 &5a67 fd cf 44 ee 99 de e4 e1 f4 f6 d0 ; "Please specify. " ; string_024 &5a72 fd 35 de 5c 9d 51 cf d6 fb 2a d0 ; "You cannot wear the " ; string_025 &5a7d fd 35 cf d7 fb 2a d0 ; "You carry the " ; string_026 &5a84 fd 35 cf d6 fb 2a d0 ; "You wear the " ; string_027 &5a8b fd 35 df 8e eb fb 2a d0 ; "You drop the " ; string_028 &5a93 fd 35 36 77 5b ab 54 cf d5 37 2a d0 ; "You are already holding the " ; string_029 &5a9f fd 35 36 77 5b ab 54 cf d6 37 2a d0 ; "You are already wearing the " ; string_02a &5aab fd 35 8b 51 cf f9 f8 d0 ; "You get nothing! " ; string_02b &5ab3 fd 35 7e df e9 fc 51 df 8e eb fb cf cd f8 d0 ; "You didn't drop anything! " ; string_02c &5ac2 fd 65 82 f8 0d 98 ed ef f8 d0 ; "Ouch! That hurt! " ; string_02d &5acc fd 35 39 fb cf f9 fb 3c 59 ef 5a 67 ef f6 d0 ; "You see nothing of interest. " ; string_02e &5adb fd 36 35 ee f0 ed 4f fe 54 ea 55 e9 fe f7 d0 ; "Are you sure (y or n)? " ; string_02f &5aea fd 9e 6d d0 ; "Save" ; string_030 &5aee fd 8c ab d0 ; "Load" ; string_031 &5af2 fb cf 5a fa a2 eb 4f e1 96 4f e9 85 4f ea 55 cf ; " adventure: type file name or press return to exit. " &5b02 f4 fb 5b ef f0 ed 50 3a 1a f6 d0 ; string_032 &5b0d fd 23 fb 43 2a 59 68 c4 de ef 4c ee f6 d0 ; "Look at the instructions. " ; string_033 &5b1b fd 61 86 fb e8 4f bd 43 35 f2 5c 51 3a 71 fb 09 ; "Tell me what you want to do with the " &5b2b 2a d0 ; string_034 &5b2d fd 35 cf ee 4f 2a d0 ; "You examine the " ; string_035 &5b34 fd 35 59 ee 99 de 51 2a d0 ; "You inspect the " ; string_036 &5b3d fd 35 23 fb 43 2a d0 ; "You look at the " ; string_037 &5b44 fb f1 e4 53 53 08 52 34 d0 ; " via a closed door" ; string_038 &5b4d fb cf 51 dc 50 1d fb 34 fb 04 28 ee d0 ; " through an open door which leads" ; string_039 &5b5a fd 00 36 cf e2 1a 56 d0 ; "There are visible exits " ; string_03a &5b62 fd 35 80 50 a4 fb 3b 2a e1 ea 86 c0 37 cf 64 ee ; "You can go in the following directions: " &5b72 fa d0 ; string_03b &5b74 fd 3f 56 28 fb d0 ; "Ways lead " ; string_03c &5b7a cf 78 cf 9f f9 35 39 fb 0d 35 36 d0 ; "gazing around, you see that you are " ; string_03d &5b86 35 36 d0 ; "you are " ; string_03e &5b89 35 23 fb cf 9f f6 35 36 d0 ; "you look around. You are " ; string_03f &5b92 35 cf ef cf 61 d0 ; "you find yourself " ; string_040 &5b98 fd 00 4e 9d fb 1a fb d0 ; "There is no exit " ; string_041 &5ba0 fd 2a d0 ; "The " ; string_042 &5ba3 fb 2c d0 ; " has " ; string_043 &5ba6 fd 5b ae f1 4f 2a d0 ; "Remove the " ; string_044 &5bad fd 35 36 9d 51 cf d7 37 2a d0 ; "You are not carrying the " ; string_045 &5bb7 fd 3e 4e eb 66 82 fb 1f f8 d0 ; "It is pitch dark! " ; string_046 &5bc1 ef 3b de 5c d0 ; "tin can" ; string_047 &5bc6 3e 2c cf 50 fb 21 56 2b 4e cf e5 ed e4 de 77 fb ; "it has abrasive sides and is cylindrical with a diameter of 8 &5bd6 09 53 7e 85 e0 61 55 3c d9 fb de 5f 60 cf ec ee ; centimetres. " &5be6 f6 d0 ; string_048 &5be8 0c fb dd 78 d0 ; "small bag" ; string_049 &5bed 3e 4e 03 0a cf e3 fb cf a6 f6 d0 ; "it is made from thick plastic. " ; string_04a &5bf8 9c 73 d0 ; "hole" ; string_04b &5bfb 3e 4e 53 0c fb 1d 49 f9 cf 82 d9 d1 fb e8 96 83 ; "it is a small opening, about 80 millimetres wide. " &5c0b cf ec 56 2d f6 d0 ; string_04c &5c11 0b fb ea 96 fb bb 88 d0 ; "large oil drum" ; string_04d &5c19 3e 4e cf e5 ed e4 de 77 f9 cf 48 fb 2b 22 fb 53 ; "it is cylindrical, green and over a metre high. Through the hole &5c29 cf ec fb 6b 8d f6 cf 51 2a cf d3 3b 2a 72 eb fb ; in the top where its lid belongs you see that it is filled with &5c39 cf 22 66 56 83 52 b6 13 56 35 39 fb 0d 3e 4e cf ; sediment. " &5c49 4d 09 76 7e 2f f6 d0 ; string_04e &5c50 3e 4e cf 48 f9 cf e5 ed e4 de 77 f9 22 fb 53 cf ; "it is green, cylindrical, over a metre high and is empty. " &5c60 ec fb 6b 8d fb 2b 4e 95 eb a2 f6 d0 ; string_04f &5c6c 8a 59 61 52 ef f2 c5 fb 04 cf b6 e0 56 0a 53 30 ; "pointed twig which protrudes from a tree nearby" &5c7c fb cf 23 d0 ; string_050 &5c80 3e 4e cf 1a f6 d0 ; "it is narrow. " ; string_051 &5c86 8a 59 61 52 ef f2 c5 d0 ; "pointed twig" ; string_052 &5c8e 0c fb 83 df d0 ; "small lid" ; string_053 &5c93 3e 4e 2a 80 eb fb 3c 2a bb 88 fa cf c1 fb 2b cf ; "it is the cap of the drum: round and about 7 centimetres wide. " &5ca3 82 d8 fb de 5f 60 cf ec 56 2d f6 d0 ; string_054 &5caf cf bc 5a d0 ; "creeper" ; string_055 &5cb3 3e 4e 13 f6 d0 ; "it is long. " ; string_056 &5cb8 cf 62 fb 81 e4 2e d0 ; "prison uniform" ; string_057 &5cbf 3e 4e cf 4a fb 2b cf 46 f8 d0 ; "it is purple and yellow! " ; string_058 &5cc9 ee f0 66 d0 ; "suit" ; string_059 &5ccd ee f0 66 56 38 f8 d0 ; "suits you! " ; string_05a &5cd4 cf 80 ef f2 c5 d0 ; "forked twig" ; string_05b &5cda 3e 4e cf 59 52 83 e6 4f 2a 73 ef 61 55 fd f4 f8 ; "it is shaped like the letter Y! " &5cea d0 ; string_05c &5ceb dd 8f d0 ; "bed" ; string_05d &5cee 3e 4e 0b fb 2b cf af f6 d0 ; "it is large and sturdy. " ; string_05e &5cf7 cf e8 3c dd 41 4d d0 ; "length of bandage" ; string_05f &5cfe 3e 4e 03 0a cf fc 54 e0 7b ee 60 de f8 d0 ; "it is made from stretchy elastic! " ; string_060 &5d0c 0c cf f6 d0 ; "small chest" ; string_061 &5d10 3e 4e 2d fb 1d f6 d0 ; "it is wide open. " ; string_062 &5d17 3e 4e 03 0a cf 8e 5f e0 52 a1 ef 77 fb 2b 4e 8c ; "it is made from toughened metal and is locked. " &5d27 a0 8f f6 d0 ; string_063 &5d2b 0b cf f6 d0 ; "large chest" ; string_064 &5d2f 35 cf ef 3e 2c cf 6a 1d e0 52 2d f6 d0 ; "you find it has been opened wide. " ; string_065 &5d3c 3e 4e cf 41 0a cf e3 fb a1 ef 77 fb 2b 4e 8c a0 ; "it is constructed from thick metal and is locked. " &5d4c 8f f6 d0 ; string_066 &5d4f 0c fb e6 cd d0 ; "small key" ; string_067 &5d54 0b fb e6 cd d0 ; "large key" ; string_068 &5d59 e3 91 e6 fb cf b1 3a 2a 0f 3c 2a cf 87 fb 34 d0 ; "hook fixed to the back of the cupboard door" ; string_069 &5d69 3e 4e 0c fb 2b 03 0a cf f1 37 dd 70 ee ee f6 d0 ; "it is small and made from gleaming brass. " ; string_06a &5d79 f2 e4 a0 5a cf 3e cf 29 d0 ; "wickerwork basket" ; string_06b &5d82 3e 4e 0b fb 2b 03 0a cf 3f 67 f6 d0 ; "it is large and made from grasses. " ; string_06c &5d8e cf a2 d0 ; "catapult" ; string_06d &5d91 3e 2c cf 6a 03 0a 53 cf 80 ef f2 c5 fb 2b 53 cf ; "it has been made from a forked twig and a length of bandage! " &5da1 e8 3c dd 41 4d f8 d0 ; string_06e &5da8 cf eb d0 ; "stone" ; string_06f &5dab 3e 4e cf 30 f9 cf c1 fb 2b 0c f6 d0 ; "it is smooth, round and small. " ; string_070 &5db7 c1 5c e6 d0 ; "plank" ; string_071 &5dbb 3e 4e 13 fb 2b cf 9c fb 2b cf cb 56 cf af f6 d0 ; "it is long and straight and appears sturdy. " ; string_072 &5dcb de 7b f2 fb 64 e8 e8 5a d0 ; "claw hammer" ; string_073 &5dd4 cf e0 fb 45 53 3c cf 31 ee 41 d0 ; "dangerous area of quicksand" ; string_074 &5ddf 3e cf cb 56 6f b2 f8 d0 ; "it appears deep! " ; string_075 &5de7 cf a0 d0 ; "mattress" ; string_076 &5dea 3e 4e 0b fb 2b cf 7b f4 f8 23 56 ee 87 49 f4 f9 ; "it is large and smelly! Looks springy, though. " &5dfa 58 65 8d f6 d0 ; string_077 &5dff de e7 bf 61 55 3c 0b fb 92 96 56 04 cf 73 fb 2a ; "cluster of large nails which secure the plank across the doorway" &5e0f c1 5c e6 fb cf b5 2a 34 3f d0 ; string_078 &5e19 46 cf 04 d0 ; "red book" ; string_079 &5e1d cf 46 cf 04 d0 ; "yellow book" ; string_07a &5e22 cf 48 cf 04 d0 ; "green book" ; string_07b &5e27 cf 4a cf 04 d0 ; "purple book" ; string_07c &5e2c cf 4b cf 04 d0 ; "blue book" ; string_07d &5e31 3e 4e 2a 83 52 3c 53 e5 85 fb e5 5e f6 d0 ; "it is the lid of a jam jar. " ; string_07e &5e3f 0c fb 75 eb d0 ; "small map" ; string_07f &5e44 00 36 cf cc e8 5e e6 49 56 3d 66 f6 d0 ; "there are peculiar markings on it. " ; string_080 &5e51 cf 37 e5 85 fb e5 5e d0 ; "glass jam jar" ; string_081 &5e59 3e 4e 95 eb a2 f6 d0 ; "it is empty. " ; string_082 &5e60 3e 2c cf 6a cf 4d 09 cf e9 cf a1 cf 28 f8 d0 ; "it has been filled with crystal clear water! " ; string_083 &5e6f 3e 2c cf 6a cf 4d 09 aa 85 eb fb cf 28 f6 d0 ; "it has been filled with swamp water. " ; string_084 &5e7e 35 39 fb f2 ed 66 49 f8 d0 ; "you see writing! " ; string_085 &5e87 dd 65 e7 df 5a d0 ; "boulder" ; string_086 &5e8d cf 93 22 77 e7 ee d0 ; "pair of overalls" ; string_087 &5e94 40 54 36 cf 85 f6 d0 ; "they are black. " ; string_088 &5e9b 75 e2 e9 e4 e1 f4 37 e2 7b ee ee d0 ; "magnifying glass" ; string_089 &5ea7 de 5e 6d 52 e7 4c d0 ; "carved lion" ; string_08a &5eae 3e 2c 53 13 fb ef 63 e2 f0 e0 f8 d0 ; "it has a long tongue! " ; string_08b &5eba de 5e 6d 52 8e 76 d0 ; "carved rose" ; string_08c &5ec1 3e 2c cf 6a cf a9 e7 54 cf 2f 0a cf eb f6 d0 ; "it has been exquisitely fashioned from stone. " ; string_08d &5ed0 5d 5e 58 d0 ; "hearth" ; string_08e &5ed4 3e 2c cf 94 fb de 5e f1 49 ee f6 d0 ; "it has beautiful carvings. " ; string_08f &5ee0 ef 69 82 d0 ; "torch" ; string_090 &5ee4 cf 09 d0 ; "battery" ; string_091 &5ee7 3e 4e cf e5 ed e4 de 77 f6 d0 ; "it is cylindrical. " ; string_092 &5ef1 fd 8a f2 5a 75 60 de d0 ; "Powermatic" ; string_093 &5ef9 3e 2c 53 cf e5 ed e4 de 77 fb cf 3c f6 d0 ; "it has a cylindrical space. " ; string_094 &5f07 cf fa a8 ef 49 f0 79 e3 5a d0 ; "fire extinguisher" ; string_095 &5f11 3e 4e cf 41 0a cf af fb a1 ef 77 fb 2b 4e 53 cf ; "it is constructed from sturdy metal and is a metre long. " &5f21 ec fb 13 f6 d0 ; string_096 &5f26 46 cf 49 d0 ; "red button" ; string_097 &5f2a cf 46 cf 49 d0 ; "yellow button" ; string_098 &5f2f cf 48 cf 49 d0 ; "green button" ; string_099 &5f34 0c fb c8 e7 dd d0 ; "small bulb" ; string_09a &5f3a 72 54 05 cf 34 d0 ; "toy lighthouse" ; string_09b &5f40 3e 2c dc 50 63 db ea e1 e1 fb aa 66 82 f6 53 7b ; "it has an on-off switch. A label informs you that it accepts a &5f50 dd 7d fb 59 2e 56 35 0d 3e a5 de b2 ef 56 53 c8 ; bulb and a battery. " &5f60 e7 dd fb 2b 53 cf 09 f6 d0 ; string_09c &5f69 cf 21 fb 70 7e ea d0 ; "broken radio" ; string_09d &5f70 9e a0 fb cf 2f 0a cf da fb cf 9b d0 ; "sack fashioned from rough material" ; string_09e &5f7c de 5e df cf 88 fb 84 f3 d0 ; "cardboard box" ; string_09f &5f85 72 54 84 f3 d0 ; "toy box" ; string_0a0 &5f8a ef 02 d0 ; "table" ; string_0a1 &5f8d 3e 2c cf 3c fb e1 ea 55 53 5b de ef 5c e2 cf b0 ; "it has space for a rectangular battery. " &5f9d cf 09 f6 d0 ; delay_length &5fa1 00 ; lines_remaining_before_scrolling &5fa2 0c ; lines_per_page &5fa3 15 ; press_space_to_continue_string_length &5fa4 1a ; text_buffer &5fa5 62 75 6c 6c 65 74 73 21 20 0d 68 65 72 65 20 0d ; "bullets! \rhere \r" &5fb5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5fc5 00 00 00 00 00 00 00 00 00 00 00 00 00 ; press_space_to_continue_string &5fd2 3e 65 75 6e 69 74 6e 6f 63 20 6f 74 20 65 63 61 ; ">eunitnoc ot eca" &5fe2 70 73 20 73 73 65 72 50 3c 84 9d ; "ps sserP<", TEXT_BLUE, NEW_BACKGROUND ; allow_colour &5fed 80 ; string_table_addresses &5fee f4 58 ; &58f4 = string_table_zero &5ff0 30 47 ; &4730 = string_table_one &5ff2 24 3e ; &3e24 = string_table_two ; string_table_lengths ; 0 1 2 &5ff4 a1 bc 58 ; string_ending &5ff7 00 ; delay_cooldown &5ff8 00 ; bracket &5ff9 29 ; "(" ; letter_byte_offset &5ffa 9b ; string_table &5ffb 00 ; string_id &5ffc 01 ; colour_enabled &5ffd 00 ; write_packed_string &5ffe 85 75 STA &75 ; text_colour &6000 8e fc 5f STX &5ffc ; string_id &6003 8c fb 5f STY &5ffb ; string_table &6006 c0 03 CPY #&03 &6008 90 0a BCC &6014 ; is_valid_table &600a 00 BRK &600b 2d 42 61 74 63 68 2d 59 00 ; "-Batch-Y" ; is_valid_table &6014 ad fc 5f LDA &5ffc ; string_id &6017 d9 f4 5f CMP &5ff4,Y ; string_table_lengths &601a f0 0e BEQ &602a ; is_valid_string &601c 90 0c BCC &602a ; is_valid_string &601e 00 BRK &601f 2e 4d 65 73 73 61 67 65 2d 58 00 ; "Message-X" ; is_valid_string &602a ad fb 5f LDA &5ffb ; string_table &602d 0a ASL A &602e a8 TAY &602f b9 ee 5f LDA &5fee,Y ; string_table_addresses_low &6032 85 70 STA &70 ; text_address_low &6034 b9 ef 5f LDA &5fef,Y ; string_table_addresses_high &6037 85 71 STA &71 ; text_address_high &6039 a0 00 LDY #&00 &603b e0 00 CPX #&00 &603d f0 20 BEQ &605f ; skip_finding_string &603f a2 00 LDX #&00 ; find_string_loop &6041 20 b0 62 JSR &62b0 ; move_to_next_byte_of_text &6044 b1 70 LDA (&70),Y ; text_address &6046 c9 cf CMP #&cf ; TEXT_EXTENDED_FRAGMENT &6048 d0 06 BNE &6050 ; not_escape &604a 20 b0 62 JSR &62b0 ; move_to_next_byte_of_text ; not_escape &604d 18 CLC &604e 90 f1 BCC &6041 ; find_string_loop # Always branches &6050 c9 d0 CMP #&d0 ; TEXT_SEPARATOR &6052 d0 ed BNE &6041 ; find_string_loop &6054 e8 INX &6055 ec fc 5f CPX &5ffc ; string_id &6058 d0 e7 BNE &6041 ; find_string_loop &605a 20 b0 62 JSR &62b0 ; move_to_next_byte_of_text &605d a2 00 LDX #&00 ; skip_finding_string ; process_next_character_of_packed_string &605f a0 00 LDY #&00 &6061 b1 70 LDA (&70),Y ; text_address &6063 c9 d0 CMP #&d0 ; TEXT_SEPARATOR &6065 90 07 BCC &606e ; is_fragment &6067 f0 02 BEQ &606b ; to_end_string &6069 b0 06 BCS &6071 ; not_fragment # Always branches ; to_end_string &606b 4c 2d 61 JMP &612d ; end_string ; is_fragment &606e 4c 23 61 JMP &6123 ; add_fragment ; not_fragment &6071 c9 db CMP #&db ; TEXT_HYPHEN &6073 90 53 BCC &60c8 ; is_number # &d1 - &da are numbers 0 - 9 &6075 f0 57 BEQ &60ce ; is_hyphen # &db is "-" &6077 c9 f6 CMP #&f6 ; TEXT_PERIOD_AND_SPACE &6079 90 58 BCC &60d3 ; is_letter # &dc - &f5 are letters A - Z &607b f0 5d BEQ &60da ; is_period_and_space # &f6 is ". " &607d c9 f7 CMP #&f7 ; TEXT_QUESTION_MARK_AND_SPACE # &f7 is "? " &607f f0 6a BEQ &60eb ; is_question_mark_and_space &6081 c9 f8 CMP #&f8 ; TEXT_EXCLAMATION_MARK_AND_SPACE # &f8 is "! " &6083 f0 76 BEQ &60fb ; is_exclamation_mark_and_space &6085 c9 f9 CMP #&f9 ; TEXT_COMMA_AND_SPACE # &f9 is ", " &6087 f0 5c BEQ &60e5 ; is_comma_and_space &6089 c9 fa CMP #&fa ; TEXT_COLON_AND_SPACE # &fa is ": " &608b f0 66 BEQ &60f3 ; is_colon_and_space &608d c9 fb CMP #&fb ; TEXT_SPACE # &fb is " " &608f f0 6f BEQ &6100 ; is_space &6091 c9 fc CMP #&fc ; TEXT_APOSTROPHE # &fc is "'" &6093 f0 70 BEQ &6105 ; is_apostrophe &6095 c9 fd CMP #&fd ; TEXT_UPPERCASE # &fd makes next word start with uppercase letter &6097 f0 71 BEQ &610a ; is_uppercase &6099 c9 ff CMP #&ff ; TEXT_QUOTE # &ff is """ &609b f0 76 BEQ &6113 ; is_quote &609d c9 fe CMP #&fe ; TEXT_BRACKET # &fe is "(" or ")" &609f f0 77 BEQ &6118 ; is_bracket ; add_character_to_buffer &60a1 9d a5 5f STA &5fa5,X ; text_buffer ; skip_add_character_to_buffer &60a4 c9 20 CMP #&20 ; " " &60a6 d0 0d BNE &60b5 ; not_end_of_word &60a8 c8 INY &60a9 b1 70 LDA (&70),Y ; text_address &60ab 88 DEY &60ac c9 d0 CMP #&d0 ; TEXT_SEPARATOR &60ae f0 05 BEQ &60b5 ; not_end_of_word &60b0 20 3f 61 JSR &613f ; end_and_write_buffer &60b3 a2 ff LDX #&ff ; not_end_of_word &60b5 a9 7b LDA #&7b ; OFFSET_LOWERCASE &60b7 8d fa 5f STA &5ffa ; letter_byte_offset ; next_character &60ba e8 INX &60bb e0 27 CPX #&27 &60bd 90 03 BCC &60c2 ; not_too_long &60bf 4c 91 62 JMP &6291 ; string_is_too_long ; not_too_long &60c2 20 b0 62 JSR &62b0 ; move_to_next_byte_of_text &60c5 18 CLC &60c6 90 97 BCC &605f ; process_next_character_of_packed_string # Always branches ; is_number &60c8 38 SEC &60c9 e9 a1 SBC #&a1 ; &d1 - &30 ("0") &60cb 38 SEC &60cc b0 34 BCS &6102 ; to_add_character_to_buffer # Always branches ; is_hyphen &60ce a9 2d LDA #&2d ; "-" &60d0 38 SEC &60d1 b0 2f BCS &6102 ; to_add_character_to_buffer # Always branches ; is_letter &60d3 38 SEC &60d4 ed fa 5f SBC &5ffa ; letter_byte_offset &60d7 38 SEC &60d8 b0 28 BCS &6102 ; to_add_character_to_buffer # Always branches ; is_period_and_space &60da 20 50 61 JSR &6150 ; add_period_and_space ; start_new_sentence &60dd a9 9b LDA #&9b ; OFFSET_UPPERCASE &60df 8d fa 5f STA &5ffa ; letter_byte_offset ; to_next_character &60e2 18 CLC &60e3 90 d5 BCC &60ba ; next_character # Always branches ; is_comma_and_space &60e5 20 6e 61 JSR &616e ; add_comma_and_space &60e8 38 SEC &60e9 b0 f7 BCS &60e2 ; to_next_character # Always branches ; is_question_mark_and_space &60eb a9 3f LDA #&3f ; "?" ; add_character_and_space_then_start_new_sentence &60ed 20 52 61 JSR &6152 &60f0 4c dd 60 JMP &60dd ; is_colon_and_space &60f3 a9 3a LDA #&3a ; ":" &60f5 20 52 61 JSR &6152 ; add_A_and_space &60f8 38 SEC &60f9 b0 e7 BCS &60e2 ; to_next_character # Always branches ; is_exclamation_mark_and_space &60fb a9 21 LDA #&21 ; "!" &60fd 4c ed 60 JMP &60ed ; add_character_and_space_then_start_new_sentence ; is_space &6100 a9 20 LDA #&20 ; " " ; to_add_character_to_buffer &6102 18 CLC &6103 90 9c BCC &60a1 ; add_character_to_buffer # Always branches ; is_apostrophe &6105 a9 27 LDA #&27 ; "'" &6107 38 SEC &6108 b0 f8 BCS &6102 ; to_add_character_to_buffer # Always branches ; is_uppercase &610a a9 9b LDA #&9b ; OFFSET_UPPERCASE &610c 8d fa 5f STA &5ffa ; letter_byte_offset &610f ca DEX &6110 38 SEC &6111 b0 cf BCS &60e2 ; to_next_character # Always branches ; is_quote &6113 a9 22 LDA #&22 ; """ &6115 38 SEC &6116 b0 ea BCS &6102 ; to_add_character_to_buffer # Always branches ; is_bracket &6118 ad f9 5f LDA &5ff9 ; bracket &611b 49 01 EOR #&01 &611d 8d f9 5f STA &5ff9 ; bracket &6120 38 SEC &6121 b0 df BCS &6102 ; to_add_character_to_buffer # Always branches ; add_fragment &6123 20 e9 61 JSR &61e9 ; add_fragment_to_buffer &6126 4c a4 60 JMP &60a4 ; skip_add_character_to_buffer ; end_with_nothing &6129 ca DEX &612a 18 CLC &612b 90 12 BCC &613f ; end_and_write_buffer # Always branches ; end_string &612d ad f7 5f LDA &5ff7 ; string_ending &6130 f0 f7 BEQ &6129 ; end_with_nothing &6132 c9 01 CMP #&01 ; TEXT_END_COMMA &6134 f0 06 BEQ &613c ; end_with_comma ; end_with_period &6136 20 50 61 JSR &6150 ; add_period_and_space &6139 18 CLC &613a 90 03 BCC &613f ; end_and_write_buffer # Always branches ; end_with_comma &613c 20 6e 61 JSR &616e ; add_comma_and_space ; end_and_write_buffer &613f a9 0d LDA #&0d ; CR &6141 9d a6 5f STA &5fa6,X ; text_buffer + 1 &6144 20 73 61 JSR &6173 ; write_buffer &6147 ae fc 5f LDX &5ffc ; string_id &614a ac fb 5f LDY &5ffb ; string_table &614d a5 75 LDA &75 ; text_colour &614f 60 RTS ; add_period_and_space &6150 a9 2e LDA #&2e ; "." ; add_A_and_space &6152 9d a5 5f STA &5fa5,X ; text_buffer &6155 b1 70 LDA (&70),Y ; text_address &6157 c9 d0 CMP #&d0 ; TEXT_SEPARATOR &6159 f0 0c BEQ &6167 ; add_space &615b c8 INY &615c b1 70 LDA (&70),Y ; text_address &615e 88 DEY &615f c9 ff CMP #&ff ; TEXT_QUOTE &6161 f0 0a BEQ &616d ; leave &6163 c9 fb CMP #&fb ; TEXT_SPACE &6165 f0 06 BEQ &616d ; leave ; add_space &6167 a9 20 LDA #&20 ; " " &6169 e8 INX &616a 9d a5 5f STA &5fa5,X ; text_buffer ; leave &616d 60 RTS ; add_comma_and_space &616e a9 2c LDA #&2c ; "," &6170 18 CLC &6171 90 df BCC &6152 ; add_A_and_space # Always branches ; write_buffer &6173 20 22 63 JSR &6322 ; get_cursor_position &6176 e0 00 CPX #&00 &6178 d0 03 BNE &617d ; skip_colour &617a 20 13 63 JSR &6313 ; set_line_colour ; skip_colour &617d a0 00 LDY #&00 &617f a2 00 LDX #&00 ; write_buffer_loop &6181 a9 00 LDA #&00 &6183 85 74 STA &74 ; line_length ; find_end_of_word_loop &6185 b9 a5 5f LDA &5fa5,Y ; text_buffer &6188 c9 0d CMP #&0d ; CR &618a f0 0d BEQ &6199 ; found_end_of_word &618c c9 20 CMP #&20 ; " " &618e f0 09 BEQ &6199 ; found_end_of_word &6190 e6 74 INC &74 ; line_length &6192 c8 INY &6193 18 CLC &6194 90 ef BCC &6185 ; find_end_of_word_loop # Always branches ; leave_after_pla &6196 68 PLA &6197 a8 TAY ; leave &6198 60 RTS ; found_end_of_word &6199 98 TYA &619a 48 PHA &619b 8a TXA &619c 48 PHA &619d 20 22 63 JSR &6322 ; get_cursor_position &61a0 8a TXA &61a1 18 CLC &61a2 65 74 ADC &74 ; line_length &61a4 c9 27 CMP #&27 ; 39 # actually CMP screen_width &61a6 90 06 BCC &61ae ; not_new_line &61a8 20 c8 61 JSR &61c8 ; check_for_scrolling &61ab 20 13 63 JSR &6313 ; set_line_colour ; not_new_line &61ae 68 PLA &61af aa TAX ; write_word_loop &61b0 bd a5 5f LDA &5fa5,X ; text_buffer &61b3 c9 0d CMP #&0d ; CR &61b5 f0 df BEQ &6196 ; leave_after_pla &61b7 20 ee ff JSR &ffee ; OSWRCH &61ba 20 60 62 JSR &6260 ; delay &61bd e8 INX &61be c9 20 CMP #&20 ; " " &61c0 d0 ee BNE &61b0 ; write_word_loop &61c2 68 PLA &61c3 a8 TAY &61c4 c8 INY &61c5 18 CLC &61c6 90 b9 BCC &6181 ; write_buffer_loop # Always branches ; check_for_scrolling &61c8 20 e7 ff JSR &ffe7 ; OSNEWL &61cb ce a2 5f DEC &5fa2 ; lines_remaining_before_scrolling &61ce 10 c8 BPL &6198 ; leave &61d0 ad a3 5f LDA &5fa3 ; lines_per_page &61d3 8d a2 5f STA &5fa2 ; lines_remaining_before_scrolling &61d6 20 ec 62 JSR &62ec ; press_space_to_continue &61d9 ae a4 5f LDX &5fa4 ; press_space_to_continue_string_length ; remove_press_space_to_continue_loop &61dc a9 7f LDA #&7f ; DEL &61de 20 ee ff JSR &ffee ; OSWRCH &61e1 ca DEX &61e2 10 f8 BPL &61dc ; remove_press_space_to_continue_loop &61e4 a9 0b LDA #&0b ; UP &61e6 4c ee ff JMP &ffee ; OSWRCH ; add_fragment_to_buffer &61e9 85 74 STA &74 ; fragment_id &61eb a9 44 LDA #&44 ; &6a44 = fragments_two &61ed 85 72 STA &72 ; fragments_address_low &61ef a9 6a LDA #&6a &61f1 85 73 STA &73 ; fragments_address_high &61f3 a5 74 LDA &74 ; fragment_id &61f5 c9 cf CMP #&cf ; TEXT_EXTENDED_FRAGMENT &61f7 d0 0f BNE &6208 ; not_extended_fragment &61f9 20 b0 62 JSR &62b0 ; move_to_next_byte_of_text &61fc b1 70 LDA (&70),Y ; text_address &61fe 85 74 STA &74 ; fragment_id &6200 a9 97 LDA #&97 ; &6397 = fragments_one &6202 85 72 STA &72 ; fragments_address_low &6204 a9 63 LDA #&63 &6206 85 73 STA &73 ; fragments_address_high ; not_extended_fragment &6208 98 TYA &6209 48 PHA &620a 8a TXA &620b 48 PHA &620c a0 00 LDY #&00 &620e a2 00 LDX #&00 &6210 a5 74 LDA &74 ; fragment_id &6212 f0 1d BEQ &6231 ; skip_finding_fragment ; find_fragment_in_list_loop &6214 b1 72 LDA (&72),Y ; fragments_address &6216 c9 80 CMP #&80 &6218 b0 0e BCS &6228 ; end_of_fragment ; move_forward_a_byte_in_list &621a a9 01 LDA #&01 &621c 18 CLC &621d 65 72 ADC &72 ; fragments_address_low &621f 85 72 STA &72 ; fragments_address_low &6221 90 f1 BCC &6214 ; find_fragment_in_list_loop &6223 e6 73 INC &73 ; fragments_address_high &6225 18 CLC &6226 90 ec BCC &6214 ; find_fragment_in_list_loop # Always branches ; end_of_fragment &6228 e8 INX &6229 e4 74 CPX &74 ; fragment_id &622b f0 03 BEQ &6230 ; found_fragment &622d 18 CLC &622e 90 ea BCC &621a ; move_forward_a_byte_in_list # Always branches ; found_fragment &6230 c8 INY ; skip_finding_fragment &6231 68 PLA &6232 aa TAX ; add_fragment_loop &6233 b1 72 LDA (&72),Y ; fragments_address &6235 c9 80 CMP #&80 &6237 b0 1a BCS &6253 ; add_last_character_of_fragment &6239 48 PHA &623a ad fa 5f LDA &5ffa ; letter_byte_offset &623d c9 9b CMP #&9b ; OFFSET_UPPERCASE &623f f0 04 BEQ &6245 ; skip_lowercasing &6241 68 PLA &6242 09 20 ORA #&20 &6244 48 PHA ; skip_lowercasing &6245 68 PLA &6246 9d a5 5f STA &5fa5,X ; text_buffer &6249 c8 INY &624a e8 INX &624b a9 7b LDA #&7b ; OFFSET_LOWERCASE &624d 8d fa 5f STA &5ffa ; letter_byte_offset &6250 18 CLC &6251 90 e0 BCC &6233 ; add_fragment_loop # Always branches ; add_last_character_of_fragment &6253 29 7f AND #&7f &6255 09 20 ORA #&20 &6257 9d a5 5f STA &5fa5,X ; text_buffer &625a 68 PLA &625b a8 TAY &625c bd a5 5f LDA &5fa5,X ; text_buffer &625f 60 RTS ; delay &6260 48 PHA &6261 ad a1 5f LDA &5fa1 ; delay_length &6264 f0 12 BEQ &6278 ; leave &6266 8d f8 5f STA &5ff8 ; delay_cooldown &6269 8a TXA &626a 48 PHA ; delay_outer_loop &626b a2 00 LDX #&00 ; delay_inner_loop &626d ea NOP &626e ca DEX &626f d0 fc BNE &626d ; delay_inner_loop &6271 ce f8 5f DEC &5ff8 ; delay_cooldown &6274 d0 f5 BNE &626b ; delay_outer_loop &6276 68 PLA &6277 aa TAX ; leave &6278 68 PLA &6279 60 RTS ; write_string_at_address &627a 86 70 STX &70 ; text_address_low &627c 84 71 STY &71 ; text_address_high &627e 85 75 STA &75 ; text_colour &6280 a0 00 LDY #&00 ; loop &6282 a2 ff LDX #&ff &6284 e8 INX ; inner_loop &6285 b1 70 LDA (&70),Y ; text_address &6287 9d a5 5f STA &5fa5,X ; text_buffer &628a 20 b0 62 JSR &62b0 ; move_to_next_byte_of_text &628d e0 27 CPX #&27 &628f 90 08 BCC &6299 ; is_valid_length ; string_is_too_long &6291 00 BRK &6292 2f 4c 6f 6e 67 21 00 ; "/Long!" ; is_valid_length &6299 bd a5 5f LDA &5fa5,X ; text_buffer &629c c9 20 CMP #&20 ; " " # Space marks end of word &629e f0 06 BEQ &62a6 ; end_of_word &62a0 c9 0d CMP #&0d ; CR # Carriage return marks end of buffer &62a2 f0 02 BEQ &62a6 ; end_of_word &62a4 d0 de BNE &6284 ; inner_loop # Always branches ; end_of_word &62a6 48 PHA &62a7 20 3f 61 JSR &613f ; end_and_write_buffer &62aa 68 PLA &62ab c9 20 CMP #&20 ; " " &62ad f0 d1 BEQ &6280 ; loop &62af 60 RTS ; move_to_next_byte_of_text &62b0 a9 01 LDA #&01 &62b2 18 CLC &62b3 65 70 ADC &70 ; text_address_low &62b5 85 70 STA &70 ; text_address_low &62b7 90 02 BCC &62bb ; leave &62b9 e6 71 INC &71 ; text_address_high ; leave &62bb 60 RTS ; set_delay &62bc 8d f8 5f STA &5ff8 ; delay_cooldown &62bf 8d a1 5f STA &5fa1 ; delay_length &62c2 60 RTS ; set_lines_per_page_and_lines_remaining_before_scrolling &62c3 8d a2 5f STA &5fa2 ; lines_remaining_before_scrolling &62c6 8d a3 5f STA &5fa3 ; lines_per_page &62c9 60 RTS ; read_character &62ca 20 e4 62 JSR &62e4 ; enable_keyboard_interrupts &62cd 20 e0 ff JSR &ffe0 ; OSRDCH ; disable_keyboard_interrupts &62d0 48 PHA &62d1 8a TXA &62d2 48 PHA &62d3 a2 00 LDX #&00 # Disable keyboard interrupts ; set_keyboard_interrupts &62d5 98 TYA &62d6 48 PHA &62d7 a0 00 LDY #&00 &62d9 a9 b2 LDA #&b2 ; Enable/Disable Keyboard interrupts &62db 20 f4 ff JSR &fff4 ; OSBYTE &62de 68 PLA &62df a8 TAY &62e0 68 PLA &62e1 aa TAX &62e2 68 PLA &62e3 60 RTS ; enable_keyboard_interrupts &62e4 48 PHA &62e5 8a TXA &62e6 48 PHA &62e7 a2 ff LDX #&ff # Enable keyboard interrupts &62e9 18 CLC &62ea 90 e9 BCC &62d5 ; set_keyboard_interrupts # Always branches ; press_space_to_continue &62ec 20 e7 ff JSR &ffe7 ; OSNEWL &62ef ae a4 5f LDX &5fa4 ; press_space_to_continue_string_length ; write_press_space_to_continue_loop &62f2 bd d2 5f LDA &5fd2,X ; press_space_to_continue_string &62f5 20 ee ff JSR &ffee ; OSWRCH &62f8 ca DEX &62f9 10 f7 BPL &62f2 ; write_press_space_to_continue_loop ; wait_for_space &62fb 20 ca 62 JSR &62ca ; read_character &62fe c9 20 CMP #&20 ; " " &6300 d0 f9 BNE &62fb ; wait_for_space &6302 60 RTS ; set_screen_width # Unused code &6303 8d a5 61 STA &61a5 ; screen_width &6306 60 RTS ; write_string_and_newline &6307 20 fe 5f JSR &5ffe ; write_packed_string &630a 4c c8 61 JMP &61c8 ; check_for_scrolling ; write_string_at_address_and_newline &630d 20 7a 62 JSR &627a ; write_string_at_address &6310 18 CLC &6311 90 f7 BCC &630a ; set_line_colour &6313 ad fd 5f LDA &5ffd ; colour_enabled &6316 f0 05 BEQ &631d ; use_text_colour &6318 a9 20 LDA #&20 ; " " &631a 18 CLC &631b 90 02 BCC &631f ; to_oswrch # Always branches ; use_text_colour &631d a5 75 LDA &75 ; text_colour ; to_oswrch &631f 4c ee ff JMP &ffee ; OSWRCH ; get_cursor_position &6322 a9 86 LDA #&86 ; Get text cursor position &6324 4c f4 ff JMP &fff4 ; OSBYTE ; load_adcode4_string &6327 4c 2e 20 41 44 43 4f 44 45 34 0d ; "L. ADCODE4" ; initialise_bbc_screen &6332 a9 16 LDA #&16 # Change to MODE 7 &6334 20 ee ff JSR &ffee ; OSWRCH &6337 a9 07 LDA #&07 &6339 20 ee ff JSR &ffee ; OSWRCH ; initialise_osbytes &633c a9 c8 LDA #&c8; Read/Write BREAK/ESCAPE effect &633e a2 03 LDX #&03 ; Clear memory on next reset &6340 a0 00 LDY #&00 &6342 20 f4 ff JSR &fff4 ; OSBYTE &6345 a9 e1 LDA #&e1 ; Read/Write Interpretation of characters &80-&8F &6347 a2 00 LDX #&00 ; ignore &6349 a0 00 LDY #&00 &634b 20 f4 ff JSR &fff4 ; OSBYTE &634e a9 d2 LDA #&d2 ; Read/Write sound suppression flag &6350 a2 01 LDX #&01 ; disable sound &6352 a0 00 LDY #&00 &6354 20 f4 ff JSR &fff4 ; OSBYTE ; handle_cls &6357 a9 0c LDA #&0c ; CLS &6359 18 CLC &635a 90 c3 BCC &631f ; to_oswrch # Always branches ; text_window_string &635c 1c 00 13 27 05 ; define text window x:(&00, &27), y:(&05, &13) &6361 ff ; initialise_electron_screen &6362 a2 00 LDX #&00 &6364 8e ed 5f STX &5fed ; allow_colour ; write_text_window_string_loop &6367 bd 5c 63 LDA &635c,X ; text_window_string &636a 30 06 BMI &6372 ; finished_writing_text_window_string &636c 20 ee ff JSR &ffee ; OSWRCH &636f e8 INX &6370 10 f5 BPL &6367 ; write_text_window_string_loop ; finished_writing_text_window_string &6372 8d fd 5f STA &5ffd ; colour_enabled # Disable colour &6375 a9 20 LDA #&20 ; " " &6377 8d eb 5f STA &5feb ; press_space_to_continue_string + &19 # Remove colour from press_space_to_continue_string &637a a9 19 LDA #&19 &637c 8d a4 5f STA &5fa4 ; press_space_to_continue_string_length &637f a2 27 LDX #&27 ; &6327 = load_adcode4_string &6381 a0 63 LDY #&63 &6383 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ACODE4 &6386 18 CLC &6387 90 b3 BCC &633c ; initialise_osbytes # Always branches ; ok_string &6389 4f 2e 4b 2e 0d ; "O.K." ; write_ok &638e a2 89 LDX #&89 ; &6389 = ok_string &6390 a0 63 LDY #&63 &6392 a9 83 LDA #&83 ; TEXT_YELLOW &6394 4c 0d 63 JMP &630d ; write_string_at_address_and_newline ; fragments_one &6397 4e 4f 52 54 48 45 41 53 54 a0 ; &00 : "NORTHEAST " &63a1 4e 4f 52 54 48 57 45 53 54 a0 ; &01 : "NORTHWEST " &63ab 53 4f 55 54 48 45 41 53 54 a0 ; &02 : "SOUTHEAST " &63b5 53 4f 55 54 48 57 45 53 54 a0 ; &03 : "SOUTHWEST " &63bf 20 42 4f 4f cb ; &04 : " BOOK" &63c4 45 4e 54 52 41 4e 43 c5 ; &05 : "ENTRANCE" &63cc 4d 4f 55 4e 54 41 49 ce ; &06 : "MOUNTAIN" &63d4 43 4f 52 52 49 44 4f d2 ; &07 : "CORRIDOR" &63dc 43 4f 4c 4f 55 d2 ; &08 : "COLOUR" &63e2 42 41 54 54 45 52 d9 ; &09 : "BATTERY" &63e9 50 41 52 54 49 41 4c 4c 59 a0 ; &0a : "PARTIALLY " &63f3 49 4c 4c 55 4d 49 4e 41 54 45 44 a0 ; &0b : "ILLUMINATED " &63ff 42 52 49 47 48 54 4c 59 a0 ; &0c : "BRIGHTLY " &6408 44 49 4d 4c 59 a0 ; &0d : "DIMLY " &640e 42 45 4e 45 41 54 c8 ; &0e : "BENEATH" &6415 42 45 46 4f 52 45 a0 ; &0f : "BEFORE " &641c 45 49 54 48 45 52 a0 ; &10 : "EITHER " &6423 42 45 48 49 4e c4 ; &11 : "BEHIND" &6429 44 49 53 54 41 4e 43 c5 ; &12 : "DISTANCE" &6431 45 4e 4f 52 4d 4f 55 53 a0 ; &13 : "ENORMOUS " &643a 4d 41 53 53 49 56 45 a0 ; &14 : "MASSIVE " &6442 4c 45 41 56 45 d3 ; &15 : "LEAVES" &6448 48 55 47 45 a0 ; &16 : "HUGE " &644d 41 52 43 c8 ; &17 : "ARCH" &6451 46 4c 49 43 4b 45 52 49 4e 47 a0 ; &18 : "FLICKERING " &645c 54 52 41 43 cb ; &19 : "TRACK" &6461 4e 41 52 52 4f d7 ; &1a : "NARROW" &6467 53 54 52 45 45 54 a0 ; &1b : "STREET " &646e 43 4f 4d 46 4f 52 d4 ; &1c : "COMFORT" &6475 43 4c 49 46 c6 ; &1d : "CLIFF" &647a 43 4c 49 4d c2 ; &1e : "CLIMB" &647f 47 52 4f 55 4e c4 ; &1f : "GROUND" &6485 43 45 49 4c 49 4e c7 ; &20 : "CEILING" &648c 42 52 4f 4b 45 ce ; &21 : "BROKEN" &6492 57 48 45 52 45 a0 ; &22 : "WHERE " &6498 4e 45 41 52 42 d9 ; &23 : "NEARBY" &649e 54 57 49 53 d4 ; &24 : "TWIST" &64a3 44 41 5a 5a cc ; &25 : "DAZZL" &64a8 46 4f 52 45 53 d4 ; &26 : "FOREST" &64ae 53 54 45 4e 43 c8 ; &27 : "STENCH" &64b4 57 41 54 45 d2 ; &28 : "WATER" &64b9 42 41 53 4b 45 d4 ; &29 : "BASKET" &64bf 53 57 45 50 54 a0 ; &2a : "SWEPT " &64c5 44 55 53 54 59 a0 ; &2b : "DUSTY " &64cb 47 52 4f 57 54 48 a0 ; &2c : "GROWTH " &64d2 53 54 41 49 d2 ; &2d : "STAIR" &64d7 53 48 41 44 c5 ; &2e : "SHADE" &64dc 46 41 53 48 49 4f 4e 45 44 a0 ; &2f : "FASHIONED " &64e6 53 4d 4f 4f 54 c8 ; &30 : "SMOOTH" &64ec 51 55 49 43 cb ; &31 : "QUICK" &64f1 4d 49 4e 55 54 c5 ; &32 : "MINUTE" &64f7 53 54 45 41 44 d9 ; &33 : "STEADY" &64fd 48 4f 55 53 c5 ; &34 : "HOUSE" &6502 44 52 49 46 d4 ; &35 : "DRIFT" &6507 4f 55 47 48 54 a0 ; &36 : "OUGHT " &650d 47 4c 41 53 53 a0 ; &37 : "GLASS " &6513 53 49 4c 45 ce ; &38 : "SILEN" &6518 53 54 4f 52 cd ; &39 : "STORM" &651d 47 41 50 49 4e 47 a0 ; &3a : "GAPING " &6524 4d 41 4e 53 49 4f ce ; &3b : "MANSION" &652b 53 50 41 43 c5 ; &3c : "SPACE" &6530 53 45 56 45 d2 ; &3d : "SEVER" &6535 57 4f 52 4b a0 ; &3e : "WORK " &653a 47 52 41 53 d3 ; &3f : "GRASS" &653f 43 41 52 50 45 d4 ; &40 : "CARPET" &6545 43 4f 4e 53 54 52 55 43 54 45 44 a0 ; &41 : "CONSTRUCTED " &6551 50 41 50 45 d2 ; &42 : "PAPER" &6556 50 41 49 4e 54 45 c4 ; &43 : "PAINTED" &655d 50 4c 45 41 53 45 a0 ; &44 : "PLEASE " &6564 42 55 49 4c 44 49 4e c7 ; &45 : "BUILDING" &656c 59 45 4c 4c 4f d7 ; &46 : "YELLOW" &6572 57 48 49 54 c5 ; &47 : "WHITE" &6577 47 52 45 45 ce ; &48 : "GREEN" &657c 20 42 55 54 54 4f ce ; &49 : " BUTTON" &6583 50 55 52 50 4c c5 ; &4a : "PURPLE" &6589 42 4c 55 c5 ; &4b : "BLUE" &658d 43 52 45 41 54 55 52 c5 ; &4c : "CREATURE" &6595 46 49 4c 4c 45 44 a0 ; &4d : "FILLED " &659c 41 42 48 4f 52 52 45 4e 54 a0 ; &4e : "ABHORRENT " &65a6 42 4f 55 4e c4 ; &4f : "BOUND" &65ab 41 42 52 41 53 49 56 c5 ; &50 : "ABRASIVE" &65b3 54 48 52 4f 55 47 48 a0 ; &51 : "THROUGH " &65bb 41 42 59 53 d3 ; &52 : "ABYSS" &65c0 41 43 43 45 4c 45 52 41 d4 ; &53 : "ACCELERAT" &65c9 41 43 43 45 53 d3 ; &54 : "ACCESS" &65cf 41 43 43 49 44 45 4e d4 ; &55 : "ACCIDENT" &65d7 4c 55 58 55 52 49 4f 55 d3 ; &56 : "LUXURIOUS" &65e0 53 41 59 d3 ; &57 : "SAYS" &65e4 52 49 43 4b a0 ; &58 : "RICK " &65e9 53 48 41 50 c5 ; &59 : "SHAPE" &65ee 41 44 56 45 4e 54 55 52 c5 ; &5a : "ADVENTURE" &65f7 43 52 41 57 cc ; &5b : "CRAWL" &65fc 52 45 50 4c 49 45 d3 ; &5c : "REPLIES" &6603 50 52 45 56 45 4e 54 49 4e 47 a0 ; &5d : "PREVENTING " &660e 4a 55 4e 47 4c c5 ; &5e : "JUNGLE" &6614 4d 41 4c 45 56 4f 4c 45 4e d4 ; &5f : "MALEVOLENT" &661e 4d 41 4c 49 47 4e 41 4e d4 ; &60 : "MALIGNANT" &6627 59 4f 55 52 53 45 4c 46 a0 ; &61 : "YOURSELF " &6630 50 52 49 53 4f ce ; &62 : "PRISON" &6636 53 54 52 45 41 cd ; &63 : "STREAM" &663c 44 49 52 45 43 54 49 4f ce ; &64 : "DIRECTION" &6645 42 4f 55 4e 43 c5 ; &65 : "BOUNCE" &664b 42 4f 54 54 4f 4d a0 ; &66 : "BOTTOM " &6652 4c 4f 52 52 d9 ; &67 : "LORRY" &6657 50 55 4c 4c 45 44 a0 ; &68 : "PULLED " &665e 42 52 49 44 47 c5 ; &69 : "BRIDGE" &6664 42 45 45 4e a0 ; &6a : "BEEN " &6669 43 41 4d 4f 55 46 4c 41 47 c5 ; &6b : "CAMOUFLAGE" &6673 4d 41 47 4e 49 46 49 43 45 4e d4 ; &6c : "MAGNIFICENT" &667e 42 52 49 4c 4c 49 41 4e d4 ; &6d : "BRILLIANT" &6687 52 55 42 42 49 53 48 a0 ; &6e : "RUBBISH " &668f 43 48 41 53 cd ; &6f : "CHASM" &6694 56 49 4f 4c 45 4e d4 ; &70 : "VIOLENT" &669b 50 4c 41 54 45 41 d5 ; &71 : "PLATEAU" &66a2 4c 41 4e 44 53 43 41 50 c5 ; &72 : "LANDSCAPE" &66ab 53 45 43 55 52 c5 ; &73 : "SECURE" &66b1 43 45 4e 54 d2 ; &74 : "CENTR" &66b6 47 55 41 52 c4 ; &75 : "GUARD" &66bb 53 4f 4c 44 49 45 d2 ; &76 : "SOLDIER" &66c2 53 54 41 52 49 4e 47 a0 ; &77 : "STARING " &66ca 47 41 5a 49 4e 47 a0 ; &78 : "GAZING " &66d1 50 45 52 56 41 44 c5 ; &79 : "PERVADE" &66d8 41 54 4d 4f 53 50 48 45 d2 ; &7a : "ATMOSPHER" &66e1 53 4d 45 4c cc ; &7b : "SMELL" &66e6 41 52 4f 4d c1 ; &7c : "AROMA" &66eb 50 55 4e 47 45 4e 54 a0 ; &7d : "PUNGENT " &66f3 53 4c 49 44 49 4e 47 a0 ; &7e : "SLIDING " &66fb 53 4c 49 54 48 45 d2 ; &7f : "SLITHER" &6702 46 4f 52 4b 45 44 a0 ; &80 : "FORKED " &6709 4d 59 52 49 41 44 a0 ; &81 : "MYRIAD " &6710 41 42 4f 55 54 a0 ; &82 : "ABOUT " &6716 50 4c 41 43 c5 ; &83 : "PLACE" &671b 45 4d 45 52 47 c5 ; &84 : "EMERGE" &6721 42 4c 41 43 cb ; &85 : "BLACK" &6726 42 55 4e 44 4c c5 ; &86 : "BUNDLE" &672c 43 55 50 42 4f 41 52 c4 ; &87 : "CUPBOARD" &6734 42 4f 41 52 c4 ; &88 : "BOARD" &6739 41 4c 4c 49 47 41 54 4f d2 ; &89 : "ALLIGATOR" &6742 4c 45 41 50 a0 ; &8a : "LEAP " &6747 53 55 42 4d 45 52 47 c5 ; &8b : "SUBMERGE" &674f 53 55 44 44 45 ce ; &8c : "SUDDEN" &6755 54 45 52 52 41 49 ce ; &8d : "TERRAIN" &675c 54 4f 55 47 c8 ; &8e : "TOUGH" &6761 47 52 41 4e 49 54 c5 ; &8f : "GRANITE" &6768 44 52 41 47 47 45 44 a0 ; &90 : "DRAGGED " &6770 43 4f 4e 54 49 4e 55 c5 ; &91 : "CONTINUE" &6778 45 58 54 45 4e c4 ; &92 : "EXTEND" &677e 50 41 49 52 20 4f 46 a0 ; &93 : "PAIR OF " &6786 42 45 41 55 54 49 46 55 cc ; &94 : "BEAUTIFUL" &678f 53 55 52 52 4f 55 4e c4 ; &95 : "SURROUND" &6797 45 58 54 52 45 4d 49 54 59 a0 ; &96 : "EXTREMITY " &67a1 53 55 42 54 4c 45 a0 ; &97 : "SUBTLE " &67a8 4f 4d 49 4e 4f 55 d3 ; &98 : "OMINOUS" &67af 48 55 44 44 4c c5 ; &99 : "HUDDLE" &67b5 53 43 41 54 54 45 d2 ; &9a : "SCATTER" &67bc 4d 41 54 45 52 49 41 cc ; &9b : "MATERIAL" &67c4 53 54 52 41 49 47 48 d4 ; &9c : "STRAIGHT" &67cc 52 49 43 4b 45 54 d9 ; &9d : "RICKETY" &67d3 46 52 41 47 4d 45 4e d4 ; &9e : "FRAGMENT" &67db 41 52 4f 55 4e c4 ; &9f : "AROUND" &67e1 4d 41 54 54 52 45 53 d3 ; &a0 : "MATTRESS" &67e9 43 4c 45 41 52 a0 ; &a1 : "CLEAR " &67ef 43 41 54 41 50 55 4c d4 ; &a2 : "CATAPULT" &67f7 53 4f 4d 45 54 48 49 4e c7 ; &a3 : "SOMETHING" &6800 52 45 56 45 41 cc ; &a4 : "REVEAL" &6806 57 41 4e 44 45 d2 ; &a5 : "WANDER" &680c 50 4c 41 53 54 49 c3 ; &a6 : "PLASTIC" &6813 43 4c 45 41 52 49 4e c7 ; &a7 : "CLEARING" &681b 53 48 41 4c 4c 4f d7 ; &a8 : "SHALLOW" &6822 45 58 51 55 49 53 49 54 c5 ; &a9 : "EXQUISITE" &682b 43 4f 52 4e 45 d2 ; &aa : "CORNER" &6831 50 45 52 43 48 45 44 a0 ; &ab : "PERCHED " &6839 42 52 41 4e 43 c8 ; &ac : "BRANCH" &683f 43 4c 49 4e 47 49 4e 47 a0 ; &ad : "CLINGING " &6848 41 4e 43 49 45 4e 54 a0 ; &ae : "ANCIENT " &6850 53 54 55 52 44 d9 ; &af : "STURDY" &6856 55 4c 41 52 a0 ; &b0 : "ULAR " &685b 46 49 58 45 44 a0 ; &b1 : "FIXED " &6861 53 48 41 44 4f d7 ; &b2 : "SHADOW" &6867 48 49 44 44 45 ce ; &b3 : "HIDDEN" &686d 43 4f 4e 46 49 4e c5 ; &b4 : "CONFINE" &6874 41 43 52 4f 53 53 a0 ; &b5 : "ACROSS " &687b 50 52 4f 54 52 55 c4 ; &b6 : "PROTRUD" &6882 54 52 41 56 45 cc ; &b7 : "TRAVEL" &6888 44 49 53 43 45 52 ce ; &b8 : "DISCERN" &688f 42 45 54 57 45 45 ce ; &b9 : "BETWEEN" &6896 43 52 4f 53 d3 ; &ba : "CROSS" &689b 44 49 53 47 55 53 d4 ; &bb : "DISGUST" &68a2 43 52 45 45 d0 ; &bc : "CREEP" &68a7 41 47 41 49 ce ; &bd : "AGAIN" &68ac 43 52 55 44 c5 ; &be : "CRUDE" &68b1 42 4f 52 44 45 d2 ; &bf : "BORDER" &68b7 50 49 43 54 55 52 c5 ; &c0 : "PICTURE" &68be 52 4f 55 4e c4 ; &c1 : "ROUND" &68c3 54 49 47 48 d4 ; &c2 : "TIGHT" &68c8 46 45 52 4f 43 49 4f 55 53 a0 ; &c3 : "FEROCIOUS " &68d2 50 49 53 54 4f cc ; &c4 : "PISTOL" &68d8 53 54 52 41 4e c7 ; &c5 : "STRANG" &68de 53 4f 55 4e c4 ; &c6 : "SOUND" &68e3 53 54 52 55 47 47 4c c5 ; &c7 : "STRUGGLE" &68eb 53 48 4f 55 d4 ; &c8 : "SHOUT" &68f0 53 50 52 45 41 c4 ; &c9 : "SPREAD" &68f6 44 49 53 41 50 50 45 41 d2 ; &ca : "DISAPPEAR" &68ff 41 50 50 45 41 d2 ; &cb : "APPEAR" &6905 50 45 43 55 4c 49 41 52 a0 ; &cc : "PECULIAR " &690e 41 4e 59 54 48 49 4e c7 ; &cd : "ANYTHING" &6916 44 41 4e 47 4c c5 ; &ce : "DANGLE" &691c 45 56 45 4e 54 55 41 4c 4c d9 ; &cf : "EVENTUALLY" &6926 53 54 55 4d 42 4c c5 ; &d0 : "STUMBLE" &692d 41 54 54 45 4d 50 d4 ; &d1 : "ATTEMPT" &6934 50 55 53 c8 ; &d2 : "PUSH" &6938 48 4f 4c 45 a0 ; &d3 : "HOLE " &693d 53 49 47 ce ; &d4 : "SIGN" &6941 48 4f 4c c4 ; &d5 : "HOLD" &6945 57 45 41 d2 ; &d6 : "WEAR" &6949 43 41 52 52 d9 ; &d7 : "CARRY" &694e 43 4c 4f 55 c4 ; &d8 : "CLOUD" &6953 53 4f 46 d4 ; &d9 : "SOFT" &6957 52 4f 55 47 c8 ; &da : "ROUGH" &695c 53 54 45 45 d0 ; &db : "STEEP" &6961 57 4f 4e 44 45 d2 ; &dc : "WONDER" &6967 4d 45 4e 41 43 49 4e c7 ; &dd : "MENACING" &696f 4d 49 44 44 4c 45 a0 ; &de : "MIDDLE " &6976 43 4f 4c c4 ; &df : "COLD" &697a 44 41 4e 47 45 52 4f 55 d3 ; &e0 : "DANGEROUS" &6983 42 41 52 52 45 4e a0 ; &e1 : "BARREN " &698a 56 49 53 49 42 4c 45 a0 ; &e2 : "VISIBLE " &6992 54 48 49 43 cb ; &e3 : "THICK" &6997 42 41 4c 41 4e c3 ; &e4 : "BALANC" &699d 43 59 4c 49 4e c4 ; &e5 : "CYLIND" &69a3 50 49 4e 4e 41 43 4c c5 ; &e6 : "PINNACLE" &69ab 45 4e 56 49 52 4f 4e 4d 45 4e d4 ; &e7 : "ENVIRONMENT" &69b6 4c 45 4e 47 54 48 a0 ; &e8 : "LENGTH " &69bd 43 52 59 53 54 41 4c a0 ; &e9 : "CRYSTAL " &69c5 52 49 56 45 d2 ; &ea : "RIVER" &69ca 53 54 4f 4e c5 ; &eb : "STONE" &69cf 4d 45 54 52 c5 ; &ec : "METRE" &69d4 50 41 53 53 41 47 c5 ; &ed : "PASSAGE" &69db 45 58 41 4d 49 ce ; &ee : "EXAMIN" &69e1 46 49 4e 44 a0 ; &ef : "FIND " &69e6 56 45 4e 4f 4d 4f 55 d3 ; &f0 : "VENOMOUS" &69ee 47 4c 45 41 cd ; &f1 : "GLEAM" &69f3 46 49 4c 54 45 d2 ; &f2 : "FILTER" &69f9 54 55 4e 4e 45 cc ; &f3 : "TUNNEL" &69ff 50 52 45 53 d3 ; &f4 : "PRESS" &6a04 42 4c 4f 4f 44 a0 ; &f5 : "BLOOD " &6a0a 20 43 48 45 53 d4 ; &f6 : " CHEST" &6a10 46 52 4f 4e d4 ; &f7 : "FRONT" &6a15 54 45 52 52 49 46 d9 ; &f8 : "TERRIFY" &6a1c 4e 4f 54 48 49 4e c7 ; &f9 : "NOTHING" &6a23 46 49 52 45 a0 ; &fa : "FIRE " &6a28 4c 49 54 54 4c 45 a0 ; &fb : "LITTLE " &6a2f 53 54 52 45 54 43 c8 ; &fc : "STRETCH" &6a36 41 46 54 45 52 a0 ; &fd : "AFTER " &6a3c 49 42 4c c5 ; &fe : "IBLE" &6a40 53 43 55 cc ; &ff : "SCUL" ; fragments_two &6a44 54 48 45 52 45 a0 ; &00 : "THERE " &6a4a 53 54 41 4e c4 ; &01 : "STAND" &6a4f 41 42 4c c5 ; &02 : "ABLE" &6a53 4d 41 44 45 a0 ; &03 : "MADE " &6a58 57 48 49 43 48 a0 ; &04 : "WHICH " &6a5e 4c 49 47 48 d4 ; &05 : "LIGHT" &6a63 4e 4f 52 54 c8 ; &06 : "NORTH" &6a68 53 4f 55 54 c8 ; &07 : "SOUTH" &6a6d 43 4c 4f 53 c5 ; &08 : "CLOSE" &6a72 57 49 54 48 a0 ; &09 : "WITH " &6a77 46 52 4f 4d a0 ; &0a : "FROM " &6a7c 4c 41 52 47 c5 ; &0b : "LARGE" &6a81 53 4d 41 4c cc ; &0c : "SMALL" &6a86 54 48 41 54 a0 ; &0d : "THAT " &6a8b 4f 4e 4c 59 a0 ; &0e : "ONLY " &6a90 42 41 43 4b a0 ; &0f : "BACK " &6a95 46 4c 4f 4f d2 ; &10 : "FLOOR" &6a9a 54 48 49 53 a0 ; &11 : "THIS " &6a9f 55 4e 44 45 d2 ; &12 : "UNDER" &6aa4 4c 4f 4e c7 ; &13 : "LONG" &6aa8 42 45 4c 4f d7 ; &14 : "BELOW" &6aad 41 42 4f 56 c5 ; &15 : "ABOVE" &6ab2 53 48 4f 52 d4 ; &16 : "SHORT" &6ab7 45 41 53 d4 ; &17 : "EAST" &6abb 57 45 53 d4 ; &18 : "WEST" &6abf 57 41 4c cc ; &19 : "WALL" &6ac3 45 58 49 d4 ; &1a : "EXIT" &6ac7 57 49 4e c4 ; &1b : "WIND" &6acb 44 4f 57 ce ; &1c : "DOWN" &6acf 4f 50 45 ce ; &1d : "OPEN" &6ad3 52 4f 4f cd ; &1e : "ROOM" &6ad7 44 41 52 cb ; &1f : "DARK" &6adb 50 41 54 c8 ; &20 : "PATH" &6adf 53 49 44 c5 ; &21 : "SIDE" &6ae3 4f 56 45 d2 ; &22 : "OVER" &6ae7 4c 4f 4f cb ; &23 : "LOOK" &6aeb 46 4f 4f d4 ; &24 : "FOOT" &6aef 52 4f 41 c4 ; &25 : "ROAD" &6af3 53 54 45 d0 ; &26 : "STEP" &6af7 4c 45 53 d3 ; &27 : "LESS" &6afb 4c 45 41 c4 ; &28 : "LEAD" &6aff 42 55 54 a0 ; &29 : "BUT " &6b03 54 48 45 a0 ; &2a : "THE " &6b07 41 4e 44 a0 ; &2b : "AND " &6b0b 48 41 53 a0 ; &2c : "HAS " &6b0f 57 49 44 c5 ; &2d : "WIDE" &6b13 46 4f 52 cd ; &2e : "FORM" &6b17 4d 45 4e d4 ; &2f : "MENT" &6b1b 54 52 45 c5 ; &30 : "TREE" &6b1f 53 4c 4f d0 ; &31 : "SLOP" &6b23 57 4f 4f c4 ; &32 : "WOOD" &6b27 52 41 49 cc ; &33 : "RAIL" &6b2b 44 4f 4f d2 ; &34 : "DOOR" &6b2f 59 4f 55 a0 ; &35 : "YOU " &6b33 41 52 45 a0 ; &36 : "ARE " &6b37 49 4e 47 a0 ; &37 : "ING " &6b3b 59 4f d5 ; &38 : "YOU" &6b3e 53 45 c5 ; &39 : "SEE" &6b41 54 4f a0 ; &3a : "TO " &6b44 49 4e a0 ; &3b : "IN " &6b47 4f 46 a0 ; &3c : "OF " &6b4a 4f 4e a0 ; &3d : "ON " &6b4d 49 54 a0 ; &3e : "IT " &6b50 57 41 d9 ; &3f : "WAY" &6b53 54 48 c5 ; &40 : "THE" &6b56 41 4e c4 ; &41 : "AND" &6b59 52 55 ce ; &42 : "RUN" &6b5c 41 54 a0 ; &43 : "AT " &6b5f 4f 55 d4 ; &44 : "OUT" &6b62 41 52 c5 ; &45 : "ARE" &6b65 52 45 c4 ; &46 : "RED" &6b68 4f 55 d2 ; &47 : "OUR" &6b6b 49 4f d2 ; &48 : "IOR" &6b6e 49 4e c7 ; &49 : "ING" &6b71 47 48 d4 ; &4a : "GHT" &6b74 4f 55 d3 ; &4b : "OUS" &6b77 49 4f ce ; &4c : "ION" &6b7a 41 47 c5 ; &4d : "AGE" &6b7d 49 53 a0 ; &4e : "IS " &6b80 45 a0 ; &4f : "E " &6b82 4e a0 ; &50 : "N " &6b84 54 a0 ; &51 : "T " &6b86 44 a0 ; &52 : "D " &6b88 41 a0 ; &53 : "A " &6b8a 59 a0 ; &54 : "Y " &6b8c 52 a0 ; &55 : "R " &6b8e 53 a0 ; &56 : "S " &6b90 49 a0 ; &57 : "I " &6b92 54 c8 ; &58 : "TH" &6b94 49 ce ; &59 : "IN" &6b96 45 d2 ; &5a : "ER" &6b98 52 c5 ; &5b : "RE" &6b9a 41 ce ; &5c : "AN" &6b9c 48 c5 ; &5d : "HE" &6b9e 41 d2 ; &5e : "AR" &6ba0 45 ce ; &5f : "EN" &6ba2 54 c9 ; &60 : "TI" &6ba4 54 c5 ; &61 : "TE" &6ba6 41 d4 ; &62 : "AT" &6ba8 4f ce ; &63 : "ON" &6baa 48 c1 ; &64 : "HA" &6bac 4f d5 ; &65 : "OU" &6bae 49 d4 ; &66 : "IT" &6bb0 45 d3 ; &67 : "ES" &6bb2 53 d4 ; &68 : "ST" &6bb4 4f d2 ; &69 : "OR" &6bb6 4e d4 ; &6a : "NT" &6bb8 48 c9 ; &6b : "HI" &6bba 45 c1 ; &6c : "EA" &6bbc 56 c5 ; &6d : "VE" &6bbe 43 cf ; &6e : "CO" &6bc0 44 c5 ; &6f : "DE" &6bc2 52 c1 ; &70 : "RA" &6bc4 44 cf ; &71 : "DO" &6bc6 54 cf ; &72 : "TO" &6bc8 4c c5 ; &73 : "LE" &6bca 4e c4 ; &74 : "ND" &6bcc 4d c1 ; &75 : "MA" &6bce 53 c5 ; &76 : "SE" &6bd0 41 cc ; &77 : "AL" &6bd2 41 c7 ; &78 : "AG" &6bd4 49 d3 ; &79 : "IS" &6bd6 4e c5 ; &7a : "NE" &6bd8 4c c1 ; &7b : "LA" &6bda 54 c1 ; &7c : "TA" &6bdc 45 cc ; &7d : "EL" &6bde 44 c9 ; &7e : "DI" &6be0 53 c9 ; &7f : "SI" &6be2 43 c1 ; &80 : "CA" &6be4 55 ce ; &81 : "UN" &6be6 43 c8 ; &82 : "CH" &6be8 4c c9 ; &83 : "LI" &6bea 42 cf ; &84 : "BO" &6bec 41 cd ; &85 : "AM" &6bee 4c cc ; &86 : "LL" &6bf0 50 d2 ; &87 : "PR" &6bf2 55 cd ; &88 : "UM" &6bf4 42 cc ; &89 : "BL" &6bf6 50 cf ; &8a : "PO" &6bf8 47 c5 ; &8b : "GE" &6bfa 4c cf ; &8c : "LO" &6bfc 47 c8 ; &8d : "GH" &6bfe 52 cf ; &8e : "RO" &6c00 45 c4 ; &8f : "ED" &6c02 47 d2 ; &90 : "GR" &6c04 4f cf ; &91 : "OO" &6c06 4e c1 ; &92 : "NA" &6c08 53 cd ; &93 : "SM" &6c0a 53 cf ; &94 : "SO" &6c0c 45 cd ; &95 : "EM" &6c0e 49 cc ; &96 : "IL" &6c10 4d d0 ; &97 : "MP" &6c12 48 d5 ; &98 : "HU" &6c14 50 c5 ; &99 : "PE" &6c16 50 d0 ; &9a : "PP" &6c18 50 c9 ; &9b : "PI" &6c1a 48 cf ; &9c : "HO" &6c1c 4e cf ; &9d : "NO" &6c1e 53 c1 ; &9e : "SA" &6c20 51 d5 ; &9f : "QU" &6c22 43 cb ; &a0 : "CK" &6c24 4d c5 ; &a1 : "ME" &6c26 54 d9 ; &a2 : "TY" &6c28 41 c9 ; &a3 : "AI" &6c2a 47 cf ; &a4 : "GO" &6c2c 41 c3 ; &a5 : "AC" &6c2e 41 c6 ; &a6 : "AF" &6c30 45 c9 ; &a7 : "EI" &6c32 45 d8 ; &a8 : "EX" &6c34 4f c7 ; &a9 : "OG" &6c36 53 d7 ; &aa : "SW" &6c38 41 c4 ; &ab : "AD" &6c3a 53 cc ; &ac : "SL" &6c3c 41 cb ; &ad : "AK" &6c3e 4d cf ; &ae : "MO" &6c40 4d c9 ; &af : "MI" &6c42 49 d2 ; &b0 : "IR" &6c44 4f cd ; &b1 : "OM" &6c46 45 d0 ; &b2 : "EP" &6c48 57 c5 ; &b3 : "WE" &6c4a 47 c9 ; &b4 : "GI" &6c4c 54 d2 ; &b5 : "TR" &6c4e 42 c5 ; &b6 : "BE" &6c50 50 c8 ; &b7 : "PH" &6c52 41 d3 ; &b8 : "AS" &6c54 45 c5 ; &b9 : "EE" &6c56 45 d6 ; &ba : "EV" &6c58 44 d2 ; &bb : "DR" &6c5a 53 c8 ; &bc : "SH" &6c5c 57 c8 ; &bd : "WH" &6c5e 46 cc ; &be : "FL" &6c60 55 d3 ; &bf : "US" &6c62 4f d7 ; &c0 : "OW" &6c64 50 cc ; &c1 : "PL" &6c66 44 d5 ; &c2 : "DU" &6c68 44 c1 ; &c3 : "DA" &6c6a 52 d5 ; &c4 : "RU" &6c6c 49 c7 ; &c5 : "IG" &6c6e 55 d0 ; &c6 : "UP" &6c70 42 c9 ; &c7 : "BI" &6c72 42 d5 ; &c8 : "BU" &6c74 42 d2 ; &c9 : "BR" &6c76 46 d2 ; &ca : "FR" &6c78 50 c1 ; &cb : "PA" &6c7a 41 d9 ; &cc : "AY" &6c7c 45 d9 ; &cd : "EY" &6c7e 42 d9 ; &ce : "BY" ; ADCODE4 ; 007f40 007f40 0000c0 # Loaded at &6c80 - &6d3f ; string_table_three ; string_300 &6c80 fd 53 cf 14 cf 89 fb cf 84 56 0a 2a 1f fb cf 28 ; "A massive alligator emerges from the dark water! The creature, &6c90 f8 2a cf 4c f9 cf df fb 2b cf 5f f9 2c 9d 51 39 ; cold and malevolent, has not seen you! " &6ca0 50 38 f8 d0 ; string_301 &6ca4 fd 2a cf 13 cf 89 fb cf 8b 56 3b 2a cf 28 fb cf ; "The enormous alligator submerges in the water before you. &6cb4 0f 38 f6 cf 8c e7 f4 f9 66 56 cf 3a e8 44 e3 fb ; Suddenly, its gaping mouth closes around you, squashing you until &6cc4 08 56 cf 9f fb 38 f9 ee 9f b8 e3 37 35 81 60 e7 ; your blood reddens the surrounding water! " &6cd4 fb 38 55 cf f5 46 df 5f 56 2a cf 95 37 cf 28 f8 &6ce4 d0 ; string_302 &6ce5 fd 35 64 f1 4f 03 53 cf a2 f8 d0 ; "You have made a catapult! " ; string_303 &6cf0 fd 35 e8 79 76 df f8 d0 ; "You missed! " ; string_304 &6cf8 fe 0a 2a dd 41 4d fb 2b cf 80 ef f2 c5 fe d0 ; "(from the bandage and forked twig)" ; string_305 &6d07 fd 23 fb cf 9f f8 d0 ; "Look around! " ; string_306 &6d0e fd 35 36 cf d7 37 94 fb e8 f0 82 fb 0d 35 8c ee ; "You are carrying so much that you lose your balance and stumble!" &6d1e 4f 38 55 cf e4 4f 2b cf d0 f8 d0 ; string_307 &6d29 fd de 70 bc f8 d0 ; "Crash! " ; string_308 &6d2f fd 0d 4e cf e0 f8 d0 ; "That is dangerous! " ; string_309 &6d36 fd cf f9 fb 64 9a 5f ee f6 d0 ; "Nothing happens. " ; MYO ; 003800 003800 0003fd # Loaded at &6d80 ; string_table_four ; string_400 &6d80 fd dc 56 35 cf ba fb 2a 25 f9 2a a1 50 cf 8a 43 ; "As you cross the road, the men leap at you! You struggle but &6d90 38 f8 35 cf c7 fb 29 cf 0f 13 fb cf ef cf 61 cf ; before long find yourself bound in the back of the lorry between &6da0 4f fb 3b 2a 0f 3c 2a cf 67 fb cf b9 fb cf 86 56 ; bundles of coca leaves! Hours later, after a long and &6db0 3c 6e de 53 cf 15 f8 e3 47 56 e7 62 5a f9 cf fd ; uncomfortable journey, the lorry halts outside a large mansion. &6dc0 53 13 fb 2b 81 cf 1c 02 fb e5 47 7a f4 f9 2a cf ; You are dragged from the back and bundled inside. " &6dd0 67 fb 64 e7 ef 56 44 21 fb 53 0b fb cf 3b f6 35 &6de0 36 cf 90 0a 2a 0f 2b cf 86 52 59 21 f6 d0 ; string_401 &6dee ff fd cf 58 fd e3 5c ee 63 f6 77 3f 56 cf 9f fb ; ""Rick Hanson. Always around where you are not wanted! "" &6dfe cf 22 35 36 9d 51 f2 5c 61 df f8 ff d0 ; string_402 &6e0b ff fd cf 17 f8 ff fb 35 cf c8 f9 cf 77 43 2a 75 ; ""Arch! " You shout, staring at the man before you. "You &6e1b 50 cf 0f 38 f6 fb ff fd 35 cf bb 37 cf bc f8 2a ; disgusting creep! The last time I saw you, you were pushing smack &6e2b 7b ee 51 60 e8 4f fd 57 9e f2 fb 38 f9 35 f2 5a ; on a back street corner. I'd 'a' killed you then if K hadn't &6e3b 4f cf d2 37 ee 75 a0 fb 3d 53 0f cf 1b cf aa f6 ; stopped me! "" &6e4b e4 fc 52 fc dc fc fb e6 96 73 52 35 40 50 e4 e1 &6e5b fb fd e6 fb 64 df e9 fc 51 68 ea eb 99 52 a1 f8 &6e6b ff d0 ; string_403 &6e6d ff fd 58 49 56 82 5c 8b f6 e4 fc e8 fb 2a 84 ee ; ""Things change. I'm the boss here! " He replies. "Please make &6e7d 56 e3 5a e0 f8 ff fb e3 4f cf 5c f6 fb ff fd cf ; yourself comfortable. You have the run of the house. Only stay &6e8d 44 75 e6 4f cf 61 cf 1c 02 f6 35 64 f1 4f 2a 42 ; inside! This is a dangerous place! "" &6e9d fb 3c 2a cf 34 f6 0e 68 dc 54 59 21 f8 11 4e 53 &6ead cf e0 fb cf 83 f8 ff d0 ; string_404 &6eb5 fd 3e 4e 72 ea fb 0b f8 d0 ; "It is too large! " ; string_405 &6ebe fd cf 17 fb e3 41 56 35 53 cf 93 22 77 e7 56 2b ; "Arch hands you a pair of overalls and wanders away. " &6ece cf a5 56 dc 3f f6 d0 ; string_406 &6ed5 fd 35 8e 86 fb 2a 0b fb dd 65 e7 6f 55 1c fb 2a ; "You roll the large boulder down the steps and it disappears from &6ee5 26 56 2b 3e cf ca 56 0a f1 e4 e0 f2 f6 ae 2f 56 ; view. Moments later, there is an enormous crash! " &6ef5 e7 62 5a f9 00 4e dc 50 cf 13 de 70 bc f8 d0 ; string_407 &6f04 3e cf 57 fa ff fd 2a cf 06 fb cf ed ff f9 29 2a ; "it says: "The mountain passage", but the markings are so small &6f14 e8 5e e6 49 56 36 94 fb 0c fb 0d 35 de 5c 9d 51 ; that you cannot understand them! " &6f24 12 01 fb 40 e8 f8 d0 ; string_408 &6f2b 2a cf 06 fb cf ed fb 4e 06 f9 06 18 f9 06 17 f9 ; "the mountain passage is north, northwest, northeast, up, south, &6f3b c6 f9 fb 07 f9 07 17 f9 18 f9 18 fb 2b 18 fb cf ; southeast, west, west and west again! " &6f4b bd f8 d0 ; string_409 &6f4e 2a f2 ed 66 37 4e f1 5a 54 0c fb 2b 4e 81 cf b8 ; "the writing is very small and is undiscernible! " &6f5e cf fe f8 d0 ; string_40a &6f62 3e 59 2e 56 35 cf 82 75 e6 37 53 75 e2 e9 e4 e1 ; "it informs you about making a magnifier from a glass jar filled &6f72 e4 e0 55 0a 53 cf 37 e5 dc 55 cf 4d 09 cf a1 cf ; with clear water! " &6f82 28 f8 d0 ; string_40b &6f85 3e 4e 53 13 f9 cf ae 6b 68 69 54 3c 2a cf 3b fb ; "it is a long, ancient history of the mansion which informs you of &6f95 04 59 2e 56 35 3c 53 76 de 5b 51 cf ed fb f0 76 ; a secret passage used in years gone by! " &6fa5 52 3b f4 e0 5e 56 e2 63 4f ce f8 d0 ; string_40c &6fb1 3e 4e 53 16 fb a5 de 65 e9 51 3c 2a cf 2c 2b 5b ; "it is a short account of the growth and refinement of coca leaves &6fc1 e1 59 e0 2f fb 3c 6e de 53 cf 15 fb 59 3a 6e 80 ; into cocaine. " &6fd1 59 e0 f6 d0 ; string_40d &6fd5 3e 4e 53 0b fb 62 7b ee f6 35 39 fb 0d 2a cf 3b ; "it is a large atlas. You see that the mansion is only a short &6fe5 fb 4e 0e 53 16 fb cf 12 fb 0a 2a cf bf f8 d0 ; distance from the border! " ; string_40e &6ff4 3e 4e 53 70 81 82 54 9d 6d e7 fb 3c cf fb bf 4f ; "it is a raunchy novel of little use to you! " &7004 3a 38 f8 d0 ; string_40f &7008 fd 35 cf d0 fb 3b 2a 1f e9 67 ee f8 d0 ; "You stumble in the darkness! " ; string_410 &7015 fd 2a 05 cf 34 fb a4 e0 56 d0 ; "The lighthouse goes " ; string_411 &701f 63 f6 d0 ; "on. " ; string_412 &7022 44 f6 d0 ; "out. " ; string_413 &7025 fd 00 4e 53 90 62 37 cf c6 fb 2b 2a cf f3 fb 08 ; "There is a grating sound and the tunnel closes! " &7035 ee f8 d0 ; string_414 &7038 fd 2a cf fa 4e 72 ea fb 9c ef f8 d0 ; "The fire is too hot! " ; string_415 &7044 fd 35 5f 61 55 2a cf 1a fb cf f3 fb 2b 26 fb 3d ; "You enter the narrow tunnel and step on a pressure pad! The walls &7054 53 cf f4 f0 ed 4f eb ab f8 2a 19 56 08 fb 59 f8 ; close in! " &7064 d0 ; string_416 &7065 fd cf f9 fb cf cb 56 3a 64 9a 5f f6 d0 ; "Nothing appears to happen. " ; string_417 &7072 fd 2a e3 69 50 cf c6 56 2b cf 75 56 42 fb 59 3a ; "The horn sounds and guards run into the garage carrying pistols! &7082 2a e2 5e 4d fb cf d7 37 cf c4 ee f8 40 54 39 fb ; They see you and take aim. " &7092 35 2b 7c e6 4f a3 e8 f6 d0 ; string_418 &709b 53 0b f9 cf 85 fb 2b cf 46 fb ee 92 e6 4f cf 7f ; "a large, black and yellow snake slithers by! " &70ab 56 ce f8 d0 ; string_419 &70af 53 0c f9 cf 48 fb e1 8e e2 fb cf cb ee f6 3e de ; "a small, green frog appears. It croaks and then hops away! " &70bf 8e ad 56 2b 40 50 9c eb 56 dc 3f f8 d0 ; string_41a &70cc 53 0c f9 cf 85 fb 2b cf 47 fb e8 63 e6 e0 54 cf ; "a small, black and white monkey emerges from the undergrowth, sees &70dc 84 56 0a 2a 12 e2 8e f2 58 f9 39 56 35 2b cf ca ; you and disappears! " &70ec ee f8 d0 ; string_41b &70ef 53 0c fb dd b0 52 09 cf 08 e1 f0 e7 f9 cf 25 37 ; "a small bird with colourful, dazzling plumage is overhead! " &70ff c1 88 4d fb 4e 22 5d ab f8 d0 ; string_41c &7109 53 0b fb 5b eb 60 e7 4f cf cb ee f6 2a cf 4c fb ; "a large reptile appears. The creature sees you and runs away! " &7119 39 56 35 2b 42 56 dc 3f f8 d0 ; string_41d &7123 cf 5a fb 6f cf d4 fb dd 54 fd 8e dd fb 2b fd af ; "adventure design by Rob and Mike O'Leary. Programmed by Robert &7133 e6 4f fd ea fc fd 73 5e f4 f6 87 a9 70 e8 a1 52 ; O'Leary with the aid of Midge 3 and the Robico Advanced Parser. " &7143 dd 54 fd 8e dd 5a 51 fd ea fc fd 73 5e 54 09 2a &7153 a3 52 3c fd af df e2 4f d4 fb 2b 2a fd 8e c7 6e &7163 fb fd ab f1 5c de e0 52 fd eb 5e ee 5a f6 d0 ; string_41e &7172 fd 5a f9 9d f6 d0 ; "Er, no. " ; string_41f &7178 fd f4 67 f8 d0 ; "Yes! "