• Contact
  • Journal
  • Home
  • TRS80
  • Pyramid
  • Code
  • Site
  • Page
  • Amiga
    • Rainbow Islands
      • 1loader-dec
      • 1loader
      • boot
      • orig-boot
      • Journal
  • Arcade
    • Asteroids 80%
      • Hardware
      • RAMUse
      • Code

      • DVG
      • VectorROM

      • Journal
    • Crazy Climber 1%
      • BigSpriteGraphics.pdf
      • Buildings.pdf
      • cclimber.asm
      • CharEnc.inc
      • CrazyClimberMemoryMapInfo.pdf
      • GraphicsAndCharacterAssetInfo.pdf
      • MemoryMap.inc
    • Defender 75%
      • RAMUse
      • Hardware
      • Bank1
      • Bank2
      • Bank3
      • Bank7
      • BankFixed
      • Mapping.txt
      • SoundHardware
      • SoundRAMUse
      • SoundCode
      • Defender-Theory-Early.pdf
      • Defender-Theory-Later.pdf
      • Defender.CPU.jpg
      • Defender.ROM.B&W.jpg
      • Defender.Vid.B&W.jpg
      • SoundROM.txt
    • Frogger (Sound)
      • SoundHardware
      • SoundRAMUse
      • SoundCode

      • Hardware
      • RAMUse
      • Code

      • GFX

      • Journal
    • Galaga 5%
      • CPU1 (Main)
      • CPU2 (Secondary)
      • CPU3 (Sound)
      • GFX1 (Characters)
      • GFX2 (Sprites)
      • PROMcolors
      • PROMpaletteChar
      • PROMpaletteSprite

      • CPU1Fix

      • Journal
    • Moon Patrol 75%
      • Hardware
      • RAMUse
      • Code

      • GFX1 (Text)
      • GFX2 (Sprites)
      • GFX3 (Mountains)
      • GFX4 (Hills)
      • GFX5 (City)
      • ImageBackgroundColors
      • SpriteColors
      • SpriteColorSets
      • TextColors

      • MoonPatrolSound
      • SoundHardware
      • SoundRAMUse
      • SoundCode

      • Journal
    • Omega Race 10%
      • Hardware
      • RAMUse
      • MainBoard

      • SoundHardware
      • SoundRAMUse
      • SoundBoard

      • DVGPROM
      • VectorROM

      • Journal
    • Phoenix 70%
      • Hardware
      • RAMUse
      • Code

      • Background
      • Foreground

      • Journal

      • Scramble HHi
        • phoenixj-func-main2.pdf
        • phoenixj-func-main2.scap
        • phoenixj.asm-may2025.txt
        • phoenixj.asm-may2025.txt.pdf
    • Space Invaders
      • invaders.asm
      • Hardware
      • RAMUse
      • Code

      • Journal
    • Time Pilot (Sound)
      • SoundHardware
      • SoundRAMUse
      • SoundCode

      • Hardware
      • RAMUse
      • Code

      • Journal
    • Sea Wolf 1%
      • Hardware
      • RAMUse
      • Code

      • Journal
    • Scramble 1%
      • SoundHardware
      • SoundRAMUse
      • SoundCode

      • Journal
  • Atari2600
    • Stella (Hardware Info)
    • Asteroids 5%
      • RAMUse
      • Code

      • Journal
    • Battle Zone 1%
      • RAMUse
      • Code

      • Journal
    • Chess 1%
      • RAMUse
      • Code

      • Journal
    • Combat 10%
      • RAMUse
      • Code
      • CodePAL

      • Journal
    • Double Gap
      • Code
      • DoubleGap.asm

      • Journal
    • Entombed 1%
      • RAMUse
      • Code

      • Journal
    • ET 1%
      • RAMUse
      • Code

      • Journal
    • Burger Time 1%
      • RAMUse
      • CodeBank0
      • CodeBank1
      • CodeBank2
      • CodeBank3
      • CodeBank4
      • CodeBank5
      • CodeBank6
      • CodeBank7

      • Journal
    • Missile Command 1%
      • RAMUse
      • Code

      • Journal
    • Space Invaders 1%
      • RAMUse
      • Code

      • Journal
  • CoCo
    • Hardware
    • Early Work
    • Pyramid
      • RAMUse
      • Code

      • Journal
    • Raaka Tu
      • RAMUse
      • Code

      • Journal
    • Bedlam
      • RAMUse
      • Code

      • Journal
    • Madness & Minotaur
      • Walk Through
        • after_start.txt
        • after_start.cas
        • after_1.txt
        • after_1.cas
        • after_2.txt
        • after_2.cas
        • after_3.txt
        • after_3.cas
        • after_4.txt
        • after_4.cas
        • after_5.txt
        • after_5.cas
        • after_6.txt
        • after_6.cas
        • after_7.txt
        • after_7.cas
        • after_8.txt
        • after_8.cas
        • after_9.txt
        • after_9.cas
        • after_10.txt
        • after_10.cas
        • after_11.txt
        • after_11.cas
        • after_12.txt
        • after_12.cas
        • after_13.txt
        • after_13.cas
        • after_14.txt
        • after_14.cas
        • after_15.txt
        • after_15.cas
        • after_16.txt
        • after_16.cas
        • after_17.txt
        • after_17.cas
        • after_18.txt
        • after_18.cas
        • after_19.txt
        • after_19.cas
        • after_20.txt
        • after_20.cas
        • after_21.txt
        • after_21.cas
        • after_22.txt
        • after_22.cas
        • after_23.txt
        • after_23.cas
        • after_24.txt
        • after_24.cas
        • after_25.txt
        • after_25.cas
      • RAMUse
      • Code

      • SaveGameViewer

      • Journal
    • Mega-Bug
      • RAMUse
      • Code

      • Journal
    • Popcorn
      • RAMUse
      • Code

      • Journal
    • Daggorath
      • RAMUse
      • Code

      • Level Maps

      • Journal
    • Downland 5%
      • RAMUse
      • Code

      • Journal
    • Audio Analyzer 5%
      • RAMUse
      • Code

      • Journal
    • Doubleback
      • RAMUse
      • Code

      • Journal
  • NES
    • Zelda 5%
      • Hardware
      • RAMUse
      • Bank0
      • Bank1
      • Bank2
      • Bank3
      • Bank4
      • Bank5
      • Bank6
      • Bank7

      • Journal
    • Kid Icarus 1%
      • Hardware
      • RAMUse
      • Bank0
      • Bank1
      • Bank2
      • Bank3
      • Bank4
      • Bank5
      • Bank6
      • Bank7

      • Journal
  • Gameboy
    • Hardware
    • Link's Awakening 1%
      • RAMUse
      • Bank00
      • Bank01
      • Bank02
      • Bank03
      • Bank04
      • Bank05
      • Bank06
      • Bank07
      • Bank08
      • Bank09
      • Bank0A
      • Bank0B
      • Bank0C
      • Bank0D
      • Bank0E
      • Bank0F
      • Bank10
      • Bank11
      • Bank12
      • Bank13
      • Bank14
      • Bank15
      • Bank16
      • Bank17
      • Bank18
      • Bank19
      • Bank1A
      • Bank1B
      • Bank1C
      • Bank1D
      • Bank1E
      • Bank1F

      • Journal
    • Tetris 1%
      • RAMUse
      • Code

      • Journal
  • TRS80
    • HardwareLevel2
    • HardwareLevel1
    • HardwareDisk
    • HauntedHouse
      • RAMUse1
      • Code1
      • RAMUse2
      • Code2

      • Journal
    • Pyramid
      • RAMUse
      • Code

      • RAMUse1
      • Code1

      • Journal
    • RaakaTu
      • RAMUse
      • Code

      • Journal
    • Bedlam
      • RAMUse
      • Code

      • Journal
    • Xenos
      • RAMUse
      • Code
      • Section1
      • Section2
      • Section3
      • Section4
      • Section5
      • Section6
      • Section7
      • Section8
      • Section9
      • SSVDOBJS
      • USVDOBJS

      • Journal
  • Virus
    • Morris Worm 1%
      • Journal
    • Stoned
      • Journal

  • Tools
    • Blend
      • blend.zip

      • Journal
  • Pyramid (For TRS80 Level 2 ROM)
  • Start
  • Get Object Info
  • Process Room Scripts
  • Run Script
  • Script Command PASS
  • Script Command FAIL
  • COM_07_stop_if_pass()
  • Parse User Input
  • Tokenize the input
  • Print Packed
  • Wait for key
  • Print Char
  • Prompt And Read Line
  • Input Buffer
  • Packed strings
  • Character Table
  • Room Table
  • Room Scripts
  • Ambient Light Table
  • Object Data
  • Game Variables
  • Object Info
  • Script Commands
  • After Every Step
  • COM_01_move_look(room_num)
  • COM_18_move_object_to_current_room(obj_num)
  • COM_19_put_object_in_container_print_ok(obj_num, obj_num)
  • COM_02_is_in_pack(obj_num)
  • COM_03_is_in_pack_or_current_room(obj_num)
  • COM_1A_is_in_current_room(obj_num)
  • COM_0D_is_pack_just_emerald()
  • COM_0A_pyramid_crawl_move_random(value)
  • COM_0C_move_to_room_if_was_last(room_num)
  • COM_16_get_users_object_print_ok()
  • COM_04_print(ps_num)
  • COM_0B_drop_object_print_ok(obj_num)
  • COM_0E_move_to_last_room()
  • COM_0F_print_inventory()
  • COM_10_print_room_description()
  • COM_11_is_object_user_input(obj_num)
  • COM_12_get_from_room_print_ok(obj_num)
  • COM_17_drop_users_object_print_ok()
  • COM_14_print_ok()
  • COM_15_move_object_to_room(obj_num, room_num)
  • COM_05_death_and_resurrect()
  • COM_08_print_score()
  • COM_09_end_of_game()
  • COM_1B_load_game()
  • COM_1C_save_game()
  • COM_1D_scramble_directions_print_ack()
    • Word Table
  • General Command Handler
  • Room descriptions (packed)
  • Object descriptions (packed)
  • Miscalaneous messages (packed)

Pyramid (For TRS80 Level 2 ROM)

RAM Usage

Hardware Info

Start

Start:
4300: 31 BF 47        LD      SP,TopOfStack       ; Small stack space
4303: 3E 0E           LD      A,$0E               ; Turn on ....
4305: CD 33 00        CALL    PrintChar           ; ... the cursor
4308: 21 82 47        LD      HL,WelcomeMsg       ; "WELCOME TO PYRAMID!!"
430B: CD D0 45        CALL    PrintPlain          ; Print the message
430E: CD EE 45        CALL    WaitForKey          ; Wait for a key

4311: 3E 01           LD      A,$01               ; Starting room is ...
4313: 32 3F 50        LD      (currentRoom),A     ; ... room 1
4316: CD 45 52        CALL    DescribeRoom        ; Print room description

GameLoop:
4319: 97              SUB     A                   ; A=0
431A: 32 7B 46        LD      (inputNoun),A       ; Clear noun (object within reach)
431D: 32 7C 46        LD      (inputVerb),A       ; Clear verb (throw, north, rub, etc)
4320: 32 7D 46        LD      (verbGrammar),A     ; Grammar type (verb, verb+nounInReach, verb+nounInPack)
4323: CD CF 43        CALL    ParseUserInput      ; Get user input line and parse
4326: 3A 3F 50        LD      A,(currentRoom)     ; Room number
4329: 21 88 48        LD      HL,RoomTable        ; Room descriptors
432C: CD 6B 43        CALL    TableOffsetFourBytes; Get 4 bytes for room
432F: 23              INC     HL                  ; Skip over ...
4330: 23              INC     HL                  ; ... to room's script pointer
4331: 7E              LD      A,(HL)              ; Script ...
4332: 23              INC     HL                  ; ... pointer ...
4333: 66              LD      H,(HL)              ; ... to ...
4334: 6F              LD      L,A                 ; ... HL
4335: CD 7D 43        CALL    ProcessRoomScript   ; Process the room script
4338: C2 4A 43        JP      NZ,$434A            ; ZF clear ... script was successful. Move on.
433B: 21 B0 59        LD      HL,GeneralComScript ; General script
433E: CD 7D 43        CALL    ProcessRoomScript   ; Process the script
4341: C2 4A 43        JP      NZ,$434A            ; Process the script
4344: 21 71 74        LD      HL,PS_7F            ; General fail message (one of 4 that changes)
4347: CD AE 45        CALL    PrintPacked         ; Print message
434A: CD D9 50        CALL    AfterEveryStep      ; After every turn
434D: C3 19 43        JP      GameLoop            ; Back to get user input

Get Object Info

Every object has a room number. The object might be physically in the room. Or the object might be inside another object that is physically in the room -- or so on recursively.

This function traverses the containers to find out the room number this object and any containers are in.

GetObjectInfo:
; Recurse through carriers to find the room number of the requested object.
; Return HL points to the top level object entry.
; Return ZF is set if top level object room number matches E.
4350: 21 E7 4F        LD      HL,ObjectData       ; Information about all the objects
4353: CD 61 43        CALL    TableOffsetTwoBytes ; Room number to 2-byte table entry
4356: 7E              LD      A,(HL)              ; Upper bit set means 2nd byte is object number
4357: E6 80           AND     $80                 ; Is this object being carried by another?
4359: 23              INC     HL                  ; Second byte (S is not affected)
435A: 7E              LD      A,(HL)              ; Get location (S is not affected)
435B: C2 50 43        JP      NZ,GetObjectInfo    ; If this is being carried, recurse to the carrier
435E: 2B              DEC     HL                  ; Back to first entry for return
435F: BB              CP      E                   ; Room number matches E?
4360: C9              RET                         

TableOffsetTwoBytes:
; HL = HL + (A-1)*2
; Notice that the first index is "1" -- not "0".
4361: D5              PUSH    DE                  ; Hold DE
4362: EB              EX      DE,HL               ; HL to DE for later add
4363: 6F              LD      L,A                 ; LSB ...
4364: 2D              DEC     L                   ; ... minus one
4365: 26 00           LD      H,$00               ; Upper byte is 0
4367: 29              ADD     HL,HL               ; Times 2 (2 byte entries)
4368: 19              ADD     HL,DE               ; Offset into table
4369: D1              POP     DE                  ; Restore DE
436A: C9              RET                         ; HL = HL + (A-1)*2

TableOffsetFourBytes:
; HL = HL + (A-1)*4
436B: D5              PUSH    DE                  ; Hold DE
436C: EB              EX      DE,HL               ; HL to DE for later add
436D: 6F              LD      L,A                 ; LSB ...
436E: 2D              DEC     L                   ; ... minus one
436F: 26 00           LD      H,$00               ; Upper byte is 0
4371: 29              ADD     HL,HL               ; Times 2
4372: 29              ADD     HL,HL               ; Times 4 (4 byte entries)
4373: 19              ADD     HL,DE               ; Offset into table
4374: D1              POP     DE                  ; Restore DE
4375: C9              RET                         ; HL = HL + (A-1)*4

SetObjectLocation:
; Set object's location by recursing containers to the top
; level container and setting the room number.
; E is the new room number for the top level container
4376: CD 50 43        CALL    GetObjectInfo       ; Find the parent container
4379: 23              INC     HL                  ; Second entry is location
437A: 73              LD      (HL),E              ; Set the room number of the parent container
437B: 2B              DEC     HL                  ; Back to 1st entry
437C: C9              RET                         

Process Room Scripts

Each room is a collection of verb and the script commands that go with each verb. We look through the verb-map for the room and run the list of script commands for that verb.

As soon as an individual command fails, we stop the processing of the list. As long as the commands are passing, we continue to run them.

Interestingly, if a command list for a verb FAILS, we continue looking for verb matches in the collection. That allows for multiple command lists to be given for the same verb.

If the user verb matches the collection and all the commands pass, we return with NOT ZERO as a sign of success. If there is no match or if any of the commands fail, we return with ZERO as a sign of failure.

; Process the user input against the script for a room
ProcessRoomScript:
437D: 7E              LD      A,(HL)              ; Next byte from script
437E: A7              AND     A                   ; Are we at the end?
437F: C8              RET     Z                   ; Yes, we are done. Return ZERO as FAIL.
;
4380: 3A 7C 46        LD      A,(inputVerb)       ; User's input verb
4383: BE              CP      (HL)                ; Does the input verb match the script verb?
4384: 23              INC     HL                  ; Point to next byte
4385: CA 8F 43        JP      Z,$438F             ; Yes, dive into this script
4388: 4E              LD      C,(HL)              ; No, get the length of this verb section
4389: 06 00           LD      B,$00               ; No script section over 256 bytes!
438B: 09              ADD     HL,BC               ; Jump to next section
438C: C3 7D 43        JP      ProcessRoomScript   ; Try next script verb
;
438F: CD 96 43        CALL    RunScript           ; Run the script
4392: C0              RET     NZ                  ; All the commands passed. Return not ZERO as SUCCESS
4393: C3 7D 43        JP      ProcessRoomScript   ; In case there are duplicate verbs -- others might succeed

Run Script

RunScript:
4396: E5              PUSH    HL                  ; Hold the script pointer
4397: 4E              LD      C,(HL)              ; Get the length
4398: 06 00           LD      B,$00               ; Point past the end ...
439A: 09              ADD     HL,BC               ; ... of the script
439B: E3              EX      (SP),HL             ; Now the end of the script is on the stack
439C: 23              INC     HL                  ; Next byte is the command
;
RunScriptCommand:
439D: 7E              LD      A,(HL)              ; Get the command number
439E: 23              INC     HL                  ; Next command in the script
439F: E5              PUSH    HL                  ; Hold current pointer
43A0: 21 9F 50        LD      HL,ScriptCommands   ; Table of script commands
43A3: CD 61 43        CALL    TableOffsetTwoBytes ; Offset into table
43A6: 7E              LD      A,(HL)              ; Hold LSB from table
43A7: 23              INC     HL                  ; Get the ...
43A8: 66              LD      H,(HL)              ; ... msb to H
43A9: 6F              LD      L,A                 ; HL now points to the routine to run
43AA: E9              JP      (HL)                ; Execute command (then to ScriptCommandPASS or FAIL below)

Script Command PASS

When an individual command succeeds, it comes here. If we reached the end of the list (all commands passed) then we return Z=0 PASS. Otherwise, we continue to the next command.

ScriptCommandPASS:
43AB: E1              POP     HL                  ; The current script pointer
43AC: D1              POP     DE                  ; The calculated end of the script
43AD: 7C              LD      A,H                 ; Are we at the ...
43AE: BA              CP      D                   ; ... end of the script (LSB)?
43AF: C2 BA 43        JP      NZ,$43BA            ; No ... keep going
43B2: 7D              LD      A,L                 ; Are we at the ...
43B3: BB              CP      E                   ; ... end of the script (MSB)?
43B4: C2 BA 43        JP      NZ,$43BA            ; No ... keep going
43B7: F6 01           OR      $01                 ; Z=0 PASS
43B9: C9              RET                         
;
43BA: D5              PUSH    DE                  ; Put the calculated end of script back on stack
43BB: C3 9D 43        JP      RunScriptCommand    ; Run the next command

Script Command FAIL

When an individual command fails, it comes here. We return Z=1 FAIL. No more commands in this script are run.

ScriptCommandFAIL:
43BE: E1              POP     HL                  ; Pop the script pointer
43BF: E1              POP     HL                  ; Pop the calculated end of the script
43C0: AF              XOR     A                   ; Z=1 FAIL
43C1: C9              RET                         

COM_07_stop_if_pass()

Run a sublist of commands. If all the commands in the sublist pass, we abort the current script we are in with a PASS. If a command in the subscript fails, we continue in the current script at the next command beyond the failed subscript.

In other words: if the sublist passes, then abort the script with a PASS. Otherwise, continue on to the next command after the sublist.

There are a few places in Pyramid and Haunted House that nest these sublists, but never more than two levels deep total.

All of the other commands are "do something" commands. This command provides "if/else" abilities to the scripts.

COM_07_stop_if_pass:
43C2: E1              POP     HL                  ; Get the current script pointer
43C3: CD 96 43        CALL    RunScript           ; Run the list of commands
43C6: E5              PUSH    HL                  ; Current script position
43C7: CA AB 43        JP      Z,ScriptCommandPASS ; The list failed. PASS into the next command.
; The subscript failed. Bail out (with a PASS)
43CA: E1              POP     HL                  ; Get the current pointer
43CB: E1              POP     HL                  ; Get the calculated end of list
43CC: F6 01           OR      $01                 ; Return Z=0 PASS
43CE: C9              RET                         ; Return from ALL command processing, not just this command

Parse User Input

ParseUserInput:
43CF: CD 05 46        CALL    PromptAndReadLine   ; Get the command line from the player
43D2: CD A2 44        CALL    ParseInputString    ; Parse the input string
43D5: 2A AA 45        LD      HL,(nounDataPtr)    ; Pointer to the noun word
43D8: 3A A8 45        LD      A,(nounDataSize)    ; Number of bytes ...
43DB: 47              LD      B,A                 ; ... in word data
43DC: 3A 7D 46        LD      A,(verbGrammar)     ; Verb grammar
43DF: FE 03           CP      $03                 ; Value 3 means stand alone verb
43E1: CA CF 43        JP      Z,ParseUserInput    ; We needed a noun before but didn't get one. Get it now.
43E4: 3A 7B 46        LD      A,(inputNoun)       ; Do we have ..
43E7: A7              AND     A                   ; ... a noun?
43E8: C2 1C 44        JP      NZ,$441C            ; Yes, go check it
43EB: 3A 7C 46        LD      A,(inputVerb)       ; Otherwise, do we have ...
43EE: A7              AND     A                   ; ... a verb?
43EF: C2 0D 44        JP      NZ,$440D            ; Yes, go handle it
;
; General error message ... didn't understand a thing
43F2: 3A 7E 46        LD      A,(nextErrorNum)    ; Last general error message
43F5: 3C              INC     A                   ; Point to next
43F6: E6 03           AND     $03                 ; Roll around over 4 messages
43F8: 32 7E 46        LD      (nextErrorNum),A    ; For next time
43FB: 21 7F 46        LD      HL,PtrErrorString1  ; Table of general error messages
43FE: 07              RLCA                        ; Two bytes each
43FF: 4F              LD      C,A                 ; All ...
4400: 06 00           LD      B,$00               ; ... this ...
4402: 09              ADD     HL,BC               ; ... to ...
4403: 7E              LD      A,(HL)              ; ... add ...
4404: 23              INC     HL                  ; ... C ...
4405: 66              LD      H,(HL)              ; ... to ...
4406: 6F              LD      L,A                 ; ... HL
4407: CD D0 45        CALL    PrintPlain          ; Print the error
440A: C3 CF 43        JP      ParseUserInput      ; Back for more
;
440D: 3A 7D 46        LD      A,(verbGrammar)     ; Action word type
4410: FE C0           CP      $C0                 ; 11_000_000 means single word command
4412: C8              RET     Z                   ; Input is just one word, we are done
;
; We have a verb that expected a noun, but no noun was given
4413: 21 FD 46        LD      HL,unknownVerb      ; Unknown verb
4416: CD D0 45        CALL    PrintPlain          ; Print "verb WHAT?" (was expecting an object)
4419: C3 CF 43        JP      ParseUserInput      ; Try again
;
; Validate noun
441C: 22 AA 45        LD      (nounDataPtr),HL    ; Save pointer to noun word data
441F: 3A A1 44        LD      A,(isLoneObject)    ; Was the last input an object and ...
4422: A7              AND     A                   ; ...  we then asked for a verb?
4423: C2 8E 44        JP      NZ,$448E            ; Yes, skip checking the noun (use what we have)
;
4426: 7E              LD      A,(HL)              ; Get the object number
4427: 23              INC     HL                  ; Next word
4428: 22 AA 45        LD      (nounDataPtr),HL    ; Noun word data pointer
442B: 1E FF           LD      E,$FF               ; Backpack location
442D: C5              PUSH    BC                  ; Save BC
442E: CD 50 43        CALL    GetObjectInfo       ; Look up the requested object
4431: C1              POP     BC                  ; Restore BC
4432: CA 86 44        JP      Z,$4486             ; Object is actually in pack ... go use it
4435: 3A 7D 46        LD      A,(verbGrammar)     ; Grammar type
4438: FE 40           CP      $40                 ; 01_000_000 means noun-in-pack
443A: CA 4E 44        JP      Z,$444E             ; Yes, check the backpack
443D: 2A AA 45        LD      HL,(nounDataPtr)    ; Noun word pointer
4440: 2B              DEC     HL                  ; Back up the word pointer
4441: 3A 3F 50        LD      A,(currentRoom)     ; Is ...
4444: 5F              LD      E,A                 ; ... this ...
4445: 7E              LD      A,(HL)              ; ... object ...
4446: C5              PUSH    BC                  ; ... in the ...
4447: CD 50 43        CALL    GetObjectInfo       ; ... current room?
444A: C1              POP     BC                  ; Restore BC
444B: CA 86 44        JP      Z,$4486             ; Yes, go use it
;
444E: 2A AA 45        LD      HL,(nounDataPtr)    ; Restore word data pointer
4451: 05              DEC     B                   ; All objects of this name tried?
4452: C2 26 44        JP      NZ,$4426            ; No ... keep looking for matching object
;
; Object not found (either not in pack or not in room depending on verb requirements)
4455: 3A 7D 46        LD      A,(verbGrammar)     ; Grammar type
4458: FE 40           CP      $40                 ; 01_000_000 means noun-in-pack
445A: C2 63 44        JP      NZ,$4463            ; Error ... can't find noun in room
445D: 21 98 46        LD      HL,MsgNotCarrying   ; "YOU_AREN'T_CARRYING_IT."
4460: C3 7C 44        JP      $447C               ; Print error and back to try again
4463: 21 87 46        LD      HL,MsgISeeNo        ; "I_SEE_NO_"
4466: CD D0 45        CALL    PrintPlain          ; First fragment
;
4469: 3E 01           LD      A,$01               ; Replace '?' with ...
446B: 32 FB 46        LD      (unknownNounPunct),A; ... no-CR terminator.
446E: 21 D3 46        LD      HL,unknownNoun      ; Buffer for unknown word
4471: CD D0 45        CALL    PrintPlain          ; Print unknown word
4474: 3E 3F           LD      A,$3F               ; Restore the ...
4476: 32 FB 46        LD      (unknownNounPunct),A; ... question mark character
4479: 21 91 46        LD      HL,MsgHere          ; "_HERE."
447C: CD D0 45        CALL    PrintPlain          ; Print the last fragment of error
447F: 97              SUB     A                   ; Clear ...
4480: 32 7B 46        LD      (inputNoun),A       ; ... the unknown noun
4483: C3 CF 43        JP      ParseUserInput      ; Back to try again
;
; Found object
4486: 2A AA 45        LD      HL,(nounDataPtr)    ; 
4489: 2B              DEC     HL                  ; Back up to start
448A: 7E              LD      A,(HL)              ; Get the object number
448B: 32 7B 46        LD      (inputNoun),A       ; Hold the noun
448E: 3A 7C 46        LD      A,(inputVerb)       ; Get the verb
4491: A7              AND     A                   ; Noun and verb?
4492: C0              RET     NZ                  ; Yes, done
4493: 21 B0 46        LD      HL,MsgWhatDoWith    ; "WHAT_DO_YOU_WANT_ME_TO_DO_WITH_THE_"+noun+"?"
4496: CD D0 45        CALL    PrintPlain          ; Print first fragment
4499: 3E 01           LD      A,$01               ; Flag that we ...
449B: 32 A1 44        LD      (isLoneObject),A    ; ... are prompting for a verb only
449E: C3 CF 43        JP      ParseUserInput      ; Back to get user input

isLoneObject:
44A1: 00 ; 1 if a lone object was given last input

Tokenize the input

Parse the input into words.

ParseInputString:
44A2: 21 5A 46        LD      HL,inputBuffer      ; Start of user input buffer
44A5: 97              SUB     A                   ; Clear the ...
44A6: 32 A9 45        LD      (someDecoded),A     ; ... buffer-has-something flag
44A9: 32 7D 46        LD      (verbGrammar),A     ; ... and the grammar
;
44AC: 11 CE 56        LD      DE,WordTable        ; Pointer to all the words we know
44AF: EB              EX      DE,HL               ; Now HL=words we know, DE=where we are in the input
44B0: 22 79 47        LD      (currentParsePtr),HL; Hold our current spot in the word table
44B3: EB              EX      DE,HL               ; Now HL=where we are in input, DE=where we are in words
;
; Skip over blank spaces before next word
44B4: 7E              LD      A,(HL)              ; Ignore ...
44B5: FE 20           CP      $20                 ; ... all ...
44B7: C2 BE 44        JP      NZ,$44BE            ; ... leading ...
44BA: 23              INC     HL                  ; ... blank ...
44BB: C3 B4 44        JP      $44B4               ; ... spaces
44BE: 22 7B 47        LD      (inputWordPtr),HL   ; start of this word
44C1: A7              AND     A                   ; Nothing but spaces?
44C2: CA 5C 45        JP      Z,$455C             ; Yes, we are done parsing
;
44C5: 3E 01           LD      A,$01               ; There is SOMETHING ...
44C7: 32 A9 45        LD      (someDecoded),A     ; ... in the buffer
44CA: E5              PUSH    HL                  ; Hold the pointer
44CB: 1A              LD      A,(DE)              ; First byte of word table
44CC: A7              AND     A                   ; Reached the end of the table?
44CD: CA 67 45        JP      Z,$4567             ; Done tokenizing ... now have a look at the words
44D0: 32 81 47        LD      (testWord),A        ; Hold 1st byte of word being tested
44D3: E6 07           AND     $07                 ; Number of bytes ...
44D5: 4F              LD      C,A                 ; ... in ...
44D6: 32 7D 47        LD      (numCharsTest),A    ; ... current word text
44D9: 3A 81 47        LD      A,(testWord)        ; We'll need that info byte several times
44DC: E6 38           AND     $38                 ; Number ...
44DE: 0F              RRCA                        ; ... of ...
44DF: 0F              RRCA                        ; ... bytes ...
44E0: 0F              RRCA                        ; ... in ...
44E1: 47              LD      B,A                 ; word data
44E2: EB              EX      DE,HL               ; Save our current ...
44E3: 22 79 47        LD      (currentParsePtr),HL; ... position in the input
44E6: EB              EX      DE,HL               ; Shuffle our pointers back
44E7: 13              INC     DE                  ; Get next from ...
44E8: 1A              LD      A,(DE)              ; ... input buffer
44E9: BE              CP      (HL)                ; Does it match the word we are testing?
44EA: C2 4E 45        JP      NZ,FindEndOfTestWord; No, try next word
44ED: 23              INC     HL                  ; Next in input
44EE: 13              INC     DE                  ; Next in word text
44EF: 0D              DEC     C                   ; All characters of word being tested?
44F0: C2 E8 44        JP      NZ,$44E8            ; No, keep testing
44F3: 3A 7D 47        LD      A,(numCharsTest)    ; Number of characters in the test word
44F6: FE 06           CP      $06                 ; Six is the max size EXCEPT FOR "SCEPTER" WHICH IS 7 -- BUG?
44F8: CA 05 45        JP      Z,FindEndOfInputWord; Six matched ... ignore the rest of the input
;
44FB: 7E              LD      A,(HL)              ; Not six ... is the next input ...
44FC: FE 20           CP      $20                 ; ... a space?
44FE: CA 13 45        JP      Z,$4513             ; Yes ... we are ready for next word
4501: A7              AND     A                   ; Maybe the end of the input buffer?
4502: C2 53 45        JP      NZ,FindEndOfTestData; No ... not a match
;
FindEndOfInputWord:
4505: 7E              LD      A,(HL)              ; Next in buffer is ...
4506: FE 20           CP      $20                 ; ... a space?
4508: CA 13 45        JP      Z,$4513             ; Yes, end of word success
450B: A7              AND     A                   ; End of input buffer?
450C: CA 13 45        JP      Z,$4513             ; Yes, end of word success
450F: 23              INC     HL                  ; Next character in input
4510: C3 05 45        JP      FindEndOfInputWord  ; Find end of word
;
4513: 3A 81 47        LD      A,(testWord)        ; 
4516: E6 C0           AND     $C0                 ; Is the word a noun? (anything else is a verb)
4518: CA 2D 45        JP      Z,$452D             ; Yes ... record the noun
451B: 32 7D 46        LD      (verbGrammar),A     ; Hold the verb's grammar
451E: 1A              LD      A,(DE)              ; Get the verb number ...
451F: 32 7C 46        LD      (inputVerb),A       ; ... from script (lots of words might map to same number)
;
4522: E5              PUSH    HL                  ; Hold input pointer
4523: 21 FD 46        LD      HL,unknownVerb      ; Storage for unknownVerb
4526: CD 85 45        CALL    CopyWord            ; Copy input to the unknownVerb storage
4529: E1              POP     HL                  ; Restore pointer
452A: C3 46 45        JP      $4546               ; Skip spaces and next word
;
452D: 1A              LD      A,(DE)              ; Store the ...
452E: 32 7B 46        LD      (inputNoun),A       ; ... noun number (several words might match)
4531: EB              EX      DE,HL               ; Get HL into position
4532: 22 AA 45        LD      (nounDataPtr),HL    ; Store pointer to noun
4535: EB              EX      DE,HL               ; Restore pointer positions
4536: 78              LD      A,B                 ; Number of bytes ...
4537: 32 A8 45        LD      (nounDataSize),A    ; ... of data for this word
453A: 97              SUB     A                   ; Clear the ...
453B: 32 A1 44        LD      (isLoneObject),A    ; ... isLoneObject flag (we have a verb)
;
453E: E5              PUSH    HL                  ; Hold
453F: 21 D3 46        LD      HL,unknownNoun      ; Copy the ...
4542: CD 85 45        CALL    CopyWord            ; ... input noun
4545: E1              POP     HL                  ; Restore
;
4546: 7E              LD      A,(HL)              ; From input
4547: FE 20           CP      $20                 ; Is it a space?
4549: D1              POP     DE                  ; Restore
454A: CA AC 44        JP      Z,$44AC             ; Yes ... decode the next word
454D: C9              RET                         ; Done
;
FindEndOfTestWord:
454E: 13              INC     DE                  ; Skip ...
454F: 0D              DEC     C                   ; ... all characters ...
4550: C2 4E 45        JP      NZ,FindEndOfTestWord; ... in test word
;
FindEndOfTestData:
4553: 13              INC     DE                  ; Next in word text data
4554: 05              DEC     B                   ; Reached the end of the test word?
4555: C2 53 45        JP      NZ,FindEndOfTestData; No, move to the end
;
4558: E1              POP     HL                  ; Restore pointer to input
4559: C3 B4 44        JP      $44B4               ; Skip blank spaces in input
;
455C: 3A A9 45        LD      A,(someDecoded)     ; Is the buffer ...
455F: A7              AND     A                   ; ... empty?
4560: C0              RET     NZ                  ; YES, we are done
;
4561: 3E 03           LD      A,$03               ; Stand alone ...
4563: 32 7D 46        LD      (verbGrammar),A     ; ... verb
4566: C9              RET                         ; Done
;
4567: E1              POP     HL                  ; Restore pointer to input
4568: 97              SUB     A                   ; Zero the ...
4569: 32 7C 46        LD      (inputVerb),A       ; ... verb
456C: 32 7B 46        LD      (inputNoun),A       ; And the noun
456F: 7E              LD      A,(HL)              ; Next input
4570: FE 20           CP      $20                 ; Is it a space?
4572: C2 79 45        JP      NZ,SkipInputWord    ; No, go process it
4575: 23              INC     HL                  ; Skip ...
4576: C3 6F 45        JP      $456F               ; ... blank spaces
;
SkipInputWord:
4579: 7E              LD      A,(HL)              ; End of ...
457A: A7              AND     A                   ; ... user input?
457B: C8              RET     Z                   ; Yes, we are done
457C: FE 20           CP      $20                 ; Space?
457E: CA AC 44        JP      Z,$44AC             ; Yes, go lookup any word that follows
4581: 23              INC     HL                  ; Keep skipping ...
4582: C3 79 45        JP      SkipInputWord       ; ... input word

CopyWord:
4585: EB              EX      DE,HL               ; Now DE=storage
4586: 2A 7B 47        LD      HL,(inputWordPtr)   ; 
4589: 06 28           LD      B,$28               ; 40 chars max in storage for word
458B: 7E              LD      A,(HL)              ; From input buffer
458C: A7              AND     A                   ; End of the buffer?
458D: CA 9F 45        JP      Z,$459F             ; Yes ... done
4590: FE 20           CP      $20                 ; Is it a space betwen words?
4592: CA 9F 45        JP      Z,$459F             ; Yes ... done
4595: 12              LD      (DE),A              ; Store input word char to storage
4596: 23              INC     HL                  ; Next input
4597: 13              INC     DE                  ; Next storage
4598: 05              DEC     B                   ; Count down remaining storage
4599: 78              LD      A,B                 ; Storage all ...
459A: FE 01           CP      $01                 ; ... full?
459C: C2 8B 45        JP      NZ,$458B            ; No ... keep copying
459F: 3E 40           LD      A,$40               ; Fill ...
45A1: 12              LD      (DE),A              ; ... remainder of ...
45A2: 13              INC     DE                  ; ... storage ...
45A3: 05              DEC     B                   ; ... with ...
45A4: C2 9F 45        JP      NZ,$459F            ; ... the "@" character
45A7: C9              RET                         

nounDataSize:
45A8: 00 ; Number of bytes in noun's data area

someDecoded:
45A9: 00 ; 1 if something was decoded from input

nounDataPtr:
45AA: 00 00 ; Pointer to noun data

; unused
45AC: 00 00

Print Packed

PrintPacked:
; Unpack a message (or multiple packed messages) and print.
; HL is pointer to message
45AE: 7E              LD      A,(HL)              ; Next byte of data
45AF: A7              AND     A                   ; Return if we are ...
45B0: C8              RET     Z                   ; ... at the end
;
45B1: 23              INC     HL                  ; Next in string
45B2: 11 5A 46        LD      DE,inputBuffer      ; Destination buffer
45B5: CD C2 47        CALL    UnpackStringToScreen; Unpack the string
45B8: 7E              LD      A,(HL)              ; Character from string
45B9: A7              AND     A                   ; 0 means end with a carriage return?
45BA: CA E7 45        JP      Z,PrintCarriageReturn; Yes, print carriage return and out
45BD: FE 01           CP      $01                 ; 1 means end with nothing?
45BF: C8              RET     Z                   ; Yes, just return
45C0: 47              LD      B,A                 ; Print ...
45C1: E5              PUSH    HL                  ; ... the ...
45C2: CD FF 45        CALL    PrintChar           ; ... character
45C5: E1              POP     HL                  ; Restore pointer to string
45C6: 7E              LD      A,(HL)              ; Character we just printed
45C7: FE 0A           CP      $0A                 ; Line feed means start a new unpack/print?
45C9: 23              INC     HL                  ; Point to next character
45CA: CA AE 45        JP      Z,PrintPacked       ; Yes, start a new unpack/print
45CD: C3 B8 45        JP      $45B8               ; No, continue with current unpacked string

PrintPlain:
; HL points to message terminated by
;  - 0 : add a CR on the end and return
;  - 1 : no CR on the end and return
; Return with B holding last character (if any) sent to ROM routine.
;
45D0: 7E              LD      A,(HL)              ; Next character
45D1: A7              AND     A                   ; 0 means end with a line feed?
45D2: CA E7 45        JP      Z,PrintCarriageReturn; Yes, print line feed and out
45D5: FE 01           CP      $01                 ; 1 means end with nothing?
45D7: C8              RET     Z                   ; Yes, just return
45D8: FE 40           CP      $40                 ; Character is 40 (ignore)?
45DA: CA E3 45        JP      Z,$45E3             ; Yes, just ingore the character
45DD: 47              LD      B,A                 ; Print ...
45DE: E5              PUSH    HL                  ; ... the ...
45DF: CD FF 45        CALL    PrintChar           ; ... character
45E2: E1              POP     HL                  ; Restore pointer to string
45E3: 23              INC     HL                  ; Next character in string
45E4: C3 D0 45        JP      PrintPlain          ; 
;
PrintCarriageReturn:
45E7: 06 0D           LD      B,$0D               ; Print ...
45E9: 78              LD      A,B                 ; ... carriage ...
45EA: CD FF 45        CALL    PrintChar           ; ... return
45ED: C9              RET                         

Wait for key

WaitForKey:
45EE: D5              PUSH    DE                  ; ROM routine mangles this
45EF: 3A 74 47        LD      A,(keyWaitCounter)  ; Bump the ...
45F2: 3C              INC     A                   ; ... counter used for ...
45F3: 32 74 47        LD      (keyWaitCounter),A  ; ... random numbers
45F6: CD 2B 00        CALL    GetKey              ; Call the ROM routine to scan the keyboard
45F9: A7              AND     A                   ; Any key typed?
45FA: CA EF 45        JP      Z,$45EF             ; No, keep waiting
45FD: D1              POP     DE                  ; Restore our DE
45FE: C9              RET                         ; Return key in A

Print Char

PrintChar:
45FF: D5              PUSH    DE                  ; ROM routine mangles this
4600: CD 33 00        CALL    PrintChar           ; Send character A to the screen
4603: D1              POP     DE                  ; Restore our DE
4604: C9              RET                         

Prompt And Read Line

PromptAndReadLine:
4605: 06 3A           LD      B,$3A               ; Colon ":"
4607: 78              LD      A,B                 ; User starts typing after ...
4608: CD FF 45        CALL    PrintChar           ; ... the colon
460B: 21 5A 46        LD      HL,inputBuffer      ; Start of the input buffer
460E: 0E 00           LD      C,$00               ; Input character count (0 to start)
;
4610: E5              PUSH    HL                  ; Hold ...
4611: C5              PUSH    BC                  ; ... all ...
4612: D5              PUSH    DE                  ; ... our registers
4613: CD EE 45        CALL    WaitForKey          ; 
4616: D1              POP     DE                  ; Restore ...
4617: C1              POP     BC                  ; ... all ...
4618: E1              POP     HL                  ; ... our registers
4619: 47              LD      B,A                 ; Key from the user
461A: FE 08           CP      $08                 ; Backspace?
461C: CA 41 46        JP      Z,BackSpace         ; Yes, handle erasing a character
461F: 77              LD      (HL),A              ; Store the key in the bufer
4620: CD FF 45        CALL    PrintChar           ; Echo the key to the screen
4623: FE 0D           CP      $0D                 ; Was it an ENTER?
4625: CA 57 46        JP      Z,InputDone         ; Yes, we are done
4628: 0C              INC     C                   ; Increment the character count
4629: 23              INC     HL                  ; Next in buffer
462A: 11 7A 46        LD      DE,$467A            ; One past the end of the input buffer
462D: 7C              LD      A,H                 ; Overflowed the ...
462E: BA              CP      D                   ; ... buffer?
462F: DA 10 46        JP      C,$4610             ; No, keep taking keys
4632: 7D              LD      A,L                 ; Overflowed the ...
4633: BB              CP      E                   ; ... buffer?
4634: DA 10 46        JP      C,$4610             ; No, keep taking keys
4637: 06 08           LD      B,$08               ; Print ...
4639: 78              LD      A,B                 ; ... backspace to ...
463A: CD FF 45        CALL    PrintChar           ; ... ignore input
463D: 2B              DEC     HL                  ; Remove the input from the end of the buffer
463E: C3 10 46        JP      $4610               ; Back for more input

BackSpace:
4641: 2B              DEC     HL                  ; Back up the buffer pointer
4642: 3E 46           LD      A,$46               ; Underflowed the ...
4644: BC              CP      H                   ; ... buffer?
4645: DA 4E 46        JP      C,$464E             ; No ... keep it
4648: 7D              LD      A,L                 ; Underflowed the ...
4649: FE 5A           CP      $5A                 ; ... buffer?
464B: DA 0B 46        JP      C,$460B             ; Yes ... set to start of buffer
464E: 3E 08           LD      A,$08               ; Remove the character ...
4650: 47              LD      B,A                 ; ... from the ...
4651: CD FF 45        CALL    PrintChar           ; ... screen
4654: C3 10 46        JP      $4610               ; Back for more input

InputDone:
4657: 36 00           LD      (HL),$00            ; Put the null terminator on the end of the input
4659: C9              RET                         

Input Buffer

; Input buffer (with some uninitialized leftover data!)
; The buffer is 41 bytes (room for a null terminator after 40)
; Again, look 99 bytes down for the last assembly's data.
; Interestingly, the data 99 down overlaps a reserved area too,
; which lets us see the assembly BEFORE THAT!
inputBuffer:
; UNINITIALIZED MEMORY
465A: 41 4E 54 20 4D 45 20 54 4F 20 44 4F 20 57 49 54  ; WANT_ME_TO_DO_WIT
466A: 48 20 54 48 45 20 2C 41 0D 12 30 30 30 30 20 20  ; H_THE_ ,A<CR>?000__  ; 18 bytes, whatever the instruction is

; The 2nd line is long ... total length of 18, but the double space after "0000"
; means it has no leading label. The text of the line would be 10 characters. There
; are no 8080 opcodes that long, so the instruction likely references a label or
; constant (like MVI H,123H).
; 8080 instructions that end with ",A": "MOV x,A" where X is: B,C,D,E,H,L,M,A
; Z80 "LD (xxxx),A" would be a "STA" opcode. We are looking for a "LD r,A" Z80
; op followed by an instruction that references a label. There are lots and lots
; of those.

; Hole within the hole:
; --  "---------------,A"  0D  ; Must be "MOV x,A" where x is B,C,D,E,H,L,M,A
; 12  "0000  -----------"  --  ; Double-space means no label, and we know the length (10)
467A: 00 ; null terminator for input buffer

inputNoun:
467B: 00 ; The user input noun

inputVerb:
467C: 00 ; The user input verb

verbGrammar:
467D: 00 ; The phrase's grammar type

nextErrorNum:
467E: 00    ; Which error string do we show next? 0, 1, 2, or 3

PtrErrorString1:
; 61	 WHAT?
467F: 25 47 ; " WHAT?"
PtrErrorString2:
; 60	 I DON'T KNOW THAT WORD.
4681: 2C 47 ; "I DON'T KNOW THAT WORD."
PtrErrorString3:
; 13	 I DON'T UNDERSTAND THAT!
4683: 44 47 ; "I DON'T UNDERSTAND."
PtrErrorString4:
4685: 58 47 ; "I DON'T KNOW WHAT YOU MEAN."

; I_SEE_NO_
MsgISeeNo:
4687: 49 20 53 45 45 20 4E 4F 20 01

; _HERE.
MsgHere:
4691: 20 48 45 52 45 2E 00

; YOU_AREN'T_CARRYING_IT.
MsgNotCarrying:
4698: 59 4F 55 20 41 52 45 4E 27 54 20 43 41 52 52 59 49 4E 47 20 49 54 2E 00

; WHAT_DO_YOU_WANT_ME_TO_DO_WITH_THE_
MsgWhatDoWith:
46B0: 57 48 41 54 20 44 4F 20 59 4F 55 20 57 41 4E 54 20 4D 45 20 54 4F 20 44 4F 20 57 49 54 48 20 54
46D0: 48 45 20

; 40 byte buffer for unknown noun word
unknownNoun:
; UNINITIALIZED MEMORY
46D3: 4F 57 20 54 48 41 54 20 57 4F ; OW_THAT_WO
46DD: 52 44 2E 00 49 20 44 4F 4E 27 ; RD.*I_DON'
46E7: 54 20 55 4E 44 45 52 53 54 41 ; T_UNDERSTA
46F1: 4E 44 2E 00 49 20 44 4F 4E 27 ; ND.*I_DON'

unknownNounPunct:
; "?"
46FB: 3F 00 ; The code changes this depending on the sentence

; 40 byte buffer for unknown verb (followed by WHAT?)
unknownVerb:
; UNINITIALIZED MEMORY
; This is from the source code a few bytes down
46FD: 4B 4E 4F 57 20 57 48 41 54 20 ; KNOW_WHAT_
4707: 59 4F 55 20 4D 45 41 4E 2E 00 ; YOU_MEAN.*
4711: 00 00 00 00 00 00 00 00 00 00 ;
471B: 00 00 00 00 57 45 4C 43 4F 4D ;     WELCOM

ErrorString1:
;" WHAT?"
4725: 20 57 48 41 54 3F 00

ErrorString2:
; "I DON'T KNOW THAT WORD."
472C: 49 20 44 4F 4E 27 54 20 4B 4E 4F 57 20 54 48 41 54 20 57 4F 52 44 2E 00

ErrorString3:
; "I DON'T UNDERSTAND."
4744: 49 20 44 4F 4E 27 54 20 55 4E 44 45 52 53 54 41 4E 44 2E 00

ErrorString4:
; "I DON'T KNOW WHAT YOU MEAN."
4758: 49 20 44 4F 4E 27 54 20 4B 4E 4F 57 20 57 48 41 54 20 59 4F 55 20 4D 45 41 4E 2E 00

keyWaitCounter:
4774: 00 ; Rapidly bumped waiting on a key (random)

; unused
4775: 00 00 00 00

currentParsePtr:
4779: 00 00 ; Pointer to word table entry while parsing

inputWordPtr:
477B: 00 00 ; Pointer to word being tokenized

numCharsTest:
477D: 00 ; Number of chars in test word (tokenizing)

; unused
477E: 00 00 00

testWord:
4781: 00 ; First byte of word data (tokenizing)

; "WELCOME TO PYRAMID!!"
WelcomeMsg:
4782: 57 45 4C 43 4F 4D 45 20 54 4F 20 50 59 52 41 4D 49 44 21 21 00

; The next 40 bytes (there is that magic number 40 again) are uninitalized
; memory reserved for the stack. The uninitialized memory contains the output of
; a previous assembly, but with a different origin. You'll find these live
; instructions in this final assembly at 47FA below -- just 99 bytes from here.
; 99 bytes of compiled code was added above this between the final assembly and
; the assembly before this. We get a peek at the system one step before the
; final assembly.
;
;                ; Disassembly of the PREVIOUS state of the code.
;                ; See 47FA below for this code in its final position.
; UNINITIALIZED MEMORY
4797: E1         ;     POP     HL
4798: CA B8 47   ;     JP      Z,$47B8
479B: 3E 00      ;     LD      A,$00
479D: CE 00      ;     ADC     $00
479F: 29         ;     ADD     HL,HL
47A0: 44         ;     LD      B,H
47A1: 85         ;     ADD     A,L
47A2: 2A 22 48   ;     LD      HL,($4822)
47A5: 95         ;     SUB     L
47A6: 4F         ;     LD      C,A
47A7: 78         ;     LD      A,B
47A8: 9C         ;     SBC     H
47A9: 47         ;     LD      B,A
47AA: C5         ;     PUSH    BC
47AB: D2 B0 47   ;     JP      NC,$47B0
47AE: 09         ;     ADD     HL,BC
47AF: E3         ;     EX      (SP),HL
47B0: 21 B7 47   ;     LD      HL,$47B7
47B3: 3F         ;     CCF
47B4: C3 90 47   ;     JP      $4790
47B7: 00         ;
47B8: 01 F9 47   ;     LD      NC,$47F9
47BB: 09         ;     ADD     HL,BC
47BC: 7E         ;     LD      A,(HL)
47BD: C1         ;     POP     BC
47BE: E1         ;     POP     HL

TopOfStack:
; The Z80 stack decrements before write. The 40 bytes above are the uninitialized
; memory reserved for the statck.
47BF: 00

EmptyString:
47C0: 00 ; For objects that have no descriptions

; unused
47C1: 00

Packed strings

By limiting a character to 40 possible values, we can pack three characters into 2 bytes:

40 x 40 x 40 = 64,000 (just shy of 65,536)

The 40 characters from CharTable: ?!2_"'<>/03ABCDEFGHIJKLMNOPQRSTUVWXYZ-,.

The first byte of a packed string is the number of words to unpack. Other printable characters may be listed after that with a 0 terminating the string.

For instance, PS_02:

; YOU_ARE_IN_THE_DESERT.
07 C7 DE 94 14 4B 5E 96 96 DB 72 F5 59 3E 62 2E 00

There are 7 words to unpack (14 bytes) followed by the "2E" period and the null terminator 0.

Each double word is listed LSB first. The first word to unpack is 0xDEC7.

val = 0x1494
c1 = val % 40  # 31 -> 'U'
val //= 40
c2 = val % 40  # 25 -> 'O'
val //= 40
c3 = val % 40  # 35 -> 'Y'

Which gives us 'YOU' (reversed order).

Next is 1419:

c1 = 28  -> 'R'
c2 = 11  -> 'A'
c3 = 3   -> '_' (really the space character)

Bringing us to "YOU_AR", and so on.

UnpackStringToScreen:
47C2: 32 84 48        LD      (unpackNumWords),A  ; Number of words to unpack
47C5: 3E 01           LD      A,$01               ; We are unpacking to ...
47C7: 32 87 48        LD      (unpackToScreen),A  ; ... the screen
47CA: C3 D4 47        JP      $47D4               ; Do the unpack
;
UnpackStringToBuffer:  ; Never used (but was in Haunted House)
47CD: 32 84 48        LD      (unpackNumWords),A  ; Number of words to unpack
47D0: 97              SUB     A                   ; We are unpacking to ...
47D1: 32 87 48        LD      (unpackToScreen),A  ; ... the buffer
;
; HL points to data to unpack
; DE points to unpack buffer (just 3 bytes if going to screen)
47D4: E5              PUSH    HL                  ; Hold the pointer to the words
;
47D5: 06 03           LD      B,$03               ; Three characters to extract from word
47D7: E1              POP     HL                  ; Get the ...
47D8: 7E              LD      A,(HL)              ; ... MSB of the word
47D9: 23              INC     HL                  ; Get the ...
47DA: 4E              LD      C,(HL)              ; ... LSB of the word
47DB: 23              INC     HL                  ; Update the pointer ...
47DC: E5              PUSH    HL                  ; ... to the words
47DD: 61              LD      H,C                 ; Data word ...
47DE: 6F              LD      L,A                 ; ... to HL
47DF: 13              INC     DE                  ; Skip to end ...
47E0: 13              INC     DE                  ; ... we are storing in reverse
47E1: EB              EX      DE,HL               ; Now HL=buffer and DE=data
47E2: E5              PUSH    HL                  ; Hold pointer to the buffer
47E3: C5              PUSH    BC                  ; Hold our count to 3
;
47E4: 21 28 00        LD      HL,$0028            ; The value of ...
47E7: 22 85 48        LD      (valueOfForty),HL   ; ... 40 for division (repeated subtraction)
47EA: 21 1A 48        LD      HL,shiftCount       ; We stop after ...
47ED: 36 11           LD      (HL),$11            ; ... 16 shifts (end + 1 = 17)
47EF: 01 00 00        LD      BC,$0000            ; Value we are extracting
47F2: C5              PUSH    BC                  ; Hold the value on the stack
47F3: 7B              LD      A,E                 ; Shift ...
47F4: 17              RLA                         ; ... DE ...
47F5: 5F              LD      E,A                 ; ... left ...
47F6: 7A              LD      A,D                 ; ... one ...
47F7: 17              RLA                         ; ... bit ...
47F8: 57              LD      D,A                 ; ... bit goes to CF
47F9: 35              DEC     (HL)                ; All shifts done?
47FA: E1              POP     HL                  ; Current extracted value from stack
47FB: CA 1B 48        JP      Z,$481B             ; Yes, store the extracted character
47FE: 3E 00           LD      A,$00               ; Left bit ...
4800: CE 00           ADC     $00                 ; ... to A
4802: 29              ADD     HL,HL               ; Value = value * 2
4803: 44              LD      B,H                 ; MSB
4804: 85              ADD     A,L                 ;
4805: 2A 85 48        LD      HL,(valueOfForty)   ; 
4808: 95              SUB     L                   ;
4809: 4F              LD      C,A                 ;
480A: 78              LD      A,B                 ; TODO figure out the exact math here
480B: 9C              SBC     H                   ;
480C: 47              LD      B,A                 ;
480D: C5              PUSH    BC                  ;
480E: D2 13 48        JP      NC,$4813            ; Less than 40 ... skip adding
4811: 09              ADD     HL,BC               ; Greater or equal, add to the extracted value
4812: E3              EX      (SP),HL             ; New value back to stack
4813: 21 1A 48        LD      HL,shiftCount       ; 
4816: 3F              CCF                         ; Clear carry for next math
4817: C3 F3 47        JP      $47F3               ; Do all bits

shiftCount:
481A: 00  ; Count of shifts during the unpack algorithm

481B: 01 5C 48        LD      BC,CharTable        ; Offset to character table
481E: 09              ADD     HL,BC               ; Offset to the character in the table
481F: 7E              LD      A,(HL)              ; Get the character
4820: C1              POP     BC                  ; Restore the count in B
4821: E1              POP     HL                  ; Restore the pointer to buffer
4822: 77              LD      (HL),A              ; Store the character in the buffer
4823: 2B              DEC     HL                  ; Working backwards in sets of 3
4824: 05              DEC     B                   ; All 3 values extracted?
4825: C2 E2 47        JP      NZ,$47E2            ; No, go get them all
4828: 3A 87 48        LD      A,(unpackToScreen)  ; Unpacking to ...
482B: A7              AND     A                   ; ... a buffer?
482C: CA 44 48        JP      Z,$4844             ; Yes, skip screen printing
;
482F: E5              PUSH    HL                  ; Hold ...
4830: C5              PUSH    BC                  ; ... our ...
4831: D5              PUSH    DE                  ; ... progress ...
4832: 1E 03           LD      E,$03               ; Three characters to print
4834: 23              INC     HL                  ; Next to print
4835: 46              LD      B,(HL)              ; Get the character
4836: E5              PUSH    HL                  ; Hold the buffer pointer
4837: 78              LD      A,B                 ; To B
4838: CD FF 45        CALL    PrintChar           ; Print the unpacked character
483B: E1              POP     HL                  ; Restore buffer pointer
483C: 23              INC     HL                  ; Next in buffer
483D: 1D              DEC     E                   ; All 3 printed?
483E: C2 35 48        JP      NZ,$4835            ; No, print the 3 we just unpacked
4841: D1              POP     DE                  ; Restore ...
4842: C1              POP     BC                  ; ... our ...
4843: E1              POP     HL                  ; ... progress
;
4844: EB              EX      DE,HL               ; Now HL=data and DE=buffer
4845: 13              INC     DE                  ; Will be next in buffer
4846: 3A 87 48        LD      A,(unpackToScreen)  ; Are we unpacking ...
4849: A7              AND     A                   ; ... to the screen?
484A: C2 50 48        JP      NZ,$4850            ; Yes ... reuse this 3-byte buffer
484D: 13              INC     DE                  ; No, move to the ...
484E: 13              INC     DE                  ; ... next 3-byte slot ...
484F: 13              INC     DE                  ; ... in the buffer
4850: 3A 84 48        LD      A,(unpackNumWords)  ; Count down ...
4853: 3D              DEC     A                   ; ... number of ...
4854: 32 84 48        LD      (unpackNumWords),A  ; ... words
4857: C2 D5 47        JP      NZ,$47D5            ; Go back for all the words
485A: E1              POP     HL                  ; Point to the next character after the words in the string
485B: C9              RET                         

Character Table

; Character compression table
CharTable:
485C: 3F 21 32 20 22 27 3C 3E 2F 30 33                 ; ?!2_"'<>/03
4867: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50  ; ABCDEFGHIJKLMNOP
4877: 51 52 53 54 55 56 57 58 59 5A 2D 2C 2E           ; QRSTUVWXYZ-,.

unpackNumWords:
4884: 00 ; Number of words to unpack (2-byte words)

valueOfForty: ; Used in dividing by 40 in unpack
4885: 00 00

unpackToScreen:
4887: 00 ; 1 to print to screen, 0 to given buffer

Room Table

Each entry is 4 bytes. The first word is the packed room description. The second word is the room's command script.

Woods 1-8 rewritten left out. New desert sequence added here as 1-6.

The following messages in loc.c are regular prints here: 16, 20, 21, 22, 26, 31, 32, 40, 59, 89, 90

Large sequences left out of Pyramid:
- 107 - 112 "Witt's end" (replaced with Land of the Dead)
- 69 - 79 "Secret canyon area"
- 115 - 140 "Repository, Dragon, and Bear"

Single rooms missing from Pyramid:
- 35 "Shadowing figure peering back at you" (mirror from 110, which was removed)
- 66 "Swiss cheese room" (better in a cave)
- 95 "Sparkling waterfall" (probably not a lot of these in a pyramid) TRIDENT here
- 113 "Underground reservoir" (probably not a lot of these in a pyramid)
- 91 "Steep incline"
- 97 "Oriental room"
- 98 "Misty carvern"
- 101 "Dark room" STONE TABLET congrats on bringing light

Rusty door in 94. Oil to get access to 95 and the trident.

Four of these missing single rooms were ported to Pyramid but later removed likely to fit the game in 16K.

Which of these 4 were made the port? My best guesses above

RoomTable:
;     Descr Scrpt   RoomName                         String   Notes
4888: DB 5B CC 49 ; RM_01_BEFORE_ENTRANCE            PS_00    new "before entrance"
488C: 10 5C E1 49 ; RM_02_IN_ENTRANCE                PS_01    new "in entrance" (wood's woodsRoom3 wellhouse)
4890: 57 5C F2 49 ; RM_03_DESERT1                    PS_02    new "desert"
4894: 57 5C 03 4A ; RM_04_DESERT2                    PS_02    new "desert"
4898: 57 5C 14 4A ; RM_05_DESERT3                    PS_02    new "desert"
489C: 57 5C 25 4A ; RM_06_DESERT4                    PS_02    new "desert"
;
48A0: 68 5C 36 4A ; RM_07_BENEATH_A_HOLE             PS_03    woodsRoom9
48A4: E2 5C 47 4A ; RM_08_CRAWLING_OVER_PEBBLES      PS_04    woodsRoom10
48A8: 28 5D 58 4A ; RM_09_BROKEN_POTTERY             PS_05    woodsRoom11
48AC: 7D 5D 69 4A ; RM_0A_AWKWARD_SLOPING            PS_06    woodsRoom12
48B0: A0 5D 7E 4A ; RM_0B_SPLENDID_CHAMBER           PS_07    woodsRoom13
48B4: 1E 5E 87 4A ; RM_0C_SMALL_PIT_WHITE_MIST       PS_08    woodsRoom14
48B8: 8E 5E 9D 4A ; RM_0D_STEPS_LEAD_UP_DOME         PS_09    woodsRoom15
48BC: 69 5F C8 4A ; RM_0E_LOW_ROOM_HIEROGLYPH        PS_0A    woodsRoom18
48C0: AB 5F D1 4A ; RM_0F_EAST_BANK_BOTTOMLESS_PIT   PS_0B    woodsRoom17
48C4: 08 60 0D 4B ; RM_10_PHARAOHS_CHAMBER           PS_0C    woodsRoom19
48C8: 3C 60 48 4B ; RM_11_SOUTH_SIDE_CHAMBER         PS_0D    woodsRoom29
48CC: 55 60 51 4B ; RM_12_HALL_OF_GODS               PS_0E    woodsRoom27
48D0: 85 60 90 4B ; RM_13_LITTLE_PASSAGE_SIX_FEET    PS_0F    woodsRoom41
48D4: F1 60 A9 4B ; RM_14_EAST_END_LONG_HALL         PS_10    woodsRoom60
48D8: 5F 61 BE 4B ; RM_15_WEST_END_FEATURELESS_HALL  PS_11    woodsRoom61
48DC: AC 61 C7 4B ; RM_16_CROSSOVER                  PS_12    woodsRoom62
48E0: D8 61 D8 4B ; RM_17_DEAD_END1                  PS_13    woodsRoom63
48E4: E0 61 E1 4B ; RM_18_THRONE_CHAMBER             PS_14    woodsRoom30
48E8: 18 62 F2 4B ; RM_19_LOW_NS_PASSAGE             PS_15    woodsRoom28
48EC: 58 62 07 4C ; RM_1A_PANEL_NORTH_WALL           PS_16    woodsRoom33
48F0: B0 62 14 4C ; RM_1B_CHAMBER_OF_ANUBIS          PS_17    woodsRoom34
;
48F4: C8 62 21 4C ; RM_1C_TWISTY_PASSAGES1           PS_18    woodsRoom42
48F8: C8 62 36 4C ; RM_1D_TWISTY_PASSAGES2           PS_18    woodsRoom80
48FC: C8 62 47 4C ; RM_1E_TWISTY_PASSAGES3           PS_18    woodsRoom45
4900: C8 62 60 4C ; RM_1F_TWISTY_PASSAGES4           PS_18    woodsRoom87
4904: C8 62 69 4C ; RM_20_TWISTY_PASSAGES5           PS_18    woodsRoom43
4908: C8 62 76 4C ; RM_21_TWISTY_PASSAGES6           PS_18    woodsRoom44
490C: C8 62 87 4C ; RM_22_TWISTY_PASSAGES7           PS_18    woodsRoom50
4910: C8 62 98 4C ; RM_23_TWISTY_PASSAGES8           PS_18    woodsRoom52
4914: C8 62 B1 4C ; RM_24_TWISTY_PASSAGES9           PS_18    woodsRoom55
4918: C8 62 C2 4C ; RM_25_TWISTY_PASSAGES10          PS_18    woodsRoom49
491C: C8 62 CB 4C ; RM_26_TWISTY_PASSAGES11          PS_18    woodsRoom51
4920: C8 62 DC 4C ; RM_27_TWISTY_PASSAGES12          PS_18    woodsRoom53
4924: C8 62 E9 4C ; RM_28_TWISTY_PASSAGES13          PS_18    woodsRoom84
4928: C8 62 F6 4C ; RM_29_TWISTY_PASSAGES14          PS_18    woodsRoom83
492C: D8 61 03 4D ; RM_2A_DEAD_END2                  PS_13    woodsRoom46
4930: D8 61 08 4D ; RM_2B_DEAD_END3                  PS_13    woodsRoom47
4934: D8 61 0D 4D ; RM_2C_DEAD_END4                  PS_13    woodsRoom82
4938: D8 61 12 4D ; RM_2D_DEAD_END5                  PS_13    woodsRoom48
493C: D8 61 17 4D ; RM_2E_DEAD_END6                  PS_13    woodsRoom54
4940: D8 61 1C 4D ; RM_2F_DEAD_END7                  PS_13    woodsRoom86
4944: D8 61 21 4D ; RM_30_DEAD_END8                  PS_13    woodsRoom56
4948: D8 61 26 4D ; RM_31_DEAD_END9                  PS_13    woodsRoom58
494C: D8 61 2B 4D ; RM_32_DEAD_END10                 PS_13    woodsRoom85
4950: D8 61 30 4D ; RM_33_DEAD_END11                 PS_13    woodsRoom81
4954: EA 62 41 4D ; RM_34_BRINK_OF_LARGE_PIT         PS_19    woodsRoom57
4958: D8 61 56 4D ; RM_35_DEAD_END12                 PS_13    woodsRoom114
;
495C: 49 63 5B 4D ; RM_36_DIRTY_BROKEN_PASSAGE       PS_1A    woodsRoom36
4960: A6 63 68 4D ; RM_37_BRINK_OF_CLEAN_PIT         PS_1B    woodsRoom37
4964: DA 63 75 4D ; RM_38_PIT_LITTLE_STREAM          PS_1C    woodsRoom38
4968: 1F 64 93 4D ; RM_39_ROOM_OF_BES                PS_1D    woodsRoom39
496C: 7A 64 9C 4D ; RM_3A_COMPLEX_JUNCTION           PS_1E    woodsRoom64
4970: 0A 65 B1 4D ; RM_3B_ANTEROOM_OF_SEKER          PS_1F    woodsRoom106
4974: A1 65 BE 4D ; RM_3C_LAND_OF_DEAD               PS_20    woodsRoom108
4978: D5 65 06 4E ; RM_3D_ANCIENT_DRAWINGS           PS_21    woodsRoom103
497C: 82 66 21 4E ; RM_3E_MOON_GOD                   PS_22    woodsRoom102
4980: E0 66 2A 4E ; RM_3F_RAGGED_WALLS               PS_23    woodsRoom104
4984: 07 67 33 4E ; RM_40_CUL_DE_SAC                 PS_24    woodsRoom105
4988: 29 67 3C 4E ; RM_41_CHAMBER_OF_HORUS           PS_25    woodsRoom65
498C: 89 67 65 4E ; RM_42_FALLEN_SLAB                PS_26    woodsRoom68
4990: 00 00 00 00 ;                                           ?woodsRoom66
4994: D2 6B 3B 4F ; RM_44_CHAMBER_OF_NEKHEBET        PS_31    woodsRoom94
4998: 00 00 00 00 ;                                           ?woodsRoom69
499C: B1 6B 32 4F ; RM_46_BLOCKED_FALLEN_BLOCK       PS_30    woodsRoom93
49A0: 5C 6B 25 4F ; RM_47_CHAMBER_OF_OSIRIS          PS_2F    woodsRoom92
49A4: 25 68 6E 4E ; RM_48_PRIESTS_BEDROOM            PS_27    woodsRoom96
49A8: 82 68 77 4E ; RM_49_HIGH_PRIEST                PS_28    woodsRoom99
;
; Rooms 73 and 76 are the "tight squeeze" with the emerald. In the
; In the Woods implementation, there are 5 rooms here. His ORIENT
; room (97) and his DARK room (101) are dead-ends with one passage
; each. I suspect these were the two
49AC: 00 00 00 00 ;                                           ?
49B0: 00 00 00 00 ;                                           ?woodsRoom91,95,  97,98,101
;
49B4: F6 68 86 4E ; RM_4C_EERIE_GREEN_LIGHT          PS_29    woodsRoom100
49B8: F3 6A 0E 4F ; RM_4D_PROFUSION_OF_LEAVES        PS_2E    woodsRoom88
49BC: 3F 69 9B 4E ; RM_4E_WEAST_END_TWOPIT           PS_2A    woodsRoom67
49C0: 21 6A A8 4E ; RM_4F_BOTTOM_EASTERN_PIT         PS_2B    woodsRoom24
49C4: 4B 6A B1 4E ; RM_50_WEST_END_TWOPIT            PS_2C    woodsRoom23
49C8: 9D 6A BE 4E ; RM_51_BOTTOM_WEST_PIT            PS_2D    woodsRoom25

Room Scripts

RoomScripts:

Script_RM_01_BEFORE_ENTRANCE:
; PS_00
; YOU_ARE_STANDING_BEFORE_THE_ENTRANCE_OF_A_PYRAMID.__AROUND_YOU__
; IS_A_DESERT.
;
49CC: 01 03      ; N
49CE: 01 02      ;     move_look(RM_02_IN_ENTRANCE) ;; new
49D0: 02 03      ; E
49D2: 01 03      ;     move_look(RM_03_DESERT1) ;; new
49D4: 03 03      ; S
49D6: 01 04      ;     move_look(RM_04_DESERT2) ;; new
49D8: 04 03      ; W
49DA: 01 05      ;     move_look(RM_05_DESERT3) ;; new
49DC: 0B 03      ; IN
49DE: 01 02      ;     move_look(RM_02_IN_ENTRANCE) ;; new
49E0: 00         ;

Script_RM_02_IN_ENTRANCE:
; PS_01
; YOU_ARE_IN_THE_ENTRANCE_TO_THE_PYRAMID.__A_HOLE_IN_THE_FLOOR____
; LEADS_TO_A_PASSAGE_BENEATH_THE_SURFACE.
;
49E1: 03 03      ; S
49E3: 01 01      ;     move_look(RM_01_BEFORE_ENTRANCE) ;; new
49E5: 0A 03      ; D
49E7: 01 07      ;     move_look(RM_07_BENEATH_A_HOLE) ;; woodsRoom9
49E9: 0C 03      ; OUT
49EB: 01 01      ;     move_look(RM_01_BEFORE_ENTRANCE) ;; new
49ED: 12 03      ; PANEL
49EF: 01 1A      ;     move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33
49F1: 00         ;

Script_RM_03_DESERT1:
; PS_02
; YOU_ARE_IN_THE_DESERT.
;
49F2: 01 03      ; N
49F4: 01 06      ;     move_look(RM_06_DESERT4) ;; new
49F6: 02 03      ; E
49F8: 01 03      ;     move_look(RM_03_DESERT1) ;; new
49FA: 03 03      ; S
49FC: 01 04      ;     move_look(RM_04_DESERT2) ;; new
49FE: 04 03      ; W
4A00: 01 01      ;     move_look(RM_01_BEFORE_ENTRANCE) ;; new
4A02: 00         ;

Script_RM_04_DESERT2:
; PS_02
; YOU_ARE_IN_THE_DESERT.
;
4A03: 01 03      ; N
4A05: 01 01      ;     move_look(RM_01_BEFORE_ENTRANCE) ;; new
4A07: 02 03      ; E
4A09: 01 03      ;     move_look(RM_03_DESERT1) ;; new
4A0B: 03 03      ; S
4A0D: 01 04      ;     move_look(RM_04_DESERT2) ;; new
4A0F: 04 03      ; W
4A11: 01 05      ;     move_look(RM_05_DESERT3) ;; new
4A13: 00         ;

Script_RM_05_DESERT3:
; PS_02
; YOU_ARE_IN_THE_DESERT.
;
4A14: 01 03      ; N
4A16: 01 06      ;     move_look(RM_06_DESERT4) ;; new
4A18: 02 03      ; E
4A1A: 01 01      ;     move_look(RM_01_BEFORE_ENTRANCE) ;; new
4A1C: 03 03      ; S
4A1E: 01 04      ;     move_look(RM_04_DESERT2) ;; new
4A20: 04 03      ; W
4A22: 01 05      ;     move_look(RM_05_DESERT3) ;; new
4A24: 00         ;

Script_RM_06_DESERT4:
; PS_02
; YOU_ARE_IN_THE_DESERT.
;
4A25: 01 03      ; N
4A27: 01 06      ;     move_look(RM_06_DESERT4) ;; new
4A29: 02 03      ; E
4A2B: 01 03      ;     move_look(RM_03_DESERT1) ;; new
4A2D: 03 03      ; S
4A2F: 01 01      ;     move_look(RM_01_BEFORE_ENTRANCE) ;; new
4A31: 04 03      ; W
4A33: 01 05      ;     move_look(RM_05_DESERT3) ;; new
4A35: 00         ;

Script_RM_07_BENEATH_A_HOLE: ; woodsRoom9
; PS_03
; YOU_ARE_IN_A_SMALL_CHAMBER_BENEATH_A_HOLE_FROM_THE_SURFACE.__A__
; LOW_CRAWL_LEADS_INWARD_TO_THE_WEST.__HIEROGLYPHICS_ON_THE_WALL__
; TRANSLATE,_"CURSE_ALL_WHO_ENTER_THIS_SACRED_CRYPT."
;
4A36: 09 03      ; U
4A38: 01 02      ;     move_look(RM_02_IN_ENTRANCE) ;; new
4A3A: 0C 03      ; OUT
4A3C: 01 02      ;     move_look(RM_02_IN_ENTRANCE) ;; new
4A3E: 04 03      ; W
4A40: 01 08      ;     move_look(RM_08_CRAWLING_OVER_PEBBLES) ;; woodsRoom10
4A42: 0B 03      ; IN
4A44: 01 08      ;     move_look(RM_08_CRAWLING_OVER_PEBBLES) ;; woodsRoom10
4A46: 00         ;

Script_RM_08_CRAWLING_OVER_PEBBLES: ; woodsRoom10
; PS_04
; YOU_ARE_CRAWLING_OVER_PEBBLES_IN_A_LOW_PASSAGE.__THERE_IS_A_DIM_
; LIGHT_AT_THE_EAST_END_OF_THE_PASSAGE.
;
4A47: 02 03      ; E
4A49: 01 07      ;     move_look(RM_07_BENEATH_A_HOLE) ;; woodsRoom9
4A4B: 0C 03      ; OUT
4A4D: 01 07      ;     move_look(RM_07_BENEATH_A_HOLE) ;; woodsRoom9
4A4F: 04 03      ; W
4A51: 01 09      ;     move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11
4A53: 0B 03      ; IN
4A55: 01 09      ;     move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11
4A57: 00         ;

Script_RM_09_BROKEN_POTTERY: ; woodsRoom11
; PS_05
; YOU_ARE_IN_A_ROOM_FILLED_WITH_BROKEN_POTTERY_SHARDS_OF_ANCIENT__
; EGYPTIAN_CRAFTS.__AN_AWKWARD_CORRIDOR_LEADS_UPWARD_AND_WEST.
;
4A58: 02 03      ; E
4A5A: 01 08      ;     move_look(RM_08_CRAWLING_OVER_PEBBLES) ;; woodsRoom10
4A5C: 0B 03      ; IN
4A5E: 01 0A      ;     move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12
4A60: 09 03      ; U
4A62: 01 0A      ;     move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12
4A64: 04 03      ; W
4A66: 01 0A      ;     move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12
4A68: 00         ;

Script_RM_0A_AWKWARD_SLOPING: ; woodsRoom12
; PS_06
; YOU_ARE_IN_AN_AWKWARD_SLOPING_EAST/WEST_CORRIDOR.
;
4A69: 0A 03      ; D
4A6B: 01 09      ;     move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11
4A6D: 02 03      ; E
4A6F: 01 09      ;     move_look(RM_09_BROKEN_POTTERY) ;; woodsRoom11
4A71: 0B 03      ; IN
4A73: 01 0B      ;     move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13
4A75: 04 03      ; W
4A77: 01 0B      ;     move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13
4A79: 09 03      ; U
4A7B: 01 0B      ;     move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13
4A7D: 00         ;

Script_RM_0B_SPLENDID_CHAMBER: ; woodsRoom13
; PS_07
; YOU_ARE_IN_A_SPLENDID_CHAMBER_THIRTY_FEET_HIGH.__THE_WALLS_ARE__
; FROZEN_RIVERS_OF_ORANGE_STONE.__AN_AWKWARD_CORRIDOR_AND_A_GOOD__
; PASSAGE_EXIT_FROM_THE_EAST_AND_WEST_SIDES_OF_THE_CHAMBER.
;
4A7E: 02 03      ; E
4A80: 01 0A      ;     move_look(RM_0A_AWKWARD_SLOPING) ;; woodsRoom12
4A82: 04 03      ; W
4A84: 01 0C      ;     move_look(RM_0C_SMALL_PIT_WHITE_MIST) ;; woodsRoom14
4A86: 00         ;

Script_RM_0C_SMALL_PIT_WHITE_MIST: ; woodsRoom14
; PS_08
; AT_YOUR_FEET_IS_A_SMALL_PIT_BREATHING_TRACES_OF_WHITE_MIST.__AN_
; EAST_PASSAGE_ENDS_HERE_EXCEPT_FOR_A_SMALL_CRACK_LEADING_ON._____
; ROUGH_STONE_STEPS_LEAD_DOWN_THE_PIT.
;
4A87: 02 03      ; E
4A89: 01 0B      ;     move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13
4A8B: 0A 0B      ; D
4A8D: 07 07      ;     stop_if_pass ...
4A8F: 02 25      ;         is_in_pack(OBJ_25_GOLD)
4A91: 04 71 71   ;         print(PS_6B) YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK.
4A94: 05         ;         death_and_resurrect()
4A95: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15
4A97: 04 04      ; W
4A99: 04 96 71   ;     print(PS_6C) THE_CRACK_IS_FAR_TOO_SMALL_FOR_YOU_TO_FOLLOW.
4A9C: 00         ;

Script_RM_0D_STEPS_LEAD_UP_DOME: ; woodsRoom15
; PS_09
; YOU_ARE_AT_ONE_END_OF_A_VAST_HALL_STRETCHING_FORWARD_OUT_OF_____
; SIGHT_TO_THE_WEST.__THERE_ARE_OPENINGS_TO_EITHER_SIDE.__NEARBY,_
; A_WIDE_STONE_STAIRCASE_LEADS_DOWNWARD.__THE_HALL_IS_VERY_MUSTY__
; AND_A_COLD_WIND_BLOWS_UP_THE_STAIRCASE.__THERE_IS_A_PASSAGE_AT__
; THE_TOP_OF_A_DOME_BEHIND_YOU.__ROUGH_STONE_STEPS_LEAD_UP_THE____
; DOME.
;
4A9D: 03 03      ; S
4A9F: 01 0E      ;     move_look(RM_0E_LOW_ROOM_HIEROGLYPH) ;; woodsRoom18
4AA1: 04 03      ; W
4AA3: 01 0F      ;     move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) ;; woodsRoom17
4AA5: 0A 03      ; D
4AA7: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4AA9: 01 03      ; N
4AAB: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4AAD: 09 0A      ; U
4AAF: 07 06      ;     stop_if_pass ...
4AB1: 02 25      ;         is_in_pack(OBJ_25_GOLD)
4AB3: 04 B6 71   ;         print(PS_6D) THE_DOME_IS_UNCLIMBABLE.
4AB6: 01 0C      ;     move_look(RM_0C_SMALL_PIT_WHITE_MIST) ;; woodsRoom14
4AB8: 02 0A      ; E
4ABA: 07 06      ;     stop_if_pass ...
4ABC: 02 25      ;         is_in_pack(OBJ_25_GOLD)
4ABE: 04 B6 71   ;         print(PS_6D) THE_DOME_IS_UNCLIMBABLE.
4AC1: 01 0C      ;     move_look(RM_0C_SMALL_PIT_WHITE_MIST) ;; woodsRoom14
4AC3: 20 03      ; ??20?? ;; in CCA loc.c this is GO_Y2 -- command: "GO Y2" or "Y2"
4AC5: 01 1A      ;     move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33
4AC7: 00         ;

Script_RM_0E_LOW_ROOM_HIEROGLYPH: ; woodsRoom18
; PS_0A
; THIS_IS_A_LOW_ROOM_WITH_A_HIEROGLYPH_ON_THE_WALL.__IT_TRANSLATES
; "YOU_WON'T_GET_IT_UP_THE_STEPS".
;
4AC8: 0C 03      ; OUT
4ACA: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME);;  woodsRoom15
4ACC: 01 03      ; N
4ACE: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15
4AD0: 00         ;

Script_RM_0F_EAST_BANK_BOTTOMLESS_PIT: ; woodsRoom17
; PS_0B
; YOU_ARE_ON_THE_EAST_BANK_OF_A_BOTTOMLESS_PIT_STRETCHING_ACROSS__
; THE_HALL.__THE_MIST_IS_QUITE_THICK_HERE,_AND_THE_PIT_IS_TOO_WIDE
; TO_JUMP.
;
4AD1: 02 03      ; E
4AD3: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15
4AD5: 10 0C      ; JUMP
4AD7: 07 06      ;     stop_if_pass ...
4AD9: 03 01      ;         is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F)
4ADB: 04 C8 71   ;         print(PS_6E) I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______
;                                       JUMPING.
4ADE: 04 FA 71   ;     print(PS_6F) YOU_DIDN'T_MAKE_IT.
4AE1: 05         ;     death_and_resurrect()
4AE2: 04 0A      ; W
4AE4: 07 05      ;     stop_if_pass ...
4AE6: 03 01      ;         is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F)
4AE8: 01 12      ;         move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27
4AEA: 04 09 72   ;     print(PS_70) THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT.
4AED: 0D 05      ; CROSS
4AEF: 03 01      ;     is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F)
4AF1: 01 12      ;     move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27
4AF3: 23 18      ; WAVE
4AF5: 11 11      ;     is_object_user_input(OBJ_11_SCEPTER)
4AF7: 07 0C      ;     stop_if_pass ...
4AF9: 03 01      ;         is_in_pack_or_current_room(OBJ_01_BRIDGE_ROOM_0F)
4AFB: 15 01 00   ;         move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_00_nowhere)
4AFE: 15 02 00   ;         move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_00_nowhere)
4B01: 04 DE 7B   ;         print(PS_AE) THE_STONE_BRIDGE_HAS_RETRACTED!
4B04: 18 01      ;     move_object_to_current_room(OBJ_01_BRIDGE_ROOM_0F)
4B06: 15 02 12   ;     move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_12_HALL_OF_GODS)
4B09: 04 F5 7B   ;     print(PS_AF) A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT.
4B0C: 00         ;

Script_RM_10_PHARAOHS_CHAMBER: ; woodsRoom19
; PS_0C
; YOU_ARE_IN_THE_PHARAOH'S_CHAMBER,_WITH_PASSAGES_OFF_IN_ALL______
; DIRECTIONS.
;
4B0D: 09 03      ; U
4B0F: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15
4B11: 02 03      ; E
4B13: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15
4B15: 03 0A      ; S
4B17: 07 06      ;     stop_if_pass ...
4B19: 03 0B      ;         is_in_pack_or_current_room(OBJ_0B_SERPENT)
4B1B: 04 27 72   ;         print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT.
4B1E: 01 11      ;     move_look(RM_11_SOUTH_SIDE_CHAMBER) ;; woodsRoom29
4B20: 01 0A      ; N
4B22: 07 06      ;     stop_if_pass ...
4B24: 03 0B      ;         is_in_pack_or_current_room(OBJ_0B_SERPENT)
4B26: 04 27 72   ;         print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT.
4B29: 01 19      ;     move_look(RM_19_LOW_NS_PASSAGE) ;; woodsRoom28
4B2B: 04 0A      ; W
4B2D: 07 06      ;     stop_if_pass ...
4B2F: 03 0B      ;         is_in_pack_or_current_room(OBJ_0B_SERPENT)
4B31: 04 27 72   ;         print(PS_71) YOU_CAN'T_GET_BY_THE_SERPENT.
4B34: 01 18      ;     move_look(RM_18_THRONE_CHAMBER) ;; woodsRoom30
4B36: 26 10      ; THROW
4B38: 11 14      ;     is_object_user_input(OBJ_14_BIRD_IN_BOX)
4B3A: 03 0B      ;     is_in_pack_or_current_room(OBJ_0B_SERPENT)
4B3C: 15 0B 00   ;     move_object_to_room(OBJ_0B_SERPENT, RM_00_nowhere)
4B3F: 18 13      ;     move_object_to_current_room(OBJ_13_BIRD)
4B41: 15 14 00   ;     move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
4B44: 04 A1 7C   ;     print(PS_B4) THE_BIRD_STATUE_COMES_TO_LIFE_AND_ATTACKS_THE_SERPENT_AND_IN_AN_
;                                   ASTOUNDING_FLURRY,_DRIVES_THE_SERPENT_AWAY.__THE_BIRD_TURNS_BACK
;                                   INTO_A_STATUE.
4B47: 00         ;

Script_RM_11_SOUTH_SIDE_CHAMBER: ; woodsRoom29
; PS_0D
; YOU_ARE_IN_THE_SOUTH_SIDE_CHAMBER.
;
4B48: 01 03      ; N
4B4A: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4B4C: 0C 03      ; OUT
4B4E: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4B50: 00         ;

Script_RM_12_HALL_OF_GODS: ; woodsRoom27
; PS_0E
; YOU_ARE_ON_THE_WEST_SIDE_OF_THE_BOTTOMLESS_PIT_IN_THE_HALL_OF___
; GODS.
;
4B51: 10 0C      ; JUMP
4B53: 07 06      ;     stop_if_pass ...
4B55: 03 02      ;         is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12)
4B57: 04 C8 71   ;         print(PS_6E) I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______
;                                       JUMPING.
4B5A: 04 FA 71   ;     print(PS_6F) YOU_DIDN'T_MAKE_IT.
4B5D: 05         ;     death_and_resurrect()
4B5E: 02 0A      ; E
4B60: 07 05      ;     stop_if_pass ...
4B62: 03 02      ;         is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12)
4B64: 01 0F      ;         move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) ;; woodsRoom17
4B66: 04 09 72   ;     print(PS_70) THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT.
4B69: 01 06      ; N
4B6B: 04 3D 72   ;     print(PS_72) YOU_HAVE_CRAWLED_THROUGH_A_VERY_LOW_WIDE_PASSAGE_PARALLEL_TO_AND
;                                   NORTH_OF_THE_HALL_OF_GODS.
4B6E: 01 13      ;     move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41
4B70: 0D 05      ; CROSS
4B72: 03 02      ;     is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12)
4B74: 01 0F      ;     move_look(RM_0F_EAST_BANK_BOTTOMLESS_PIT) ;; woodsRoom17
4B76: 23 18      ; WAVE
4B78: 11 11      ;     is_object_user_input(OBJ_11_SCEPTER)
4B7A: 07 0C      ;     stop_if_pass ...
4B7C: 03 02      ;         is_in_pack_or_current_room(OBJ_02_BRIDGE_ROOM_12)
4B7E: 15 02 00   ;         move_object_to_room(OBJ_02_BRIDGE_ROOM_12, RM_00_nowhere)
4B81: 15 01 00   ;         move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_00_nowhere)
4B84: 04 DE 7B   ;         print(PS_AE) THE_STONE_BRIDGE_HAS_RETRACTED!
4B87: 18 02      ;     move_object_to_current_room(OBJ_02_BRIDGE_ROOM_12)
4B89: 15 01 0F   ;     move_object_to_room(OBJ_01_BRIDGE_ROOM_0F, RM_0F_EAST_BANK_BOTTOMLESS_PIT)
4B8C: 04 F5 7B   ;     print(PS_AF) A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT.
4B8F: 00         ;

Script_RM_13_LITTLE_PASSAGE_SIX_FEET: ; woodsRoom41
; PS_0F
; YOU_ARE_AT_THE_WEST_END_OF_THE_HALL_OF_GODS.___A_LOW_WIDE_PASS__
; CONTINUES_WEST_AND_ANOTHER_GOES_NORTH.__TO_THE_SOUTH_IS_A_LITTLE
; PASSAGE_SIX_FEET_OFF_THE_FLOOR.
;
4B90: 03 03      ; S
4B92: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4B94: 09 03      ; U
4B96: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4B98: 11 03      ; CLIMB
4B9A: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4B9C: 02 03      ; E
4B9E: 01 12      ;     move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27
4BA0: 01 03      ; N
4BA2: 01 12      ;     move_look(RM_12_HALL_OF_GODS) ;; woodsRoom27
4BA4: 04 03      ; W
4BA6: 01 14      ;     move_look(RM_14_EAST_END_LONG_HALL) ;; woodsRoom60
4BA8: 00         ;

Script_RM_14_EAST_END_LONG_HALL: ; woodsRoom60
; PS_10
; YOU_ARE_AT_EAST_END_OF_A_VERY_LONG_HALL_APPARENTLY_WITHOUT_SIDE_
; CHAMBERS.__TO_THE_EAST_A_LOW_WIDE_CRAWL_SLANTS_UP.__TO_THE_NORTH
; A_ROUND_TWO_FOOT_HOLE_SLANTS_DOWN.
;
4BA9: 02 03      ; E
4BAB: 01 13      ;     move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41
4BAD: 09 03      ; U
4BAF: 01 13      ;     move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41
4BB1: 04 03      ; W
4BB3: 01 15      ;     move_look(RM_15_WEST_END_FEATURELESS_HALL) ;; woodsRoom61
4BB5: 01 03      ; N
4BB7: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BB9: 0A 03      ; D
4BBB: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BBD: 00         ;

Script_RM_15_WEST_END_FEATURELESS_HALL: ; woodsRoom61
; PS_11
; YOU_ARE_AT_THE_WEST_END_OF_A_VERY_LONG_FEATURELESS_HALL.__THE___
; HALL_JOINS_UP_WITH_A_NARROW_NORTH/SOUTH_PASSAGE.
;
4BBE: 02 03      ; E
4BC0: 01 14      ;     move_look(RM_14_EAST_END_LONG_HALL) ;; woodsRoom60
4BC2: 01 03      ; N
4BC4: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BC6: 00         ;

Script_RM_16_CROSSOVER: ; woodsRoom62
; PS_12
; YOU_ARE_AT_A_CROSSOVER_OF_A_HIGH_N/S_PASSAGE_AND_A_LOW_E/W_ONE.
;
4BC7: 04 03      ; W
4BC9: 01 14      ;     move_look(RM_14_EAST_END_LONG_HALL) ;; woodsRoom60
4BCB: 01 03      ; N
4BCD: 01 17      ;     move_look(RM_17_DEAD_END1) ;; woodsRoom63
4BCF: 02 03      ; E
4BD1: 01 18      ;     move_look(RM_18_THRONE_CHAMBER) ;; woodsRoom30
4BD3: 03 03      ; S
4BD5: 01 15      ;     move_look(RM_15_WEST_END_FEATURELESS_HALL) ;; woodsRoom61
4BD7: 00         ;

Script_RM_17_DEAD_END1: ; woodsRoom63
; PS_13
; DEAD_END.
;
4BD8: 03 03      ; S
4BDA: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BDC: 0C 03      ; OUT
4BDE: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BE0: 00         ;

Script_RM_18_THRONE_CHAMBER: ; woodsRoom30
; PS_14
; YOU_ARE_IN_THE_WEST_THRONE_CHAMBER.__A_PASSAGE_CONTINUES_WEST___
; AND_UP_FROM_HERE.
;
4BE1: 02 03      ; E
4BE3: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4BE5: 0C 03      ; OUT
4BE7: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4BE9: 04 03      ; W
4BEB: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BED: 09 03      ; U
4BEF: 01 16      ;     move_look(RM_16_CROSSOVER) ;; woodsRoom62
4BF1: 00         ;

Script_RM_19_LOW_NS_PASSAGE: ; woodsRoom28
; PS_15
; YOU_ARE_IN_A_LOW_N/S_PASSAGE_AT_A_HOLE_IN_THE_FLOOR.__THE_HOLE__
; GOES_DOWN_TO_AN_E/W_PASSAGE.
;
4BF2: 0C 03      ; OUT
4BF4: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4BF6: 03 03      ; S
4BF8: 01 10      ;     move_look(RM_10_PHARAOHS_CHAMBER) ;; woodsRoom19
4BFA: 01 03      ; N
4BFC: 01 1A      ;     move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33
4BFE: 20 03      ; ??20?? ;; in CCA loc.c this is GO_Y2 -- command: "GO Y2" or "Y2"
4C00: 01 1A      ;     move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33
4C02: 0A 03      ; D
4C04: 01 36      ;     move_look(RM_36_DIRTY_BROKEN_PASSAGE) ;; woodsRoom36
4C06: 00         ;

Script_RM_1A_PANEL_NORTH_WALL: ; woodsRoom33 -- this is the Y2 room (with a panel instead of a Y2 rock)
; PS_16
; YOU_ARE_IN_A_LARGE_ROOM,_WITH_A_PASSAGE_TO_THE_SOUTH,_AND_A_WALL
; OF_BROKEN_ROCK_TO_THE_EAST.__THERE_IS_A_PANEL_ON_THE_NORTH_WALL.
;
4C07: 12 03      ; PANEL
4C09: 01 02      ;     move_look(RM_02_IN_ENTRANCE) ;; new
4C0B: 03 03      ; S
4C0D: 01 19      ;     move_look(RM_19_LOW_NS_PASSAGE) ;; woodsRoom28
4C0F: 02 03      ; E
4C11: 01 1B      ;     move_look(RM_1B_CHAMBER_OF_ANUBIS) ;; woodsRoom34
4C13: 00         ;

Script_RM_1B_CHAMBER_OF_ANUBIS: ; woodsRoom34
; PS_17
; YOU_ARE_IN_THE_CHAMBER_OF_ANUBIS.
;
4C14: 0A 03      ; D
4C16: 01 1A      ;     move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33
4C18: 20 03      ; ??20?? ;; in CCA loc.c this is GO_Y2 -- command: "GO Y2" or "Y2"
4C1A: 01 1A      ;     move_look(RM_1A_PANEL_NORTH_WALL) ;; woodsRoom33
4C1C: 09 03      ; U
4C1E: 01 0D      ;     move_look(RM_0D_STEPS_LEAD_UP_DOME) ;; woodsRoom15
4C20: 00         ;

Script_RM_1C_TWISTY_PASSAGES1: ; woodsRoom42
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C21: 01 03      ; N
4C23: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4C25: 02 03      ; E
4C27: 01 20      ;     move_look(RM_20_TWISTY_PASSAGES5) ;; woodsRoom43
4C29: 03 03      ; S
4C2B: 01 1E      ;     move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45
4C2D: 04 03      ; W
4C2F: 01 1D      ;     move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80
4C31: 09 03      ; U
4C33: 01 13      ;     move_look(RM_13_LITTLE_PASSAGE_SIX_FEET) ;; woodsRoom41
4C35: 00         ;

Script_RM_1D_TWISTY_PASSAGES2: ; woodsRoom80
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C36: 01 03      ; N
4C38: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4C3A: 02 03      ; E
4C3C: 01 33      ;     move_look(RM_33_DEAD_END11) ;; woodsRoom81
4C3E: 03 03      ; S
4C40: 01 1D      ;     move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80
4C42: 04 03      ; W
4C44: 01 1D      ;     move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80
4C46: 00         ;

Script_RM_1E_TWISTY_PASSAGES3: ; woodsRoom45
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C47: 01 03      ; N
4C49: 01 20      ;     move_look(RM_20_TWISTY_PASSAGES5) ;; woodsRoom43
4C4B: 02 03      ; E
4C4D: 01 2A      ;     move_look(RM_2A_DEAD_END2) ;; woodsRoom46
4C4F: 03 03      ; S
4C51: 01 2B      ;     move_look(RM_2B_DEAD_END3) ;; woodsRoom47
4C53: 04 03      ; W
4C55: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4C57: 09 03      ; U
4C59: 01 1F      ;     move_look(RM_1F_TWISTY_PASSAGES4) ;; woodsRoom87
4C5B: 0A 03      ; D
4C5D: 01 1F      ;     move_look(RM_1F_TWISTY_PASSAGES4) ;; woodsRoom87
4C5F: 00         ;

Script_RM_1F_TWISTY_PASSAGES4: ; woodsRoom87
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C60: 09 03      ; U
4C62: 01 1E      ;     move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45
4C64: 0A 03      ; D
4C66: 01 1E      ;     move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45
4C68: 00         ;

Script_RM_20_TWISTY_PASSAGES5: ; woodsRoom43
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C69: 02 03      ; E
4C6B: 01 1E      ;     move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45
4C6D: 03 03      ; S
4C6F: 01 21      ;     move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44
4C71: 04 03      ; W
4C73: 01 1C      ;     move_look(RM_1C_TWISTY_PASSAGES1) ;; woodsRoom42
4C75: 00         ;

Script_RM_21_TWISTY_PASSAGES6: ; woodsRoom44
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C76: 01 03      ; N
4C78: 01 2C      ;     move_look(RM_2C_DEAD_END4) ;; woodsRoom82
4C7A: 02 03      ; E
4C7C: 01 20      ;     move_look(RM_20_TWISTY_PASSAGES5) ;; woodsRoom43
4C7E: 03 03      ; S
4C80: 01 22      ;     move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50
4C82: 0A 03      ; D
4C84: 01 2D      ;     move_look(RM_2D_DEAD_END5) ;; woodsRoom48
4C86: 00         ;

Script_RM_22_TWISTY_PASSAGES7: ; woodsRoom50
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C87: 02 03      ; E
4C89: 01 21      ;     move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44
4C8B: 03 03      ; S
4C8D: 01 23      ;     move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52
4C8F: 04 03      ; W
4C91: 01 25      ;     move_look(RM_25_TWISTY_PASSAGES10) ;; woodsRoom49
4C93: 0A 03      ; D
4C95: 01 26      ;     move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51
4C97: 00         ;

Script_RM_23_TWISTY_PASSAGES8: ; woodsRoom52
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4C98: 01 03      ; N
4C9A: 01 24      ;     move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55
4C9C: 02 03      ; E
4C9E: 01 26      ;     move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51
4CA0: 03 03      ; S
4CA2: 01 23      ;     move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52
4CA4: 04 03      ; W
4CA6: 01 22      ;     move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50
4CA8: 09 03      ; U
4CAA: 01 27      ;     move_look(RM_27_TWISTY_PASSAGES12) ;; woodsRoom53
4CAC: 0A 03      ; D
4CAE: 01 2F      ;     move_look(RM_2F_DEAD_END7) ;; woodsRoom86
4CB0: 00         ;

Script_RM_24_TWISTY_PASSAGES9: ; woodsRoom55
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4CB1: 01 03      ; N
4CB3: 01 24      ;     move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55
4CB5: 02 03      ; E
4CB7: 01 34      ;     move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57
4CB9: 04 03      ; W
4CBB: 01 23      ;     move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52
4CBD: 0A 03      ; D
4CBF: 01 30      ;     move_look(RM_30_DEAD_END8) ;; woodsRoom56
4CC1: 00         ;

Script_RM_25_TWISTY_PASSAGES10: ; woodsRoom49
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4CC2: 02 03      ; E
4CC4: 01 22      ;     move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50
4CC6: 04 03      ; W
4CC8: 01 26      ;     move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51
4CCA: 00         ;

Script_RM_26_TWISTY_PASSAGES11: ; woodsRoom51
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4CCB: 02 03      ; E
4CCD: 01 23      ;     move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52
4CCF: 03 03      ; S
4CD1: 01 27      ;     move_look(RM_27_TWISTY_PASSAGES12) ;; woodsRoom53
4CD3: 04 03      ; W
4CD5: 01 25      ;     move_look(RM_25_TWISTY_PASSAGES10) ;; woodsRoom49
4CD7: 09 03      ; U
4CD9: 01 22      ;     move_look(RM_22_TWISTY_PASSAGES7) ;; woodsRoom50
4CDB: 00         ;

Script_RM_27_TWISTY_PASSAGES12: ; woodsRoom53
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4CDC: 01 03      ; N
4CDE: 01 23      ;     move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52
4CE0: 03 03      ; S
4CE2: 01 2E      ;     move_look(RM_2E_DEAD_END6) ;; woodsRoom54
4CE4: 04 03      ; W
4CE6: 01 26      ;     move_look(RM_26_TWISTY_PASSAGES11) ;; woodsRoom51
4CE8: 00         ;

Script_RM_28_TWISTY_PASSAGES13: ; woodsRoom84
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4CE9: 01 03      ; N
4CEB: 01 34      ;     move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57
4CED: 04 03      ; W
4CEF: 01 29      ;     move_look(RM_29_TWISTY_PASSAGES14) ;; woodsRoom83
4CF1: 08 03      ; NW
4CF3: 01 35      ;     move_look(RM_35_DEAD_END12) ;; woodsRoom114
4CF5: 00         ;

Script_RM_29_TWISTY_PASSAGES14: ; woodsRoom83
; PS_18
; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
;
4CF6: 02 03      ; E
4CF8: 01 28      ;     move_look(RM_28_TWISTY_PASSAGES13) ;; woodsRoom84
4CFA: 03 03      ; S
4CFC: 01 34      ;     move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57
4CFE: 04 03      ; W
4D00: 01 32      ;     move_look(RM_32_DEAD_END10) ;; woodsRoom85
4D02: 00         ;

Script_RM_2A_DEAD_END2: ; woodsRoom46
; PS_13
; DEAD_END.
;
4D03: 04 03      ; W
4D05: 01 1E      ;     move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45
4D07: 00         ;

Script_RM_2B_DEAD_END3: ; woodsRoom47
; PS_13
; DEAD_END.
;
4D08: 02 03      ; E
4D0A: 01 1E      ;     move_look(RM_1E_TWISTY_PASSAGES3) ;; woodsRoom45
4D0C: 00         ;

Script_RM_2C_DEAD_END4: ; woodsRoom82
; PS_13
; DEAD_END.
;
4D0D: 03 03      ; S
4D0F: 01 21      ;     move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44
4D11: 00         ;

Script_RM_2D_DEAD_END5: ; woodsRoom48
; PS_13
; DEAD_END.
;
4D12: 09 03      ; U
4D14: 01 21      ;     move_look(RM_21_TWISTY_PASSAGES6) ;; woodsRoom44
4D16: 00         ;

Script_RM_2E_DEAD_END6: ; woodsRoom54
; PS_13
; DEAD_END.
;
4D17: 04 03      ; W
4D19: 01 27      ;     move_look(RM_27_TWISTY_PASSAGES12) ;; woodsRoom53
4D1B: 00         ;

Script_RM_2F_DEAD_END7: ; woodsRoom86
; PS_13
; DEAD_END.
;
4D1C: 09 03      ; U
4D1E: 01 23      ;     move_look(RM_23_TWISTY_PASSAGES8) ;; woodsRoom52
4D20: 00         ;

Script_RM_30_DEAD_END8: ; woodsRoom56
; PS_13
; DEAD_END.
;
4D21: 09 03      ; U
4D23: 01 24      ;     move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55
4D25: 00         ;

Script_RM_31_DEAD_END9: ; woodsRoom58
; PS_13
; DEAD_END.
;
4D26: 02 03      ; E
4D28: 01 34      ;     move_look(RM_34_BRINK_OF_LARGE_PIT) ;; woodsRoom57
4D2A: 00         ;

Script_RM_32_DEAD_END10: ; woodsRoom85
; PS_13
; DEAD_END.
;
4D2B: 02 03      ; E
4D2D: 01 29      ;     move_look(RM_29_TWISTY_PASSAGES14) ;; woodsRoom83
4D2F: 00         ;

Script_RM_33_DEAD_END11: ; woodsRoom81
; PS_13
; DEAD_END.
;
4D30: 04 03      ; W
4D32: 01 1D      ;     move_look(RM_1D_TWISTY_PASSAGES2) ;; woodsRoom80
4D34: 21 0B      ; DROP
4D36: 11 29      ;     is_object_user_input(OBJ_29_COINS)
4D38: 15 29 00   ;     move_object_to_room(OBJ_29_COINS, RM_00_nowhere)
4D3B: 18 23      ;     move_object_to_current_room(OBJ_23_BATTERIES_FRESH)
4D3D: 04 58 7C   ;     print(PS_B2) THERE_ARE_NOW_SOME_FRESH_BATTERIES_HERE.
4D40: 00         ;

Script_RM_34_BRINK_OF_LARGE_PIT: ; woodsRoom57
; PS_19
; YOU_ARE_ON_THE_BRINK_OF_A_LARGE_PIT.__YOU_COULD_CLIMB_DOWN,_BUT_
; YOU_WOULD_NOT_BE_ABLE_TO_CLIMB_BACK_UP.__THE_MAZE_CONTINUES_ON__
; THIS_LEVEL.
;
4D41: 01 03      ; N
4D43: 01 29      ;     move_look(RM_29_TWISTY_PASSAGES14) ;; woodsRoom83
4D45: 02 03      ; E
4D47: 01 28      ;     move_look(RM_28_TWISTY_PASSAGES13) ;; woodsRoom84
4D49: 03 03      ; S
4D4B: 01 31      ;     move_look(RM_31_DEAD_END9) ;; woodsRoom58
4D4D: 04 03      ; W
4D4F: 01 24      ;     move_look(RM_24_TWISTY_PASSAGES9) ;; woodsRoom55
4D51: 0A 03      ; D
4D53: 01 0B      ;     move_look(RM_0B_SPLENDID_CHAMBER) ;; woodsRoom13
4D55: 00         ;

Script_RM_35_DEAD_END12: ; woodsRoom114 CHEST_ROOM1
; PS_13
; DEAD_END.
;
4D56: 06 03      ; SE
4D58: 01 28      ;     move_look(RM_28_TWISTY_PASSAGES13) ;; woodsRoom84
4D5A: 00         ;

Script_RM_36_DIRTY_BROKEN_PASSAGE: ; woodsRoom36
; PS_1A
; YOU_ARE_IN_A_DIRTY_BROKEN_PASSAGE.__TO_THE_EAST_IS_A_CRAWL.__TO_
; THE_WEST_IS_A_LARGE_PASSAGE.__ABOVE_YOU_IS_A_HOLE_TO_ANOTHER____
; PASSAGE.
;
4D5B: 02 03      ; E
4D5D: 01 37      ;     move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37
4D5F: 04 03      ; W
4D61: 01 39      ;     move_look(RM_39_ROOM_OF_BES) ;; woodsRoom39
4D63: 09 03      ; U
4D65: 01 19      ;     move_look(RM_19_LOW_NS_PASSAGE) ;; woodsRoom28
4D67: 00         ;

Script_RM_37_BRINK_OF_CLEAN_PIT: ; woodsRoom37
; PS_1B
; YOU_ARE_ON_THE_BRINK_OF_A_SMALL_CLEAN_CLIMBABLE_PIT.__A_CRAWL___
; LEADS_WEST.
;
4D68: 04 03      ; W
4D6A: 01 36      ;     move_look(RM_36_DIRTY_BROKEN_PASSAGE) ;; woodsRoom36
4D6C: 0A 03      ; D
4D6E: 01 38      ;     move_look(RM_38_PIT_LITTLE_STREAM) ;; woodsRoom38
4D70: 11 03      ; CLIMB
4D72: 01 38      ;     move_look(RM_38_PIT_LITTLE_STREAM) ;; woodsRoom38
4D74: 00         ;

Script_RM_38_PIT_LITTLE_STREAM: ; woodsRoom38
; PS_1C
; YOU_ARE_IN_THE_BOTTOM_OF_A_SMALL_PIT_WITH_A_LITTLE_STREAM,_WHICH
; ENTERS_AND_EXITS_THROUGH_TINY_SLITS.
;
4D75: 09 03      ; U
4D77: 01 37      ;     move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37
4D79: 0C 03      ; OUT
4D7B: 01 37      ;     move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37
4D7D: 11 03      ; CLIMB
4D7F: 01 37      ;     move_look(RM_37_BRINK_OF_CLEAN_PIT) ;; woodsRoom37
4D81: 0A 04      ; D
4D83: 04 7B 72   ;     print(PS_73) YOU_DON'T_FIT_THROUGH_TWO-INCH_SLIT!
4D86: 27 0B      ; FILL
4D88: 07 06      ;     stop_if_pass ...
4D8A: 02 1C      ;         is_in_pack(OBJ_1C_WATER)
4D8C: 04 37 7B   ;         print(PS_AC) YOUR_BOTTLE_IS_ALREADY_FULL.
4D8F: 19 1C 1B   ;     put_object_in_container_print_ok(OBJ_1C_WATER, OBJ_1B_BOTTLE)
4D92: 00         ;

Script_RM_39_ROOM_OF_BES: ; woodsRoom39
; PS_1D
; YOU_ARE_IN_A_THE_ROOM_OF_BES,_WHOSE_PICTURE_IS_ON_THE_WALL._____
; THERE_IS_A_BIG_HOLE_IN_THE_FLOOR.__THERE_IS_A_PASSAGE_LEADING___
; EAST.
;
4D93: 02 03      ; E
4D95: 01 36      ;     move_look(RM_36_DIRTY_BROKEN_PASSAGE) ;; woodsRoom36
4D97: 0A 03      ; D
4D99: 01 3A      ;     move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64
4D9B: 00         ;

Script_RM_3A_COMPLEX_JUNCTION: ; woodsRoom64
; PS_1E
; YOU_ARE_AT_A_COMPLEX_JUNCTION.__A_LOW_HANDS_AND_KNEES_PASSAGE___
; FROM_THE_NORTH_JOINS_A_HIGHER_CRAWL_FROM_THE_EAST_TO_MAKE_A_____
; WALKING_PASSAGE_GOING_WEST.__THERE_IS_ALSO_A_LARGE_ROOM_ABOVE.__
; THE_AIR_IS_DAMP_HERE.
;
4D9C: 01 03      ; N
4D9E: 01 3D      ;     move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103
4DA0: 02 03      ; E
4DA2: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DA4: 04 03      ; W
4DA6: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4DA8: 09 03      ; U
4DAA: 01 39      ;     move_look(RM_39_ROOM_OF_BES) ;; woodsRoom39
4DAC: 11 03      ; CLIMB
4DAE: 01 39      ;     move_look(RM_39_ROOM_OF_BES) ;; woodsRoom39
4DB0: 00         ;

Script_RM_3B_ANTEROOM_OF_SEKER: ; woodsRoom106
; PS_1F
; YOU_ARE_IN_THE_UNDERWORLD_ANTEROOM_OF_SEKER.__PASSAGES_GO_EAST,_
; WEST,_AND_UP.__HUMAN_BONES_ARE_STREWN_ABOUT_ON_THE_FLOOR._______
; HIEROGLYPHICS_ON_THE_WALL_ROUGHLY_TRANSLATE_TO_"THOSE_WHO_______
; PROCEED_EAST_MAY_NEVER_RETURN."
;
4DB1: 02 03      ; E
4DB3: 01 3C      ;     move_look(RM_3C_LAND_OF_DEAD) ;; woodsRoom108
4DB5: 04 03      ; W
4DB7: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4DB9: 09 03      ; U
4DBB: 01 3A      ;     move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64
4DBD: 00         ;

Script_RM_3C_LAND_OF_DEAD: ; woodsRoom108
; PS_20
; YOU_ARE_AT_THE_LAND_OF_DEAD.__PASSAGES_LEAD_OFF_IN_>ALL<________
; DIRECTIONS.
;
4DBE: 01 07      ; N
4DC0: 07 03      ;     stop_if_pass ...
4DC2: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DC4: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DC6: 02 07      ; E
4DC8: 07 03      ;     stop_if_pass ...
4DCA: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DCC: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DCE: 03 07      ; S
4DD0: 07 03      ;     stop_if_pass ...
4DD2: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DD4: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DD6: 05 07      ; NE
4DD8: 07 03      ;     stop_if_pass ...
4DDA: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DDC: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DDE: 06 07      ; SE
4DE0: 07 03      ;     stop_if_pass ...
4DE2: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DE4: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DE6: 07 07      ; SW
4DE8: 07 03      ;     stop_if_pass ...
4DEA: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DEC: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DEE: 08 07      ; NW
4DF0: 07 03      ;     stop_if_pass ...
4DF2: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DF4: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DF6: 09 07      ; U
4DF8: 07 03      ;     stop_if_pass ...
4DFA: 0A F0      ;         pyramid_crawl_move_random(0xF0)
4DFC: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4DFE: 04 06      ; W
4E00: 04 CF 72   ;     print(PS_75) YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_FOUND_YOUR_WAY_
;                                   BLOCKED_BY_A_FALLEN_SLAB.__YOU_ARE_NOW_BACK_IN_THE_MAIN_PASSAGE.
4E03: 01 3C      ;     move_look(RM_3C_LAND_OF_DEAD) ;; woodsRoom108
4E05: 00         ;

Script_RM_3D_ANCIENT_DRAWINGS: ; woodsRoom103
; PS_21
; YOU'RE_IN_A_LARGE_ROOM_WITH_ANCIENT_DRAWINGS_ON_ALL_WALLS.______
; THE_PICTURES_DEPICT_ATUM,_A_PHARAOH_WEARING_THE_DOUBLE_CROWN.___
; A_SHALLOW_PASSAGE_PROCEEDS_DOWNWARD,_AND_A_SOMEWHAT_STEEPER_ONE_
; LEADS_UP.__A_LOW_HANDS_AND_KNEES_PASSAGE_ENTERS_FROM_THE_SOUTH.
;
4E06: 03 11      ; S
4E08: 07 06      ;     stop_if_pass ...
4E0A: 02 17      ;         is_in_pack(OBJ_17_SARCOPH_FULL)
4E0C: 04 27 73   ;         print(PS_76) YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE!
4E0F: 07 06      ;     stop_if_pass ...
4E11: 02 18      ;         is_in_pack(OBJ_18_SARCOPH_EMPTY)
4E13: 04 27 73   ;         print(PS_76) YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE!
4E16: 01 3A      ;     move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64
4E18: 09 03      ; U
4E1A: 01 3E      ;     move_look(RM_3E_MOON_GOD) ;; woodsRoom102
4E1C: 0A 03      ; D
4E1E: 01 3F      ;     move_look(RM_3F_RAGGED_WALLS) ;; woodsRoom104
4E20: 00         ;

Script_RM_3E_MOON_GOD: ; woodsRoom102
; PS_22
; YOU_ARE_IN_A_CHAMBER_WHOSE_WALL_CONTAINS_A_PICTURE_OF_A_MAN_____
; WEARING_THE_LUNAR_DISK_ON_HIS_HEAD.__HE_IS_THE_GOD_KHONS,_THE___
; MOON_GOD.
;
4E21: 0A 03      ; D
4E23: 01 3D      ;     move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103
4E25: 0C 03      ; OUT
4E27: 01 3D      ;     move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103
4E29: 00         ;

Script_RM_3F_RAGGED_WALLS: ; woodsRoom104
; PS_23
; YOU_ARE_IN_A_LONG_SLOPING_CORRIDOR_WITH_RAGGED_WALLS._
;
4E2A: 09 03      ; U
4E2C: 01 3D      ;     move_look(RM_3D_ANCIENT_DRAWINGS) ;; woodsRoom103
4E2E: 0A 03      ; D
4E30: 01 40      ;     move_look(RM_40_CUL_DE_SAC) ;; woodsRoom105
4E32: 00         ;

Script_RM_40_CUL_DE_SAC: ; woodsRoom105
; PS_24
; YOU_ARE_IN_A_CUL-DE-SAC_ABOUT_EIGHT_FEET_ACROSS.
;
4E33: 09 03      ; U
4E35: 01 3F      ;     move_look(RM_3F_RAGGED_WALLS) ;; woodsRoom104
4E37: 0C 03      ; OUT
4E39: 01 3F      ;     move_look(RM_3F_RAGGED_WALLS) ;; woodsRoom104
4E3B: 00         ;

Script_RM_41_CHAMBER_OF_HORUS: ; woodsRoom65
; PS_25
; YOU_ARE_IN_THE_CHAMBER_OF_HORUS,_A_LONG_EAST/WEST_PASSAGE_WITH__
; HOLES_EVERYWHERE.__TO_EXPLORE_AT_RANDOM,_SELECT_NORTH,_SOUTH,___
; UP,_OR_DOWN.
;
4E3C: 02 03      ; E
4E3E: 01 3A      ;     move_look(RM_3A_COMPLEX_JUNCTION) ;; woodsRoom64
4E40: 04 03      ; W
4E42: 01 4E      ;     move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67
4E44: 09 07      ; U
4E46: 07 03      ;     stop_if_pass ...
4E48: 0A CC      ;         pyramid_crawl_move_random(0xCC)
4E4A: 01 48      ;     move_look(RM_48_PRIESTS_BEDROOM) ;; woodsRoom96
4E4C: 01 07      ; N
4E4E: 07 03      ;     stop_if_pass ...
4E50: 0A CC      ;         pyramid_crawl_move_random(0xCC)
4E52: 01 49      ;     move_look(RM_49_HIGH_PRIEST) ;; woodsRoom99
4E54: 03 07      ; S
4E56: 07 03      ;     stop_if_pass ...
4E58: 0A CC      ;         pyramid_crawl_move_random(0xCC)
4E5A: 01 42      ;     move_look(RM_42_FALLEN_SLAB) ;; woodsRoom68
4E5C: 0A 07      ; D
4E5E: 07 03      ;     stop_if_pass ...
4E60: 0A CC      ;         pyramid_crawl_move_random(0xCC)
4E62: 01 3B      ;     move_look(RM_3B_ANTEROOM_OF_SEKER) ;; woodsRoom106
4E64: 00         ;

Script_RM_42_FALLEN_SLAB: ; woodsRoom68
; PS_26
; YOU_ARE_IN_A_LARGE_LOW_CIRCULAR_CHAMBER_WHOSE_FLOOR_IS_AN_______
; IMMENSE_SLAB_FALLEN_FROM_THE_CEILING.__EAST_AND_WEST_THERE_ONCE_
; WHERE_LARGE_PASSAGES,_BUT_THEY_ARE_NOW_FILLED_WITH_SAND.________
; LOW_SMALL_PASSAGES_GO_NORTH_AND_SOUTH.
;
4E65: 01 03      ; N
4E67: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4E69: 03 03      ; S
4E6B: 01 50      ;     move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23
4E6D: 00         ;

Script_RM_48_PRIESTS_BEDROOM: ; woodsRoom96
; PS_27
; YOU_ARE_IN_THE_PRIEST'S_BEDROOM.__THE_WALLS_ARE_COVERED_WITH____
; CURTAINS,_THE_FLOOR_WITH_A_THICK_PILE_CARPET.__MOSS_COVERS_THE__
; CEILING.
;
4E6E: 04 03      ; W
4E70: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4E72: 0C 03      ; OUT
4E74: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4E76: 00         ;

Script_RM_49_HIGH_PRIEST: ; woodsRoom99
; PS_28
; THIS_IS_THE_CHAMBER_OF_THE_HIGH_PRIEST.___ANCIENT_DRAWINGS_COVER
; THE_WALLS.__AN_EXTREMELY_TIGHT_TUNNEL_LEADS_WEST.__IT_LOOKS_LIKE
; A_TIGHT_SQUEEZE.__ANOTHER_PASSAGE_LEADS_SE.
;
4E77: 04 09      ; W
4E79: 07 04      ;     stop_if_pass ...
4E7B: 0D         ;         is_pack_just_emerald()
4E7C: 01 4C      ;         move_look(RM_4C_EERIE_GREEN_LIGHT) ;; woodsRoom100
4E7E: 04 53 73   ;     print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU.
;                                   YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING.
4E81: 06 03      ; SE
4E83: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4E85: 00         ;

Script_RM_4C_EERIE_GREEN_LIGHT: ; woodsRoom100
; PS_29
; YOU_ARE_IN_THE_HIGH_PRIEST'S_TREASURE_ROOM_LIT_BY_AN_EERIE_GREEN
; LIGHT.__A_NARROW_TUNNEL_EXITS_TO_THE_EAST.
;
4E86: 02 09      ; E
4E88: 07 04      ;     stop_if_pass ...
4E8A: 0D         ;         is_pack_just_emerald()
4E8B: 01 49      ;         move_look(RM_49_HIGH_PRIEST) ;; woodsRoom99
4E8D: 04 53 73   ;     print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU.
;                                   YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING.
4E90: 0C 09      ; OUT
4E92: 07 04      ;     stop_if_pass ...
4E94: 0D         ;         is_pack_just_emerald()
4E95: 01 49      ;         move_look(RM_49_HIGH_PRIEST) ;; woodsRoom99
4E97: 04 53 73   ;     print(PS_77) SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU.
;                                   YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING.
4E9A: 00         ;

Script_RM_4E_WEAST_END_TWOPIT: ; woodsRoom67
; PS_2A
; YOU_ARE_AT_THE_EAST_END_OF_THE_TWOPIT_ROOM.__THE_FLOOR_HERE_IS__
; LITTERED_WITH_THIN_ROCK_SLABS,_WHICH_MAKE_IT_EASY_TO_DESCEND_THE
; PITS.__THERE_IS_A_PATH_HERE_BYPASSING_THE_PITS_TO_CONNECT_______
; PASSAGES_EAST_AND_WEST.__THERE_ARE_HOLES_ALL_OVER,_BUT_THE_ONLY_
; BIG_ONE_IS_ON_THE_WALL_DIRECTLY_OVER_THE_WEST_PIT_WHERE_YOU_____
; CAN'T_GET_TO_IT.
;
4E9B: 02 03      ; E
4E9D: 01 41      ;     move_look(RM_41_CHAMBER_OF_HORUS) ;; woodsRoom65
4E9F: 04 03      ; W
4EA1: 01 50      ;     move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23
4EA3: 0A 03      ; D
4EA5: 01 4F      ;     move_look(RM_4F_BOTTOM_EASTERN_PIT) ;; woodsRoom24
4EA7: 00         ;

Script_RM_4F_BOTTOM_EASTERN_PIT: ; woodsRoom24
; PS_2B
; YOU_ARE_AT_THE_BOTTOM_OF_THE_EASTERN_PIT_IN_THE_TWOPIT_ROOM.
;
4EA8: 09 03      ; U
4EAA: 01 4E      ;     move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67
4EAC: 0C 03      ; OUT
4EAE: 01 4E      ;     move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67
4EB0: 00         ;

Script_RM_50_WEST_END_TWOPIT: ; woodsRoom23
; PS_2C
; YOU_ARE_AT_THE_WEST_END_OF_THE_TWOPIT_ROOM.__THERE_IS_A_LARGE___
; HOLE_IN_THE_WALL_ABOVE_THE_PIT_AT_THIS_END_OF_THE_ROOM.
;
4EB1: 02 03      ; E
4EB3: 01 4E      ;     move_look(RM_4E_WEAST_END_TWOPIT) ;; woodsRoom67
4EB5: 04 03      ; W
4EB7: 01 42      ;     move_look(RM_42_FALLEN_SLAB) ;; woodsRoom68
4EB9: 0A 03      ; D
4EBB: 01 51      ;     move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25
4EBD: 00         ;

Script_RM_51_BOTTOM_WEST_PIT: ; woodsRoom25
; PS_2D
; YOU_ARE_AT_THE_BOTTOM_OF_THE_WEST_PIT_IN_THE_TWOPIT_ROOM.__THERE
; IS_A_LARGE_HOLE_IN_THE_WALL_ABOUT_TWENTY_FIVE_FEET_ABOVE_YOU.
;
4EBE: 09 03      ; U
4EC0: 01 50      ;     move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23
4EC2: 0C 03      ; OUT
4EC4: 01 50      ;     move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23
4EC6: 11 16      ; CLIMB
4EC8: 07 08      ;     stop_if_pass ...
4ECA: 03 09      ;         is_in_pack_or_current_room(OBJ_09_PLANT_LARGE)
4ECC: 04 9E 73   ;         print(PS_78) YOU_CLAMBER_UP_THE_PLANT_AND_SCURRY_THROUGH_THE_HOLE_AT_THE_TOP.
4ECF: 01 4D      ;         move_look(RM_4D_PROFUSION_OF_LEAVES) ;; woodsRoom88
4ED1: 07 06      ;     stop_if_pass ...
4ED3: 03 08      ;         is_in_pack_or_current_room(OBJ_08_PLANT_MEDIUM)
4ED5: 04 CB 73   ;         print(PS_79) YOU'VE_CLIMBED_UP_THE_PLANT_AND_OUT_OF_THE_PIT.
4ED8: 01 50      ;     move_look(RM_50_WEST_END_TWOPIT) ;; woodsRoom23
4EDA: 04 7D 7D   ;     print(PS_B8) THERE_IS_NOTHING_HERE_TO_CLIMB.__USE_UP_OR_OUT_TO_LEAVE_THE_PIT.
4EDD: 24 2F      ; POUR
4EDF: 11 1C      ;     is_object_user_input(OBJ_1C_WATER)
4EE1: 15 1C 00   ;     move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
4EE4: 07 0E      ;     stop_if_pass ...
4EE6: 03 07      ;         is_in_pack_or_current_room(OBJ_07_PLANT_SMALL)
4EE8: 15 07 00   ;         move_object_to_room(OBJ_07_PLANT_SMALL, RM_00_nowhere)
4EEB: 18 08      ;         move_object_to_current_room(OBJ_08_PLANT_MEDIUM)
4EED: 04 02 7D   ;         print(PS_B5) THE_PLANT_SPURTS_INTO_FURIOUS_GROWTH_FOR_A_FEW_SECONDS.
4EF0: 04 71 6E   ;         print(PS_4C) THERE_IS_A_TWELVE_FOOT_BEAN_STALK_STRETCHING_UP_OUT_OF_THE_PIT,_
;                                       BELLOWING_"WATER..._WATER..."
4EF3: 07 0E      ;     stop_if_pass ...
4EF5: 03 08      ;         is_in_pack_or_current_room(OBJ_08_PLANT_MEDIUM)
4EF7: 15 08 00   ;         move_object_to_room(OBJ_08_PLANT_MEDIUM, RM_00_nowhere)
4EFA: 18 09      ;         move_object_to_current_room(OBJ_09_PLANT_LARGE)
4EFC: 04 29 7D   ;         print(PS_B6) THE_PLANT_GROWS_EXPLOSIVELY,_ALMOST_FILLING_THE_BOTTOM_OF_THE___
;                                       PIT.
4EFF: 04 B1 6E   ;         print(PS_4D) THERE_IS_A_GIGANTIC_BEAN_STALK_STRETCHING_ALL_THE_WAY_UP_TO_THE_
;                                       HOLE.
4F02: 15 09 00   ;     move_object_to_room(OBJ_09_PLANT_LARGE, RM_00_nowhere)
4F05: 18 07      ;     move_object_to_current_room(OBJ_07_PLANT_SMALL)
4F07: 04 59 7D   ;     print(PS_B7) YOU'VE_OVER-WATERED_THE_PLANT!__IT'S_SHRIVELING_UP!
4F0A: 04 45 6E   ;     print(PS_4B) THERE_IS_A_TINY_PLANT_IN_THE_PIT,_MURMURING_"WATER,_WATER,_..."
4F0D: 00         ;

Script_RM_4D_PROFUSION_OF_LEAVES: ; woodsRoom88
; PS_2E
; YOU_ARE_IN_A_LONG,_NARROW_CORRIDOR_STRETCHING_OUT_OF_SIGHT_TO___
; THE_WEST.__AT_THE_EASTERN_END_IS_A_HOLE_THROUGH_WHICH_YOU_CAN___
; SEE_A_PROFUSION_OF_LEAVES.
;
4F0E: 02 03      ; E
4F10: 01 51      ;     move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25
4F12: 0A 03      ; D
4F14: 01 51      ;     move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25
4F16: 11 03      ; CLIMB
4F18: 01 51      ;     move_look(RM_51_BOTTOM_WEST_PIT) ;; woodsRoom25
4F1A: 10 05      ; JUMP
4F1C: 04 71 71   ;     print(PS_6B) YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK.
4F1F: 05         ;     death_and_resurrect()
4F20: 04 03      ; W
4F22: 01 47      ;     move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92
4F24: 00         ;

Script_RM_47_CHAMBER_OF_OSIRIS: ; woodsRoom92
; PS_2F
; YOU_ARE_IN_THE_CHAMBER_OF_OSIRIS._THE_CEILING_IS_TOO_HIGH_UP_FOR
; YOUR_LAMP_TO_SHOW_IT.__PASSAGES_LEAD_EAST,_NORTH,_AND_SOUTH.
;
4F25: 01 03      ; N
4F27: 01 44      ;     move_look(RM_44_CHAMBER_OF_NEKHEBET) ;; woodsRoom94
4F29: 02 03      ; E
4F2B: 01 46      ;     move_look(RM_46_BLOCKED_FALLEN_BLOCK) ;; woodsRoom93
4F2D: 03 03      ; S
4F2F: 01 4D      ;     move_look(RM_4D_PROFUSION_OF_LEAVES) ;; woodsRoom88
4F31: 00         ;

Script_RM_46_BLOCKED_FALLEN_BLOCK: ; woodsRoom93
; PS_30
; THE_PASSAGE_HERE_IS_BLOCKED_BY_A_FALLEN_BLOCK.
;
4F32: 03 03      ; S
4F34: 01 47      ;     move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92
4F36: 0C 03      ; OUT
4F38: 01 47      ;     move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92
4F3A: 00         ;

Script_RM_44_CHAMBER_OF_NEKHEBET: ; woodsRoom94
; PS_31
; YOU_ARE_IN_THE_CHAMBER_OF_NEKHEBET,_A_WOMAN_WITH_THE_HEAD_OF_A__
; VULTURE,_WEARING_THE_CROWN_OF_EGYPT.__A_PASSAGE_EXITS_TO_THE____
; SOUTH.
;
4F3B: 03 03      ; S
4F3D: 01 47      ;     move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92
4F3F: 0C 03      ; OUT
4F41: 01 47      ;     move_look(RM_47_CHAMBER_OF_OSIRIS) ;; woodsRoom92
4F43: 00         ;

4F44: FF

Ambient Light Table

When we calculate the score, we look at the upper bit in each room. If the bit is set, the second value is added to the score. This mechanism is not used by the existing code -- probably an old feature.

This is the beginning of the save-to-tape. The room-score values would need to be saved. Thus the save-to-tape begins here even though nothing changes.

; 2 bytes per room
; * 0x4000 means there is light in the room (no need for a lamp)
; * 0x0000 means you better have a lamp
;
; 2nd byte is BCD score if upper bit is set of 1st byte

AmbientLightTable:
;                 Room                            Light
4F45: 40 00 ; RM_01_BEFORE_ENTRANCE               natural light
4F47: 40 00 ; RM_02_IN_ENTRANCE                   natural light
4F49: 40 00 ; RM_03_DESERT1                       natural light
4F4B: 40 00 ; RM_04_DESERT2                       natural light
4F4D: 40 00 ; RM_05_DESERT3                       natural light
4F4F: 40 00 ; RM_06_DESERT4                       natural light
4F51: 40 00 ; RM_07_BENEATH_A_HOLE                natural light
4F53: 00 00 ; RM_08_CRAWLING_OVER_PEBBLES         dark
4F55: 00 00 ; RM_09_BROKEN_POTTERY                dark
4F57: 00 00 ; RM_0A_AWKWARD_SLOPING               dark
4F59: 00 00 ; RM_0B_SPLENDID_CHAMBER              dark
4F5B: 00 00 ; RM_0C_SMALL_PIT_WHITE_MIST          dark
4F5D: 00 00 ; RM_0D_STEPS_LEAD_UP_DOME            dark
4F5F: 00 00 ; RM_0E_LOW_ROOM_HIEROGLYPH           dark
4F61: 00 00 ; RM_0F_EAST_BANK_BOTTOMLESS_PIT      dark
4F63: 00 00 ; RM_10_PHARAOHS_CHAMBER              dark
4F65: 00 00 ; RM_11_SOUTH_SIDE_CHAMBER            dark
4F67: 00 00 ; RM_12_HALL_OF_GODS                  dark
4F69: 00 00 ; RM_13_LITTLE_PASSAGE_SIX_FEET       dark
4F6B: 00 00 ; RM_14_EAST_END_LONG_HALL            dark
4F6D: 00 00 ; RM_15_WEST_END_FEATURELESS_HALL     dark
4F6F: 00 00 ; RM_16_CROSSOVER                     dark
4F71: 00 00 ; RM_17_DEAD_END1                     dark
4F73: 00 00 ; RM_18_THRONE_CHAMBER                dark
4F75: 00 00 ; RM_19_LOW_NS_PASSAGE                dark
4F77: 00 00 ; RM_1A_PANEL_NORTH_WALL              dark
4F79: 00 00 ; RM_1B_CHAMBER_OF_ANUBIS             dark
4F7B: 00 00 ; RM_1C_TWISTY_PASSAGES1              dark
4F7D: 00 00 ; RM_1D_TWISTY_PASSAGES2              dark
4F7F: 00 00 ; RM_1E_TWISTY_PASSAGES3              dark
4F81: 00 00 ; RM_1F_TWISTY_PASSAGES4              dark
4F83: 00 00 ; RM_20_TWISTY_PASSAGES5              dark
4F85: 00 00 ; RM_21_TWISTY_PASSAGES6              dark
4F87: 00 00 ; RM_22_TWISTY_PASSAGES7              dark
4F89: 00 00 ; RM_23_TWISTY_PASSAGES8              dark
4F8B: 00 00 ; RM_24_TWISTY_PASSAGES9              dark
4F8D: 00 00 ; RM_25_TWISTY_PASSAGES10             dark
4F8F: 00 00 ; RM_26_TWISTY_PASSAGES11             dark
4F91: 00 00 ; RM_27_TWISTY_PASSAGES12             dark
4F93: 00 00 ; RM_28_TWISTY_PASSAGES13             dark
4F95: 00 00 ; RM_29_TWISTY_PASSAGES14             dark
4F97: 00 00 ; RM_2A_DEAD_END2                     dark
4F99: 00 00 ; RM_2B_DEAD_END3                     dark
4F9B: 00 00 ; RM_2C_DEAD_END4                     dark
4F9D: 00 00 ; RM_2D_DEAD_END5                     dark
4F9F: 00 00 ; RM_2E_DEAD_END6                     dark
4FA1: 00 00 ; RM_2F_DEAD_END7                     dark
4FA3: 00 00 ; RM_30_DEAD_END8                     dark
4FA5: 00 00 ; RM_31_DEAD_END9                     dark
4FA7: 00 00 ; RM_32_DEAD_END10                    dark
4FA9: 00 00 ; RM_33_DEAD_END11                    dark
4FAB: 00 00 ; RM_34_BRINK_OF_LARGE_PIT            dark
4FAD: 00 00 ; RM_35_DEAD_END12                    dark
4FAF: 00 00 ; RM_36_DIRTY_BROKEN_PASSAGE          dark
4FB1: 00 00 ; RM_37_BRINK_OF_CLEAN_PIT            dark
4FB3: 00 00 ; RM_38_PIT_LITTLE_STREAM             dark
4FB5: 00 00 ; RM_39_ROOM_OF_BES                   dark
4FB7: 00 00 ; RM_3A_COMPLEX_JUNCTION              dark
4FB9: 00 00 ; RM_3B_ANTEROOM_OF_SEKER             dark
4FBB: 00 00 ; RM_3C_LAND_OF_DEAD                  dark
4FBD: 00 00 ; RM_3D_ANCIENT_DRAWINGS              dark
4FBF: 00 00 ; RM_3E_MOON_GOD                      dark
4FC1: 00 00 ; RM_3F_RAGGED_WALLS                  dark
4FC3: 00 00 ; RM_40_CUL_DE_SAC                    dark
4FC5: 00 00 ; RM_41_CHAMBER_OF_HORUS              dark
4FC7: 00 00 ; RM_42_FALLEN_SLAB                   dark
4FC9: 00 00 ; RM_43_
4FCB: 00 00 ; RM_44_CHAMBER_OF_NEKHEBET           dark
4FCD: 00 00 ; RM_45_
4FCF: 00 00 ; RM_46_BLOCKED_FALLEN_BLOCK          dark
4FD1: 00 00 ; RM_47_CHAMBER_OF_OSIRIS             dark
4FD3: 00 00 ; RM_48_PRIESTS_BEDROOM               dark
4FD5: 00 00 ; RM_49_HIGH_PRIEST                   dark
4FD7: 00 00 ; RM_4A_
4FD9: 00 00 ; RM_4B_
4FDB: 40 00 ; RM_4C_EERIE_GREEN_LIGHT             "LIT_BY_AN_ERRIE_GREEN_LIGHT"
4FDD: 00 00 ; RM_4D_PROFUSION_OF_LEAVES           dark
4FDF: 00 00 ; RM_4E_WEAST_END_TWOPIT              dark
4FE1: 00 00 ; RM_4F_BOTTOM_EASTERN_PIT            dark
4FE3: 00 00 ; RM_50_WEST_END_TWOPIT               dark
4FE5: 00 00 ; RM_51_BOTTOM_WEST_PIT               dark

Object Data

; This two-byte table contains the object's attributes ("isTreasure" and "isGettable")
; and the object's current location (a room or inside another object).
;
; The code references the objects by numeric id, but I have given them unique names
; in the table below. All object names begin with "#". All word names begin with "_".
;
; The format of the two bytes are:
;
;   MCT----- RRRRRRRR
;
;   M - if set, the second byte is an object number (container). if clear, the second byte is a room number.
;   C - if set, object can be picked up.
;   T - if set, object is treasure.
;
;   RRRRRRRR - Second byte is the object's location (containing object or room number).

ObjectData:
;             MCT      Name                     Start location
4FE7: 00 00 ; 000..... OBJ_01_BRIDGE_ROOM_0F    *
4FE9: 00 00 ; 000..... OBJ_02_BRIDGE_ROOM_12    *
4FEB: 00 00 ;
4FED: 00 00 ;
4FEF: 00 00 ;
4FF1: 00 33 ; 000..... OBJ_06_VENDING_MACHINE   RM_33_DEAD_END11
4FF3: 00 51 ; 000..... OBJ_07_PLANT_SMALL       RM_51_BOTTOM_WEST_PIT
4FF5: 00 00 ; 000..... OBJ_08_PLANT_MEDIUM      *
4FF7: 00 00 ; 000..... OBJ_09_PLANT_LARGE       *
4FF9: 00 00 ;
4FFB: 00 10 ; 000..... OBJ_0B_SERPENT           RM_10_PHARAOHS_CHAMBER
4FFD: 00 00 ;
4FFF: 00 00 ;
5001: 40 02 ; 010..... OBJ_0E_LAMP_OFF          RM_02_IN_ENTRANCE
5003: 40 00 ; 010..... OBJ_0F_LAMP_ON           *
5005: 40 08 ; 010..... OBJ_10_BOX               RM_08_CRAWLING_OVER_PEBBLES
5007: 40 09 ; 010..... OBJ_11_SCEPTER           RM_09_BROKEN_POTTERY
5009: 40 48 ; 010..... OBJ_12_PILLOW            RM_48_PRIESTS_BEDROOM
500B: 40 0B ; 010..... OBJ_13_BIRD              RM_0B_SPLENDID_CHAMBER
500D: 00 00 ; 000..... OBJ_14_BIRD_IN_BOX       *
500F: 00 00 ; 000..... OBJ_15_POTTERY           *
5011: 60 00 ; 011..... OBJ_16_PEARL             *
5013: 40 3D ; 010..... OBJ_17_SARCOPH_FULL      RM_3D_ANCIENT_DRAWINGS
5015: 40 00 ; 010..... OBJ_18_SARCOPH_EMPTY     *
5017: 40 3B ; 010..... OBJ_19_MAGAZINES         RM_3B_ANTEROOM_OF_SEKER
5019: 40 02 ; 010..... OBJ_1A_FOOD              RM_02_IN_ENTRANCE
501B: 40 02 ; 010..... OBJ_1B_BOTTLE            RM_02_IN_ENTRANCE
501D: C0 1B ; 110..... OBJ_1C_WATER             RM_1B_CHAMBER_OF_ANUBIS
501F: 00 00 ;          oil (in the bottle) from the eastern pit ??
5021: 00 38 ; 000..... OBJ_1E_STREAM_ROOM_38    RM_38_PIT_LITTLE_STREAM
5023: 60 4C ; 011..... OBJ_1F_EMERALD           RM_4C_EERIE_GREEN_LIGHT
5025: 60 00 ; 011..... OBJ_20_VASE_ON_PILLOW    *
5027: 60 49 ; 011..... OBJ_21_VASE              RM_49_HIGH_PRIEST
5029: 60 44 ; 011..... OBJ_22_KEY               RM_44_CHAMBER_OF_NEKHEBET
502B: 40 00 ; 010..... OBJ_23_BATTERIES_FRESH   *
502D: 40 00 ; 010..... OBJ_24_BATTERIES_WORN    *
502F: 60 0E ; 011..... OBJ_25_GOLD              RM_0E_LOW_ROOM_HIEROGLYPH
5031: 60 11 ; 011..... OBJ_26_DIAMONDS          RM_11_SOUTH_SIDE_CHAMBER
5033: 60 19 ; 011..... OBJ_27_SILVER            RM_19_LOW_NS_PASSAGE
5035: 60 12 ; 011..... OBJ_28_JEWELRY           RM_12_HALL_OF_GODS
5037: 60 18 ; 011..... OBJ_29_COINS             RM_18_THRONE_CHAMBER
5039: 60 00 ; 011..... OBJ_2A_CHEST             *
503B: 60 47 ; 011..... OBJ_2B_NEST_EGGS         RM_47_CHAMBER_OF_OSIRIS
503D: 40 00 ; 010..... OBJ_2C_LAMP_DEAD         *

Game Variables

currentRoom:
503F: 01 ; The room the player is in

bcdTurnCountLSB:
5040: 00 ; Number of turns LSB

bcdTurnCountMSB:
5041: 00 ; Number of turns MSB

lampOnTurnCount:
5042: 00 00 ; Number of turns the lamp has burned

lastRoom:
5044: 00 ; Last room the player was in

numObjInPack:
5045: 00 ; Number of objects in the pack

numResurrected:
5046: 00 ; Number of times player resurrected

Object Info

The LoadGame code restores the 1st four bytes of this table even though only the 1st byte is mangled (bug in code?).

Object descriptions (44 objects)

For packable objects each slot points to a message pair. The first is the long description and the second is the short description for the backpack.

ObjectDescriptions:
;             Name                        Desc      Notes
5047: 58 6D ; OBJ_01_BRIDGE_ROOM_0F       PS_40     Stone bridge in RM_0F_EAST_BANK_BOTTOMLESS_PIT
5049: 58 6D ; OBJ_02_BRIDGE_ROOM_12       PS_40     Stone bridge in RM_12_HALL_OF_GODS
504B: C0 47 ;                     -Never used (points to empty string)
504D: C0 47 ;                     -Never used (points to empty string)
504F: C0 47 ;                     -Never used (points to empty string)
5051: E1 6E ; OBJ_06_VENDING_MACHINE      PS_4E     Vending Machine
5053: 45 6E ; OBJ_07_PLANT_SMALL          PS_4B     Tiny plant
5055: 71 6E ; OBJ_08_PLANT_MEDIUM         PS_4C     Twelve foot beanstalk
5057: B1 6E ; OBJ_09_PLANT_LARGE          PS_4D     Giant beanstalk
5059: 00 00 ;                     -Never used (points to null)
505B: 3A 6D ; OBJ_0B_SERPENT              PS_3F     Serpent bars the way
505D: 00 00 ;                     -Never used (points to null)
505F: 00 00 ;                     -Never used (points to null)
5061: 2E 6C ; OBJ_0E_LAMP_OFF             PS_32     Lamp (not lit)
5063: 53 6C ; OBJ_0F_LAMP_ON              PS_34     Lamp (lit)
5065: 75 6C ; OBJ_10_BOX                  PS_36     Statue box
5067: 9E 6C ; OBJ_11_SCEPTER              PS_38     Scepter
5069: 12 6D ; OBJ_12_PILLOW               PS_3D     Pillow
506B: CD 6C ; OBJ_13_BIRD                 PS_3A     Statue
506D: EB 6C ; OBJ_14_BIRD_IN_BOX          PS_3B     Statue in box
506F: ED 70 ; OBJ_15_POTTERY              PS_66     Pottery
5071: 47 71 ; OBJ_16_PEARL                PS_69     Pearl
5073: 78 6D ; OBJ_17_SARCOPH_FULL         PS_41     Sarcophagus with pearl
5075: 78 6D ; OBJ_18_SARCOPH_EMPTY        PS_41     Sarcophagus empty
5077: B1 6D ; OBJ_19_MAGAZINES            PS_43     Magazines
5079: EC 6D ; OBJ_1A_FOOD                 PS_45     Food
507B: 04 6E ; OBJ_1B_BOTTLE               PS_47     Bottle
507D: 20 6E ; OBJ_1C_WATER                PS_49     Water in the bottle
507F: C0 47 ;                     -Never used (points to empty string)
5081: C0 47 ; OBJ_1E_STREAM_ROOM_38           Empty (no description)
5083: 14 71 ; OBJ_1F_EMERALD              PS_67     Emerald
5085: C5 70 ; OBJ_20_VASE_ON_PILLOW       PS_65     Vase on pillow
5087: A2 70 ; OBJ_21_VASE                 PS_63     Vase
5089: 7E 70 ; OBJ_22_KEY                  PS_61     Key
508B: 30 6F ; OBJ_23_BATTERIES_FRESH      PS_4F     Batteries
508D: 4F 6F ; OBJ_24_BATTERIES_WORN       PS_51     Worn-out batteries
508F: 7B 6F ; OBJ_25_GOLD                 PS_53     Gold Nugget
5091: AB 6F ; OBJ_26_DIAMONDS             PS_55     Diamonds
5093: CA 6F ; OBJ_27_SILVER               PS_57     Silver
5095: EA 6F ; OBJ_28_JEWELRY              PS_59     Jewelry
5097: 0E 70 ; OBJ_29_COINS                PS_5B     Coins
5099: 2B 70 ; OBJ_2A_CHEST                PS_5D     Chest
509B: 52 70 ; OBJ_2B_NEST_EGGS            PS_5F     Nest of golden eggs
509D: 2E 6C ; OBJ_2C_LAMP_DEAD            PS_32     Lamp (dead)

Script Commands

; This lookup table holds the pointers to the individual script commands. Each command
; reads 1 or 2 bytes of data from the script. The number of extra bytes read is show
; for reference in the table.

ScriptCommands:
509F: 8A 51        ; COM_01_move_look(room_num)
50A1: C8 52        ; COM_02_is_in_pack(obj_num)
50A3: D7 52        ; COM_03_is_in_pack_or_current_room(obj_num)
50A5: 5E 53        ; COM_04_print(ps_num)
50A7: 49 54        ; COM_05_death_and_resurrect()
50A9: 00 00
50AB: C2 43        ; COM_07_stop_if_pass()
50AD: C7 54        ; COM_08_print_score()
50AF: EF 55        ; COM_09_end_of_game()
50B1: 18 53        ; COM_0A_pyramid_crawl_move_random(value)
50B3: 6B 53        ; COM_0B_drop_object_print_ok(obj_num)
50B5: 32 53        ; COM_0C_move_to_room_if_was_last(room_num)
50B7: FB 52        ; COM_0D_is_pack_just_emerald()
50B9: 81 53        ; COM_0E_move_to_last_room()
50BB: 9B 53        ; COM_0F_print_inventory()
50BD: DB 53        ; COM_10_print_room_description()
50BF: E1 53        ; COM_11_is_object_user_input(obj_num)
50C1: EF 53        ; COM_12_get_from_room_print_ok(obj_num)
50C3: 00 00
50C5: 2B 54        ; COM_14_print_ok()
50C7: 34 54        ; COM_15_move_object_to_room(obj_num, room_num)
50C9: 43 53        ; COM_16_get_users_object_print_ok()
50CB: 24 54        ; COM_17_drop_users_object_print_ok()
50CD: A5 52        ; COM_18_move_object_to_current_room(obj_num)
50CF: B3 52        ; COM_19_put_object_in_container_print_ok(obj_num, obj_num)
50D1: EA 52        ; COM_1A_is_in_current_room(obj_num)
50D3: F5 55        ; COM_1B_load_game()
50D5: 54 56        ; COM_1C_save_game()
50D7: 94 56        ; COM_1D_scramble_directions_print_ack()

After Every Step

; This processing takes place after every user input.[[br]]
;  1. Increment the count on the lamp and the number of turns.[[br]]
;  2.  Warn the player if the lamp is going dim and change the batteries automatically.
AfterEveryStep:
50D9: 3E 0F           LD      A,$0F               ; obj_LAMP_on
50DB: 21 E7 4F        LD      HL,ObjectData       ; Object table
50DE: CD 61 43        CALL    TableOffsetTwoBytes ; Lookup the object info
50E1: 23              INC     HL                  ; Location
50E2: 7E              LD      A,(HL)              ; Is the ...
50E3: A7              AND     A                   ; ... lamp turned on?
50E4: CA 34 51        JP      Z,CheckAutoBatteries; No, bump BCD turn count and out
50E7: 2A 42 50        LD      HL,(lampOnTurnCount); Bump ...
50EA: 23              INC     HL                  ; ... turns the lamp ...
50EB: 22 42 50        LD      (lampOnTurnCount),HL; ... has been on
50EE: 7C              LD      A,H                 ; Has lamp been ...
50EF: FE 01           CP      $01                 ; ... on 256 turns or more?
50F1: C2 34 51        JP      NZ,CheckAutoBatteries; No, bump BCD turn count and out
50F4: 7D              LD      A,L                 ; Has lamp been lit ...
50F5: FE 22           CP      $22                 ; ... exactly 256+34 = 290 turns?
50F7: C2 03 51        JP      NZ,$5103            ; No, skip message
50FA: 21 C5 79        LD      HL,PS_A6            ; "YOUR_LAMP_IS_GETTING_DIM."
50FD: CD AE 45        CALL    PrintPacked         ; Print message
5100: C3 77 51        JP      BumpBCDTurnCount    ; Bump BCD turn count and out
5103: FE 36           CP      $36                 ; Has lamp been lit 256+54 = 310 turns?
5105: C2 34 51        JP      NZ,CheckAutoBatteries; No, bump BCD turn count and out
5108: 3E 0F           LD      A,$0F               ; obj_LAMP_on
510A: 21 E7 4F        LD      HL,ObjectData       ; Object table
510D: CD 61 43        CALL    TableOffsetTwoBytes ; Look up the object info
5110: 23              INC     HL                  ; Point to location
5111: 46              LD      B,(HL)              ; Current location of the obj_LAMP_on
5112: 36 00           LD      (HL),$00            ; The obj_LAMP_on is now out of play
5114: 21 E7 4F        LD      HL,ObjectData       ; Look up ...
5117: 3E 2C           LD      A,$2C               ; ... info for ...
5119: CD 61 43        CALL    TableOffsetTwoBytes ; ... obj_LAMP_dead
511C: 23              INC     HL                  ; Location
511D: 70              LD      (HL),B              ; Replace the obj_LAMP_on with obj_LAMP_dead
511E: 3E 23           LD      A,$23               ; obj_BATTERIES_fresh
5120: 1E FF           LD      E,$FF               ; Fresh batteries in ...
5122: CD 50 43        CALL    GetObjectInfo       ; ... backpack?
5125: CA 34 51        JP      Z,CheckAutoBatteries; Yes, automatically replace them
5128: 21 4A 7A        LD      HL,PS_A7            ; "YOUR_LAMP_HAS_RUN_OUT_OF_POWER."
512B: CD AE 45        CALL    PrintPacked         ; Print the message
512E: CD 45 52        CALL    DescribeRoom        ; Describe the dark room
5131: C3 77 51        JP      BumpBCDTurnCount    ; Bump the BCD turn count and out
;
CheckAutoBatteries:
5134: 2A 42 50        LD      HL,(lampOnTurnCount); Get the turns the lamp has been on
5137: 11 2C 01        LD      DE,$012C            ; Match 300 turns
513A: 7C              LD      A,H                 ; Has lamp been on ...
513B: BA              CP      D                   ; ... 300 turns?
513C: DA 77 51        JP      C,BumpBCDTurnCount  ; No, bump the BCD turn count and out
513F: 7D              LD      A,L                 ; Has lamp been on ...
5140: BB              CP      E                   ; ... 300 turns?
5141: DA 77 51        JP      C,BumpBCDTurnCount  ; No, bump the BCD turn count and out
5144: 3E 23           LD      A,$23               ; Are the ...
5146: 1E FF           LD      E,$FF               ; obj_BATTERIES_fresh ...
5148: CD 50 43        CALL    GetObjectInfo       ; ... in the backpack?
514B: C2 77 51        JP      NZ,BumpBCDTurnCount ; No, bump the BCD turn count and out
514E: 3E 2C           LD      A,$2C               ; Is the ...
5150: 1E FF           LD      E,$FF               ; ... obj_LAMP_dead ...
5152: CD 50 43        CALL    GetObjectInfo       ; ... in the backpack?
5155: C2 77 51        JP      NZ,BumpBCDTurnCount ; No, bump the BCD turn count and out
5158: 23              INC     HL                  ; The obj_LAMP_dead ...
5159: 36 00           LD      (HL),$00            ; ... is now out of play
515B: 3E 23           LD      A,$23               ; Get the ...
515D: 21 E7 4F        LD      HL,ObjectData       ; ... info for ...
5160: CD 61 43        CALL    TableOffsetTwoBytes ; ... obj_BATTERIES_fresh
5163: 23              INC     HL                  ; Fresh batteries ...
5164: 36 00           LD      (HL),$00            ; ... are now out of play
5166: 23              INC     HL                  ; Bump to ...
5167: 23              INC     HL                  ; ... obj_BATTERIES_worn
5168: 36 FF           LD      (HL),$FF            ; Worn out batteries are now ...
516A: 1E FF           LD      E,$FF               ; ... in the backpack
516C: 3E 0F           LD      A,$0F               ; obj_LAMP_on
516E: CD 76 43        CALL    SetObjectLocation   ; Move the obj_LAMP_on to the backpack
5171: 21 91 7A        LD      HL,PS_A9            ; "REPLACING__THE_BATTERIES."
5174: CD AE 45        CALL    PrintPacked         ; Print message
;
BumpBCDTurnCount:
5177: 3A 40 50        LD      A,(bcdTurnCountLSB) ; Get the lower BCD turn count
517A: C6 01           ADD     $01                 ; Add one to ...
517C: 27              DAA                         ; ... BCD value
517D: 32 40 50        LD      (bcdTurnCountLSB),A ; Store new BCD value
5180: 3A 41 50        LD      A,(bcdTurnCountMSB) ; Get the upper BCD turn count
5183: CE 00           ADC     $00                 ; Add any ...
5185: 27              DAA                         ; ... carry from lower
5186: 32 41 50        LD      (bcdTurnCountMSB),A ; Update upper BCD count
5189: C9              RET                         

COM_01_move_look(room_num)

This routine moves the player to a new room. If there is light in the new room or light in the old room then the move always works. Otherwise there is a 60% chance the move kills you.

If there is light in the new room then the room description is printed.

After every move the code checks the pack for treasures. If there are 2 or more treasures then the Mummy moves them all to room 53 (the hard-to-find room in the maze). Then the code moves the chest to room 53. Up till now the chest has been in room 0 (out of play). The only way to make the chest appear in the maze is to encounter the mummy. Once the chest is in a room (any room) the mummy no longer appears. You only see the mummy once.

The mummy says he is going to take the treasures and "PUT_THEM_IN_THE_CHEST_DEEP_IN_THE_MAZE!". But he only puts them in the same room -- not actually in the chest. The code does not utilize the container relationship.

COM_01_move_look:
518A: E1              POP     HL                  ; Get the ...
518B: 46              LD      B,(HL)              ; ... target room number
518C: 23              INC     HL                  ; Next byte
518D: E5              PUSH    HL                  ; Update script pointer
;
518E: 3A 3F 50        LD      A,(currentRoom)     ; Checking ...
5191: 5F              LD      E,A                 ; ... current room
5192: 3E 0F           LD      A,$0F               ; obj_LAMP_on
5194: CD 50 43        CALL    GetObjectInfo       ; Is the lit-lamp in this room?
5197: CA DA 51        JP      Z,$51DA             ; Yes, there is light. Make the move.
519A: 1E FF           LD      E,$FF               ; Backpack room number
519C: 3E 0F           LD      A,$0F               ; obj_LAMP_on
519E: CD 50 43        CALL    GetObjectInfo       ; Is the lit-lamp in the backpack?
51A1: CA DA 51        JP      Z,$51DA             ; Yes, there is light. Make the move.
51A4: 21 45 4F        LD      HL,AmbientLightTable; Ambient light table
51A7: 3A 3F 50        LD      A,(currentRoom)     ; Get the light setting ...
51AA: CD 61 43        CALL    TableOffsetTwoBytes ; ... for the current room
51AD: 7E              LD      A,(HL)              ; Get the ambient light level of the room
51AE: E6 40           AND     $40                 ; Check the bit
51B0: C2 DA 51        JP      NZ,$51DA            ; There is light in the current room. Make the move.
51B3: 78              LD      A,B                 ; Room we are moving to
51B4: 21 45 4F        LD      HL,AmbientLightTable; Ambient light table
51B7: CD 61 43        CALL    TableOffsetTwoBytes ; Get the light setting ...
51BA: 7E              LD      A,(HL)              ; ... for the destination room
51BB: E6 40           AND     $40                 ; Check the bit
51BD: C2 DA 51        JP      NZ,$51DA            ; There is light in the next room. Make the move.
51C0: 58              LD      E,B                 ; Destination room
51C1: 3E 0F           LD      A,$0F               ; obj_LAMP_on
51C3: CD 50 43        CALL    GetObjectInfo       ; Is the lit-lamp in the next room?
51C6: CA DA 51        JP      Z,$51DA             ; Yes, there is light. Make the move.
51C9: 3A 74 47        LD      A,(keyWaitCounter)  ; Random number (key-input wait counter)
51CC: FE 67           CP      $67                 ; random(255) < 103? That's 40% of the time.
51CE: DA DA 51        JP      C,$51DA             ; Yes, we were lucky. Make the move.
51D1: 21 04 79        LD      HL,PS_A1            ; "YOU_FELL_INTO_A_PIT_AND_BROKE_EVERY_BONE_IN_YOUR_BODY. "
51D4: CD AE 45        CALL    PrintPacked         ; Print message
51D7: C3 49 54        JP      COM_05_death_and_resurrect; The player died. Resurrect the player.
;
51DA: 3A 3F 50        LD      A,(currentRoom)     ; Copy current room number ...
51DD: 32 44 50        LD      (lastRoom),A        ; ... to last room number
;
51E0: 78              LD      A,B                 ; Move player to ...
51E1: 32 3F 50        LD      (currentRoom),A     ; ... current room
;
51E4: CD 45 52        CALL    DescribeRoom        ; Print room and room description (with objects)
51E7: 3E 2A           LD      A,$2A               ; obj_CHEST
51E9: 21 E7 4F        LD      HL,ObjectData       ; object info
51EC: CD 61 43        CALL    TableOffsetTwoBytes ; Look up the info on the chest
51EF: 23              INC     HL                  ; Get the ...
51F0: 7E              LD      A,(HL)              ; ... room number of the chest
51F1: A7              AND     A                   ; Has the chest been placed in the maze?
51F2: C2 42 52        JP      NZ,$5242            ; Yes, skip themMummy
;
51F5: 21 E7 4F        LD      HL,ObjectData       ; object info
51F8: 0E 2C           LD      C,$2C               ; 44 objects total
51FA: 06 00           LD      B,$00               ; Count number of treasures
51FC: 7E              LD      A,(HL)              ; Attribute of object
51FD: E6 20           AND     $20                 ; Is object a treasure?
51FF: 23              INC     HL                  ; Point to 2nd entry
5200: CA 0A 52        JP      Z,$520A             ; Not an object, move to next object
5203: 7E              LD      A,(HL)              ; Is the object ...
5204: FE FF           CP      $FF                 ; ... in the backpack?
5206: C2 0A 52        JP      NZ,$520A            ; No, move to next object
5209: 04              INC     B                   ; Bump the treasure count
520A: 23              INC     HL                  ; Next object
520B: 0D              DEC     C                   ; All objects checked?
520C: C2 FC 51        JP      NZ,$51FC            ; No, go back for all of them
;
520F: 78              LD      A,B                 ; Two (or more) treasures ...
5210: FE 02           CP      $02                 ; ... in the backpack?
5212: DA 42 52        JP      C,$5242             ; No, skip the mummy
;
5215: 21 E7 4F        LD      HL,ObjectData       ; Object info
5218: 0E 2C           LD      C,$2C               ; 44 objects to check
521A: 7E              LD      A,(HL)              ; Get the object attribute
521B: E6 20           AND     $20                 ; Is the object treasure?
521D: 23              INC     HL                  ; Next byte in entry
521E: CA 30 52        JP      Z,$5230             ; Not a treasure, move to next object
5221: 7E              LD      A,(HL)              ; Get the object location
5222: FE FF           CP      $FF                 ; In the backpack?
5224: C2 30 52        JP      NZ,$5230            ; Not in the backpack, move to next object
5227: 36 35           LD      (HL),$35            ; Move the object to the treasure room in the maze
5229: 3A 45 50        LD      A,(numObjInPack)    ; Number of objects in pack
522C: 3D              DEC     A                   ; No longer carying ...
522D: 32 45 50        LD      (numObjInPack),A    ; ... this object
5230: 23              INC     HL                  ; Next object
5231: 0D              DEC     C                   ; Have we checked all objects?
5232: C2 1A 52        JP      NZ,$521A            ; No, go back for them all
5235: 1E 35           LD      E,$35               ; room_53 in the maze
5237: 3E 2A           LD      A,$2A               ; obj_CHEST
5239: CD 76 43        CALL    SetObjectLocation   ; Place the chest in the maze
523C: 21 4C 7B        LD      HL,PS_AD            ; "_____SUDDENLY,_A_MUMMY_CREEPS_UP_BEHIND_YOU!!"
523F: CD AE 45        CALL    PrintPacked         ; Print the message
;
5242: C3 AB 43        JP      ScriptCommandPASS   ; Move passed. Continue the script.

DescribeRoom:
5245: 3A 3F 50        LD      A,(currentRoom)     ; Get the current room number
5248: 21 45 4F        LD      HL,AmbientLightTable; Ambient light table
524B: CD 61 43        CALL    TableOffsetTwoBytes ; Look up the lighting info
524E: 7E              LD      A,(HL)              ; Is there ...
524F: E6 40           AND     $40                 ; ... natural light?
5251: C2 71 52        JP      NZ,$5271            ; Yes, show the room description
5254: 3A 3F 50        LD      A,(currentRoom)     ; Get the current room number
5257: 5F              LD      E,A                 ; Is the ...
5258: 3E 0F           LD      A,$0F               ; ... obj_LAMP_ON ...
525A: CD 50 43        CALL    GetObjectInfo       ; ... in the current room?
525D: CA 71 52        JP      Z,$5271             ; Yes, there is light. Show the room description
5260: 1E FF           LD      E,$FF               ; Is the ...
5262: 3E 0F           LD      A,$0F               ; ... obj_LAMP_ON ...
5264: CD 50 43        CALL    GetObjectInfo       ; ... in the backpack?
5267: CA 71 52        JP      Z,$5271             ; Yes, there is light. Show the room description
526A: 21 76 79        LD      HL,PS_A4            ; "IT_IS_NOW_PITCH_DARK.__IF_YOU_PROCEED,_YOU_"
526D: CD AE 45        CALL    PrintPacked         ; Print the warning
5270: C9              RET                         ; Out
;
5271: 3A 3F 50        LD      A,(currentRoom)     ; Get the current room number
5274: 21 88 48        LD      HL,RoomTable        ; Room info table
5277: CD 6B 43        CALL    TableOffsetFourBytes; Look up 4-byte entry
527A: 7E              LD      A,(HL)              ; Get the description LSB
527B: 23              INC     HL                  ; Next byte
527C: 66              LD      H,(HL)              ; Get the dscription MSB
527D: 6F              LD      L,A                 ; Move description LSB to HL
527E: CD AE 45        CALL    PrintPacked         ; Print the room description
;
5281: 06 00           LD      B,$00               ; Object number (counting up from 1 to 44)
5283: 04              INC     B                   ; Checking this object number
5284: 3A 3F 50        LD      A,(currentRoom)     ; Checking ...
5287: 5F              LD      E,A                 ; ... current room
5288: 78              LD      A,B                 ; Have we checked ...
5289: FE 2D           CP      $2D                 ; ... all objects?
528B: D0              RET     NC                  ; Yes, done
;
528C: CD 50 43        CALL    GetObjectInfo       ; Get the info about the object
528F: C2 83 52        JP      NZ,$5283            ; Ignore object if it isn't in the current room
5292: 78              LD      A,B                 ; Object number
5293: 21 47 50        LD      HL,ObjectDescriptions; Object description table
5296: CD 61 43        CALL    TableOffsetTwoBytes ; Look up the object's description
5299: 7E              LD      A,(HL)              ; Get the LSB
529A: 23              INC     HL                  ; Next byte of pointer
529B: 66              LD      H,(HL)              ; Get the description MSB
529C: 6F              LD      L,A                 ; Description pointer now in HL
529D: C5              PUSH    BC                  ; Hold our object count
529E: CD AE 45        CALL    PrintPacked         ; Print the object's long description
52A1: C1              POP     BC                  ; Restore the object count
52A2: C3 83 52        JP      $5283               ; Go back for all objects

COM_18_move_object_to_current_room(obj_num)

COM_18_move_object_to_current_room:
52A5: E1              POP     HL                  ; Get script pointer
52A6: 3A 3F 50        LD      A,(currentRoom)     ; Get current room
52A9: 5F              LD      E,A                 ; Object destination
52AA: 7E              LD      A,(HL)              ; Object number from script
52AB: 23              INC     HL                  ; Update ...
52AC: E5              PUSH    HL                  ; ... the script pointer
52AD: CD 76 43        CALL    SetObjectLocation   ; Move the object
52B0: C3 AB 43        JP      ScriptCommandPASS   ; Command passes

COM_19_put_object_in_container_print_ok(obj_num, obj_num)

COM_19_put_object_in_container_print_ok:
52B3: E1              POP     HL                  ; Get script pointer
52B4: 7E              LD      A,(HL)              ; Get object number from script
52B5: 23              INC     HL                  ; Next byte in script
52B6: 46              LD      B,(HL)              ; Get the destination object number from script
52B7: 23              INC     HL                  ; Update ...
52B8: E5              PUSH    HL                  ; ... the script pointer
52B9: 21 E7 4F        LD      HL,ObjectData       ; Lookup the ...
52BC: CD 61 43        CALL    TableOffsetTwoBytes ; ... target object
52BF: 7E              LD      A,(HL)              ; Set ...
52C0: F6 80           OR      $80                 ; ... the "is carried" ...
52C2: 77              LD      (HL),A              ; ... flag on the target object
52C3: 23              INC     HL                  ; Being carried by ...
52C4: 70              LD      (HL),B              ; ... container
52C5: C3 2B 54        JP      COM_14_print_ok     ; Print OK and command passes

COM_02_is_in_pack(obj_num)

This command checks if the requested object is in the backpack.

COM_02_is_in_pack:
52C8: E1              POP     HL                  ; Get the next ...
52C9: 7E              LD      A,(HL)              ; ... byte from ...
52CA: 23              INC     HL                  ; ... the script
52CB: E5              PUSH    HL                  ; Update the script pointer
52CC: 1E FF           LD      E,$FF               ; Room location of pack
52CE: CD 50 43        CALL    GetObjectInfo       ; Find the object. Is it in the pack (at E)?
52D1: CA AB 43        JP      Z,ScriptCommandPASS ; Yes, command passes
52D4: C3 BE 43        JP      ScriptCommandFAIL   ; No, command fails

COM_03_is_in_pack_or_current_room(obj_num)

This command checks if the requested object is accessible (current room or backpack).

COM_03_is_in_pack_or_current_room:
52D7: E1              POP     HL                  ; Get the next ...
52D8: 46              LD      B,(HL)              ; ... byte from ...
52D9: 23              INC     HL                  ; ... the script
52DA: E5              PUSH    HL                  ; Update the script pointer
52DB: 3A 3F 50        LD      A,(currentRoom)     ; Current room number
52DE: 5F              LD      E,A                 ; Check for current room
52DF: 78              LD      A,B                 ; Requested object number
52E0: CD 50 43        CALL    GetObjectInfo       ; Get the info about the object
52E3: CA AB 43        JP      Z,ScriptCommandPASS ; It is in the room. Return SUCCESS
52E6: 78              LD      A,B                 ; Object number
52E7: C3 CC 52        JP      $52CC               ; Check the backpack for the object

COM_1A_is_in_current_room(obj_num)

This command checks if the request object (or object's top level container) is in the current room.

COM_1A_is_in_current_room:
52EA: E1              POP     HL                  ; Get the script pointer
52EB: 3A 3F 50        LD      A,(currentRoom)     ; Checking ...
52EE: 5F              LD      E,A                 ; ... current room
52EF: 7E              LD      A,(HL)              ; Requested object number
52F0: 23              INC     HL                  ; Update ...
52F1: E5              PUSH    HL                  ; ... script pointer
52F2: CD 50 43        CALL    GetObjectInfo       ; Get the info about the object
52F5: CA AB 43        JP      Z,ScriptCommandPASS ; Success if parent container is in the current room
52F8: C3 BE 43        JP      ScriptCommandFAIL   ; Otherwise the command fails

COM_0D_is_pack_just_emerald()

This very specific command checks if the backpack is empty or has just the emerald. This is used in the script for room_73, the "TIGHT_SQUEEZE" from the "CHAMBER_OF_THE_HIGH_PRIEST".

COM_0D_is_pack_just_emerald:
52FB: 21 E7 4F        LD      HL,ObjectData       ; 
52FE: 0E 01           LD      C,$01               ; Start checking with object 1
5300: 23              INC     HL                  ; Location of object
5301: 79              LD      A,C                 ; Is this object ...
5302: FE 1F           CP      $1F                 ; ... the obj_EMERALD?
5304: CA 0D 53        JP      Z,$530D             ; Yes, ignore it
5307: 7E              LD      A,(HL)              ; Get the location
5308: FE FF           CP      $FF                 ; Is this object in the backpack?
530A: CA BE 43        JP      Z,ScriptCommandFAIL ; Yes, fail
530D: 23              INC     HL                  ; Next object data
530E: 0C              INC     C                   ; Next object number
530F: 79              LD      A,C                 ; Past the ...
5310: FE 2D           CP      $2D                 ; ... last object?
5312: C2 00 53        JP      NZ,$5300            ; No, keep checking
5315: C3 AB 43        JP      ScriptCommandPASS   ; Success

COM_0A_pyramid_crawl_move_random(value)

This command is a very specific move command. If the random value is less than or equal to the given target value, then the player stays in the same room. The code prints the "crawled around" message and reprints the current room description and the command returns success. If the random value is greater than the given value, the command fails.

This script command is used in two rooms: room_65 (CHAMBER_OF_HORUS) and room_60 (LAND_OF_DEAD). In all cases, it is wrapped in a "StopIfPassElseContinue" like this:

4DEE: 08 07     ; NW
4DF0: 07 03     ;    StopIfPassElseContinue
4DF2: 0A F0     ;        AssertRandomIsLessOrEqual(240)
4DF4: 01 3B     ;    MoveToRoom(room_59) woodsRoom106

Most of the time (random values 0 through 240) the command passes and the player stays put. But for values 241 through 255, the command fails and the player moves to room_59 (ANTEROOM_OF_SEKER).

COM_0A_pyramid_crawl_move_random:
5318: E1              POP     HL                  ; Get target ...
5319: 46              LD      B,(HL)              ; ... value from script
531A: 23              INC     HL                  ; Update the ...
531B: E5              PUSH    HL                  ; ... script pointer
531C: 3A 74 47        LD      A,(keyWaitCounter)  ; Get the randomish number
531F: B8              CP      B                   ; Compare with target value
5320: CA 26 53        JP      Z,$5326             ; The same means pass
5323: D2 BE 43        JP      NC,ScriptCommandFAIL; Less than means pass
5326: 21 95 72        LD      HL,PS_74            ; "WOUND_UP_BACK__IN_THE_MAIN_PASSAGE."
5329: CD AE 45        CALL    PrintPacked         ; Print message
532C: CD 45 52        CALL    DescribeRoom        ; Reprint the current room description
532F: C3 AB 43        JP      ScriptCommandPASS   ; Pass

COM_0C_move_to_room_if_was_last(room_num)

This command moves the player to the target room but only if the target room was the last room.

If the target room is not the last room, the command fails.

This command is not used in any script.

COM_0C_move_to_room_if_was_last:
5332: E1              POP     HL                  ; Get destination ...
5333: 46              LD      B,(HL)              ; ... room
5334: 23              INC     HL                  ; Update the ...
5335: E5              PUSH    HL                  ; ... script pointer
5336: 3A 44 50        LD      A,(lastRoom)        ; Get the last room
5339: B8              CP      B                   ; Is target room the last room?
533A: C2 BE 43        JP      NZ,ScriptCommandFAIL; No, reject the move (fail)
533D: E1              POP     HL                  ; Back the script ...
533E: 2B              DEC     HL                  ; ... pointer up so we ...
533F: E5              PUSH    HL                  ; ... can call MoveToRoom
5340: C3 8A 51        JP      COM_01_move_look    ; Normal move to room (with lighting checks)

COM_16_get_users_object_print_ok()

COM_16_get_users_object_print_ok:
5343: 3A 7B 46        LD      A,(inputNoun)       ; Get the object number the player requested
5346: 1E FF           LD      E,$FF               ; Get the ...
5348: CD 50 43        CALL    GetObjectInfo       ; ... target object's info
534B: C2 57 53        JP      NZ,$5357            ; It isn't in the backpack. No error here.
534E: 21 60 75        LD      HL,PS_87            ; "YOU_ARE_ALREADY_CARRYING_IT."
5351: CD AE 45        CALL    PrintPacked         ; Print the error
5354: C3 AB 43        JP      ScriptCommandPASS   ; Success (the object is in backpack as requested!)
;
5357: 3A 7B 46        LD      A,(inputNoun)       ; Get the input noun again
535A: 47              LD      B,A                 ; Handle the actual ...
535B: C3 F4 53        JP      GetToBackpack       ; ... GET operation

COM_04_print(ps_num)

This command unpacks a string and prints it. This command always succeeds.

COM_04_print:
535E: E1              POP     HL                  ; Get the script pointer
535F: 5E              LD      E,(HL)              ; Get the LSB of the string
5360: 23              INC     HL                  ; Next in script
5361: 56              LD      D,(HL)              ; Get the MSB of the string
5362: 23              INC     HL                  ; Update the ...
5363: E5              PUSH    HL                  ; ... script pointer
5364: EB              EX      DE,HL               ; String pointer now in HL
5365: CD AE 45        CALL    PrintPacked         ; Print the packed string
5368: C3 AB 43        JP      ScriptCommandPASS   ; Printing is always a success

COM_0B_drop_object_print_ok(obj_num)

COM_0B_drop_object_print_ok:
536B: E1              POP     HL                  ; Get the target ...
536C: 46              LD      B,(HL)              ; ... object from the script
536D: 23              INC     HL                  ; Update the ...
536E: E5              PUSH    HL                  ; ... script pointer
536F: 3A 45 50        LD      A,(numObjInPack)    ; Decrease ...
5372: 3D              DEC     A                   ; ... number of objects ...
5373: 32 45 50        LD      (numObjInPack),A    ; ... in pack
5376: 3A 3F 50        LD      A,(currentRoom)     ; Current room
5379: 5F              LD      E,A                 ; Move ...
537A: 78              LD      A,B                 ; ... object to ...
537B: CD 76 43        CALL    SetObjectLocation   ; ... current room
537E: C3 2B 54        JP      COM_14_print_ok     ; Print OK and command passes

COM_0E_move_to_last_room()

This command is only used by the "BACK" command to return the player to the last room.

This command always passes but prints a message if there was no last room.

COM_0E_move_to_last_room:
5381: 3A 44 50        LD      A,(lastRoom)        ; Was there ...
5384: A7              AND     A                   ; ... a last room?
5385: CA 92 53        JP      Z,$5392             ; No, print error and pass
5388: 47              LD      B,A                 ; Hold last room
5389: 3A 3F 50        LD      A,(currentRoom)     ; Current room ...
538C: 32 44 50        LD      (lastRoom),A        ; ... to last room
538F: C3 E0 51        JP      $51E0               ; Continue with MoveToRoom logic (lighting, mummy, etc)
;
5392: 21 33 75        LD      HL,PS_86            ; "SORRY,_BUT_I_NO_LONGER_SEEM_TO_REMEMBER_HOW_IT_WAS_YOU_GOT_HERE."
5395: CD AE 45        CALL    PrintPacked         ; Print string
5398: C3 AB 43        JP      ScriptCommandPASS   ; Command passes

COM_0F_print_inventory()

COM_0F_print_inventory:
539B: 3A 45 50        LD      A,(numObjInPack)    ; Is there anything in ...
539E: A7              AND     A                   ; ... the backpack?
539F: C2 AB 53        JP      NZ,$53AB            ; Yes, go list the contents
;
53A2: 21 A6 75        LD      HL,PS_89            ; "YOU'RE_NOT_CARRYING_ANYTHING."
53A5: CD AE 45        CALL    PrintPacked         ; Print the message
53A8: C3 AB 43        JP      ScriptCommandPASS   ; Command passes
;
53AB: 21 BC 75        LD      HL,PS_8A            ; "YOU_ARE_CURRENTLY_HOLDING_THE_FOLLOWING:"
53AE: CD AE 45        CALL    PrintPacked         ; Print the banner
53B1: 06 00           LD      B,$00               ; Object number through loop
53B3: 1E FF           LD      E,$FF               ; Backpack room number
53B5: 04              INC     B                   ; Next (or first) object number
53B6: 78              LD      A,B                 ; Have we checked ...
53B7: FE 2D           CP      $2D                 ; ... all objects?
53B9: D2 AB 43        JP      NC,ScriptCommandPASS; Yes, command passes
;
53BC: CD 50 43        CALL    GetObjectInfo       ; Get the object info
53BF: C2 B3 53        JP      NZ,$53B3            ; Object is not in backpack, move to next object
53C2: 78              LD      A,B                 ; Object number
53C3: 21 47 50        LD      HL,ObjectDescriptions; Object info table
53C6: CD 61 43        CALL    TableOffsetTwoBytes ; Look up the description
53C9: 7E              LD      A,(HL)              ; Description LSB
53CA: 23              INC     HL                  ; Next entry
53CB: 66              LD      H,(HL)              ; Description MSB
53CC: 6F              LD      L,A                 ; HL now points to long description
53CD: 7E              LD      A,(HL)              ; Skip ...
53CE: 23              INC     HL                  ; ... to ...
53CF: A7              AND     A                   ; ... short ...
53D0: C2 CD 53        JP      NZ,$53CD            ; ... description
53D3: C5              PUSH    BC                  ; Hold our counter
53D4: CD AE 45        CALL    PrintPacked         ; Print the short description
53D7: C1              POP     BC                  ; Restore the counter
53D8: C3 B3 53        JP      $53B3               ; Check all objects

COM_10_print_room_description()

COM_10_print_room_description:
53DB: CD 45 52        CALL    DescribeRoom        ; Print the room description (with objects)
53DE: C3 AB 43        JP      ScriptCommandPASS   ; Command passes

COM_11_is_object_user_input(obj_num)

COM_11_is_object_user_input:
53E1: E1              POP     HL                  ; Get the script pointer
53E2: 46              LD      B,(HL)              ; Get the target object
53E3: 23              INC     HL                  ; Update the ...
53E4: E5              PUSH    HL                  ; ... script pointer
53E5: 3A 7B 46        LD      A,(inputNoun)       ; Does user noun ...
53E8: B8              CP      B                   ; ... match the target object?
53E9: C2 BE 43        JP      NZ,ScriptCommandFAIL; No, command fails
53EC: C3 AB 43        JP      ScriptCommandPASS   ; yes, command passes

COM_12_get_from_room_print_ok(obj_num)

COM_12_get_from_room_print_ok:
53EF: E1              POP     HL                  ; Get the script pointer
53F0: 46              LD      B,(HL)              ; Get the object number
53F1: 23              INC     HL                  ; Update ...
53F2: E5              PUSH    HL                  ; ... script pointer
53F3: 78              LD      A,B                 ; To parameter register
;
GetToBackpack:
53F4: CD 50 43        CALL    GetObjectInfo       ; Look up the target object
53F7: 7E              LD      A,(HL)              ; Is this object ...
53F8: E6 40           AND     $40                 ; ... able to be picked up?
53FA: C2 06 54        JP      NZ,$5406            ; Yes, skip the error
53FD: 21 D9 75        LD      HL,PS_8B            ; "DON'T_BE_RIDICULOUS!"
5400: CD AE 45        CALL    PrintPacked         ; Print the message
5403: C3 AB 43        JP      ScriptCommandPASS   ; Command passes
;
5406: 3A 45 50        LD      A,(numObjInPack)    ; Get number of objects in pack
5409: FE 08           CP      $08                 ; Eight is our max
540B: DA 17 54        JP      C,$5417             ; We have room for another, go get it
540E: 21 75 75        LD      HL,PS_88            ; "YOU_CAN'T_CARRY_ANYTHING_MORE."
5411: CD AE 45        CALL    PrintPacked         ; Print the message
5414: C3 AB 43        JP      ScriptCommandPASS   ; Command passes
;
5417: 3C              INC     A                   ; Add one ...
5418: 32 45 50        LD      (numObjInPack),A    ; ... to pack count
541B: 78              LD      A,B                 ; Object number
541C: 1E FF           LD      E,$FF               ; Backpack location
541E: CD 76 43        CALL    SetObjectLocation   ; Move the object to the backpack
5421: C3 2B 54        JP      COM_14_print_ok     ; Print OK and command passes

COM_17_drop_users_object_print_ok()

COM_17_drop_users_object_print_ok:
5424: 3A 7B 46        LD      A,(inputNoun)       ; Get the player's ...
5427: 47              LD      B,A                 ; ... noun input
5428: C3 6F 53        JP      $536F               ; Continue with drop

COM_14_print_ok()

COM_14_print_ok:
542B: 21 2F 75        LD      HL,PS_85            ; "OK_"
542E: CD AE 45        CALL    PrintPacked         ; Print string
5431: C3 AB 43        JP      ScriptCommandPASS   ; Command passes

COM_15_move_object_to_room(obj_num, room_num)

COM_15_move_object_to_room:
5434: E1              POP     HL                  ; Get the script pointer
5435: 7E              LD      A,(HL)              ; Get the object number
5436: 23              INC     HL                  ; Next in script
5437: 5E              LD      E,(HL)              ; Get the room number
5438: 23              INC     HL                  ; Update the ...
5439: E5              PUSH    HL                  ; ... script pointer
543A: 21 E7 4F        LD      HL,ObjectData       ; Look up the ...
543D: CD 61 43        CALL    TableOffsetTwoBytes ; ... target object
5440: 7E              LD      A,(HL)              ; Clear the ...
5441: E6 7F           AND     $7F                 ; ... being-carried flag
5443: 77              LD      (HL),A              ; Store the new attributes
5444: 23              INC     HL                  ; Location entry
5445: 73              LD      (HL),E              ; Object now in target room
5446: C3 AB 43        JP      ScriptCommandPASS   ; Command passes

COM_05_death_and_resurrect()

COM_05_death_and_resurrect:
5449: 3A 46 50        LD      A,(numResurrected)  ; Number of resurrections
544C: 3C              INC     A                   ; Add one ...
544D: 32 46 50        LD      (numResurrected),A  ; ... to the count
5450: FE 03           CP      $03                 ; Third time (or more)?
5452: D2 BC 54        JP      NC,ThirdResurrection; Yes, do the 3rd
5455: FE 02           CP      $02                 ; 2nd time?
5457: CA B0 54        JP      Z,SecondResurrection; Yes, do the 2nd
;
; First time we initialize the message pointer
545A: 21 B4 7E        LD      HL,PS_BC            ; "ALL_RIGHT.__BUT_DON'T_BLAME_ME"
545D: 22 C5 54        LD      (nextResurrectMessage),HL; Next resurrection message
5460: 21 AA 7D        LD      HL,PS_B9            ; "YOU_SEEM_TO_HAVE_GOTTEN_YOURSELF_KILLED."
5463: CD AE 45        CALL    PrintPacked         ; Print the message
5466: CD EE 45        CALL    WaitForKey          ; Wait for the user
5469: FE 59           CP      $59                 ; Is it a "Y" for yes to continuing on?
546B: C2 EF 55        JP      NZ,COM_09_end_of_game; No, print score and stop
546E: 2A C5 54        LD      HL,(nextResurrectMessage); Print resurrection ...
5471: CD AE 45        CALL    PrintPacked         ; ... message
5474: 21 02 50        LD      HL,$5002            ; obj_LAMP_off to ...
5477: 36 01           LD      (HL),$01            ; ... room_1
5479: 23              INC     HL                  ; Point to ...
547A: 23              INC     HL                  ; ... obj_LAMP_on
547B: 36 00           LD      (HL),$00            ; Move it out of play
547D: 21 E7 4F        LD      HL,ObjectData       ; Object data
5480: 3A 3F 50        LD      A,(currentRoom)     ; Player's ...
5483: 47              LD      B,A                 ; ... current room
5484: 3E FF           LD      A,$FF               ; Backpack location
5486: 0E 2C           LD      C,$2C               ; 44 objects to check
;
5488: 23              INC     HL                  ; Next (or first) object
5489: BE              CP      (HL)                ; Is object in backpack
548A: C2 97 54        JP      NZ,$5497            ; No ... leave this object where it is
548D: 70              LD      (HL),B              ; Change backpack to current room
548E: 3A 45 50        LD      A,(numObjInPack)    ; Decrement ...
5491: 3D              DEC     A                   ; ... count of objects ...
5492: 32 45 50        LD      (numObjInPack),A    ; ... in pack
5495: 3E FF           LD      A,$FF               ; Retore backpack location (had to use A)
5497: 23              INC     HL                  ; Next object
5498: 0D              DEC     C                   ; All done?
5499: C2 88 54        JP      NZ,$5488            ; No, drop all objects in backpack
549C: 3E 02           LD      A,$02               ; Resurrect player ...
549E: 32 3F 50        LD      (currentRoom),A     ; ... in the entrance (past the lamp at 1 ... sneaky)
54A1: CD 45 52        CALL    DescribeRoom        ; Print the room description
54A4: 31 BF 47        LD      SP,$47BF            ; Reset the stack pointer
54A7: 21 00 00        LD      HL,$0000            ; Reset the ...
54AA: 22 42 50        LD      (lampOnTurnCount),HL; ... lamp time (very generous)
54AD: C3 19 43        JP      GameLoop            ; Back to the top of the game loop

SecondResurrection:
54B0: 21 4E 7F        LD      HL,PS_BD            ; Next resurrection ...
54B3: 22 C5 54        LD      (nextResurrectMessage),HL; ... message "WHERE_DID_I_PUT_ORANGE_SMOKE"
54B6: 21 1D 7E        LD      HL,PS_BA            ; "YOU_CLUMBSY_OAF,_YOU'VE_DONE_IT_AGAIN
54B9: C3 63 54        JP      $5463               ; Print the message and ressurect

ThirdResurrection:
54BC: 21 79 7E        LD      HL,PS_BB            ; "HOW_CAN_I_REINCARNATE_YOU____WITHOUT_ORANGE_SMOKE?"
54BF: CD AE 45        CALL    PrintPacked         ; Print message
54C2: C3 EF 55        JP      COM_09_end_of_game  ; All lives gone. Print score and stop.

; !! This is not saved to tape. Check to see if die/reload can mess up the sequence.
nextResurrectMessage:
54C5: 00 00 ; Next resurrection message

COM_08_print_score()

COM_08_print_score:
54C7: CD CD 54        CALL    PrintScore          ; Print the score
54CA: C3 AB 43        JP      ScriptCommandPASS   ; Command passes

PrintScore:
54CD: 21 00 00        LD      HL,$0000            ; Clear score tally
54D0: 22 B2 55        LD      (scoreTempLSB),HL   ; 
54D3: 21 45 4F        LD      HL,AmbientLightTable; 
54D6: 0E 51           LD      C,$51               ; 81 rooms to check
54D8: 7E              LD      A,(HL)              ; First byte
54D9: E6 80           AND     $80                 ; Was something scored in this room?
54DB: 23              INC     HL                  ; Next room
54DC: CA F0 54        JP      Z,$54F0             ; No ... next room
54DF: 3A B2 55        LD      A,(scoreTempLSB)    ; BCD LSB
54E2: 86              ADD     A,(HL)              ; Add in the score from the room
54E3: 27              DAA                         ; Adjust for BCD
54E4: 32 B2 55        LD      (scoreTempLSB),A    ; Update LSB
54E7: 3A B3 55        LD      A,(scoreTempMSB)    ; Carry into ...
54EA: CE 00           ADC     $00                 ; ... the MSB
54EC: 27              DAA                         ; Adjust for BCD
54ED: 32 B3 55        LD      (scoreTempMSB),A    ; Update MSB
54F0: 23              INC     HL                  ; Next room
54F1: 0D              DEC     C                   ; All rooms checked?
54F2: C2 D8 54        JP      NZ,$54D8            ; No ... check them all
;
54F5: 21 E7 4F        LD      HL,ObjectData       ; Now check the objects
54F8: 0E 2C           LD      C,$2C               ; 44 objects to check
54FA: 7E              LD      A,(HL)              ; First byte of object
54FB: E6 20           AND     $20                 ; Is this a treasure?
54FD: 23              INC     HL                  ; Next in table
54FE: CA 21 55        JP      Z,$5521             ; Not a treasure, skip it
5501: 7E              LD      A,(HL)              ; Location of object
5502: FE 02           CP      $02                 ; Is this object (or parent container) in room 2?
5504: 06 20           LD      B,$20               ; Score 20 points (BCD) if it is
5506: CA 10 55        JP      Z,$5510             ; It is in the target room ... go score it
5509: FE FF           CP      $FF                 ; Is it in the backpack?
550B: C2 21 55        JP      NZ,$5521            ; No, next object
550E: 06 05           LD      B,$05               ; Score 5 points if the object is in the backpack
5510: 3A B2 55        LD      A,(scoreTempLSB)    ; BCD LSB
5513: 80              ADD     A,B                 ; Add in score from the object
5514: 27              DAA                         ; Adjust for BCD
5515: 32 B2 55        LD      (scoreTempLSB),A    ; Update LSB
5518: 3A B3 55        LD      A,(scoreTempMSB)    ; Carry into ...
551B: CE 00           ADC     $00                 ; ... the MSB
551D: 27              DAA                         ; Adjust for BCD
551E: 32 B3 55        LD      (scoreTempMSB),A    ; Update the MSB
;
5521: 23              INC     HL                  ; Next in object table
5522: 0D              DEC     C                   ; Have we processed all objects?
5523: C2 FA 54        JP      NZ,$54FA            ; No, go check them all
;
5526: 3A 46 50        LD      A,(numResurrected)  ; Number of deaths
5529: A7              AND     A                   ; No penalty if ...
552A: CA 48 55        JP      Z,$5548             ; ... we haven't died
552D: 4F              LD      C,A                 ; Penalized 10 points for each death
552E: 06 90           LD      B,$90               ; BCD value for "-10"
5530: 3A B2 55        LD      A,(scoreTempLSB)    ; LSB of score
5533: 80              ADD     A,B                 ; Add penalty (negative)
5534: 27              DAA                         ; Adjust for BCD
5535: 32 B2 55        LD      (scoreTempLSB),A    ; Update LSB
5538: DA 44 55        JP      C,$5544             ; No borrow ... move on
553B: 3A B3 55        LD      A,(scoreTempMSB)    ; MSB of score
553E: C6 99           ADD     $99                 ; BCD value for "-1" (borrow)
5540: 27              DAA                         ; Adjust for BCD
5541: 32 B3 55        LD      (scoreTempMSB),A    ; Update the MSB
5544: 0D              DEC     C                   ; All deaths subtracted off?
5545: C2 30 55        JP      NZ,$5530            ; No ... do them all
;
5548: 3A B3 55        LD      A,(scoreTempMSB)    ; Is score ...
554B: FE 90           CP      $90                 ; ... positive?
554D: DA 78 55        JP      C,$5578             ; Yes ... print a space for the sign
5550: 3E 2D           LD      A,$2D               ; Add a "-" to ...
5552: 32 BF 55        LD      (scoreSign),A       ; ... the score string
5555: 3A B3 55        LD      A,(scoreTempMSB)    ; 
5558: 47              LD      B,A                 ;
5559: 3E 99           LD      A,$99               ; TODO decode the math
555B: 90              SUB     B                   ; Negative values need fixing up to make them right
555C: 32 B3 55        LD      (scoreTempMSB),A    ; 
555F: 3A B2 55        LD      A,(scoreTempLSB)    ; 
5562: 47              LD      B,A                 ;
5563: 3E 99           LD      A,$99               ; TODO BCD math for negatives
5565: 90              SUB     B                   ;
5566: C6 01           ADD     $01                 ;
5568: 27              DAA                         ;
5569: 32 B2 55        LD      (scoreTempLSB),A    ; 
556C: 3A B3 55        LD      A,(scoreTempMSB)    ; 
556F: CE 00           ADC     $00                 ;
5571: 27              DAA                         ;
5572: 32 B3 55        LD      (scoreTempMSB),A    ; 
5575: C3 7D 55        JP      $557D               ; Now update the turns
;
5578: 3E 20           LD      A,$20               ; Space means "+" ...
557A: 32 BF 55        LD      (scoreSign),A       ; ... in the score message
;
557D: 21 C0 55        LD      HL,scoreMsg         ; Turn count in the score message
5580: 3A B3 55        LD      A,(scoreTempMSB)    ; MSB of calculated score
5583: CD A2 55        CALL    BinaryToASCII       ; Add MSB of score to string
5586: 3A B2 55        LD      A,(scoreTempLSB)    ; LSB of calculated score
5589: CD A2 55        CALL    BinaryToASCII       ; Add LSB of score to string
558C: 21 E3 55        LD      HL,turnMsg          ; Turn count spot in string
558F: 3A 41 50        LD      A,(bcdTurnCountMSB) ; Add MSB of turn ...
5592: CD A2 55        CALL    BinaryToASCII       ; ... count to string
5595: 3A 40 50        LD      A,(bcdTurnCountLSB) ; Add LSB of turn ...
5598: CD A2 55        CALL    BinaryToASCII       ; ... count to string
559B: 21 B4 55        LD      HL,ScoreString      ; The string we just built
559E: CD D0 45        CALL    PrintPlain          ; Print the constructed score
55A1: C9              RET                         

BinaryToASCII:
55A2: F5              PUSH    AF                  ; Hold the lower nibble
55A3: 0F              RRCA                        ; Roll ...
55A4: 0F              RRCA                        ; ... to ...
55A5: 0F              RRCA                        ; ... upper ...
55A6: 0F              RRCA                        ; ... nibble
55A7: CD AB 55        CALL    $55AB               ; Convert and store the upper digit
55AA: F1              POP     AF                  ; Restore the lower nibble, convert, and store
;
55AB: E6 0F           AND     $0F                 ; Only keep 4 bits
55AD: C6 30           ADD     $30                 ; Binary to ASCII digit
55AF: 77              LD      (HL),A              ; Store in buffer
55B0: 23              INC     HL                  ; Bump buffer
55B1: C9              RET                         

scoreTempLSB:
55B2: 00 ; Used in calculating/printing score

scoreTempMSB:
55B3: 00 ; Used in calculating/printing score

ScoreString:
; YOU_SCORED_______OUT_OF_A_POSSIBLE_0220,_USING______TURNS.
55B4: 59 4F 55 20 53 43 4F 52 45 44 20
scoreSign:
55BF: 20
scoreMsg:
55C0: 20 20 20 20 20 4F 55 54 20 4F 46 20 41 20 50 4F 53 53 49 42
55D4: 4C 45 20 30 32 32 30 2C 20 55 53 49 4E 47 20
turnMsg:
55E3: 20 20 20 20 20 54 55 52 4E 53 2E 00

COM_09_end_of_game()

COM_09_end_of_game:
55EF: CD CD 54        CALL    PrintScore          ; Print the score

EndlessLoop:
55F2: C3 F2 55        JP      EndlessLoop         ; Endless loop ... game over

COM_1B_load_game()

"RCONT:" ; Label appears in unitialized memory in Code1.md!

COM_1B_load_game:
55F5: 21 A0 7F        LD      HL,PS_BE            ; "READY CASSETTE"
55F8: CD AE 45        CALL    PrintPacked         ; Print message
55FB: CD EE 45        CALL    WaitForKey          ; Wait on key
55FE: FE 08           CP      $08                 ; Backspace?
5600: CA AB 43        JP      Z,ScriptCommandPASS ; Yes ... abort operation
5603: FE 0D           CP      $0D                 ; Enter?
5605: C2 FB 55        JP      NZ,$55FB            ; No ... keep waiting
5608: 97              SUB     A                   ; Make a zero
5609: CD 12 02        CALL    TapeOn              ; Turn on cassette 0
560C: CD 96 02        CALL    ReadTapeLeader      ; Read tape leader
560F: 21 45 4F        LD      HL,AmbientLightTable; Load destination
5612: 01 03 01        LD      BC,$0103            ; 259 bytes
5615: 1E 00           LD      E,$00               ; Initialize checksum
5617: E5              PUSH    HL                  ; ROM function ...
5618: C5              PUSH    BC                  ; ... mangles ...
5619: D5              PUSH    DE                  ; ... these
561A: CD 35 02        CALL    ReadTapeByte        ; Read one byte of data
561D: D1              POP     DE                  ; ROM function ...
561E: C1              POP     BC                  ; ... mangles ...
561F: E1              POP     HL                  ; ... these
5620: 77              LD      (HL),A              ; Store the byte
5621: 83              ADD     A,E                 ; Add to ...
5622: 5F              LD      E,A                 ; ... checksum
5623: 23              INC     HL                  ; Next destination
5624: 0B              DEC     BC                  ; All done?
5625: 78              LD      A,B                 ; Remember, DEC doesn't ...
5626: B1              OR      C                   ; ... affect the zero flag
5627: C2 17 56        JP      NZ,$5617            ; Nope ... do all $103 bytes
562A: D5              PUSH    DE                  ; Hold
562B: CD 35 02        CALL    ReadTapeByte        ; Read the checksum
562E: D1              POP     DE                  ; Restore
562F: BB              CP      E                   ; Checksum OK?
5630: CA 3F 56        JP      Z,$563F             ; Yes ... out
5633: 21 AC 7F        LD      HL,PS_BF            ; "CHECKSUM_ERROR"
5636: CD AE 45        CALL    PrintPacked         ; Print error message
5639: CD F8 01        CALL    TapeOff             ; Turn off tape drive
;
; We already wrote bytes to our memory, and we got a checksum error. We are going back
; to the top, but if the player aborts the load at the top of this function, then the
; game continues with corrupt data. Oops.
;
563C: C3 F5 55        JP      COM_1B_load_game    ; Go back and try again
;
563F: CD F8 01        CALL    TapeOff             ; Turn off the tape
;
; We loaded 103 bytes starting at 4F45. This overwrites part of the object descriptions, which we
; manually reset here. ?? why are we reading more than we need ??
;
5642: 21 58 6D        LD      HL,$6D58            ; Reset the ...
5645: 22 47 50        LD      (ObjectDescriptions),HL; ... obj_bridge_15 ...
5648: 22 49 50        LD      ($5049),HL          ; ... and obj_bridge_18 descriptions.
564B: CD 45 52        CALL    DescribeRoom        ; Print the current room description after the load
564E: 31 BF 47        LD      SP,$47BF            ; Abandon previous stack
5651: C3 19 43        JP      GameLoop            ; Back to input loop

COM_1C_save_game()

Save 4F45 through 5047 That's one too many and picks up a byte from the ObjectDescriptions table (read only). The LoadGame code restores the first four bytes of this ObjectDescriptions table for some reason.

COM_1C_save_game:
5654: 21 A0 7F        LD      HL,PS_BE            ; "READY_CASSETTE"
5657: CD AE 45        CALL    PrintPacked         ; Print the message
565A: CD EE 45        CALL    WaitForKey          ; Get a key
565D: FE 08           CP      $08                 ; Backspace means abort?
565F: CA AB 43        JP      Z,ScriptCommandPASS ; Yes, abort saving and command passes
5662: FE 0D           CP      $0D                 ; ENTER for ready?
5664: C2 5A 56        JP      NZ,$565A            ; No, keep waiting for backspace or ENTER
;
5667: 97              SUB     A                   ; Turn on ...
5668: CD 12 02        CALL    TapeOn              ; ... cassette 1
566B: CD 87 02        CALL    WriteTapeLeader     ; Write the tape leader
566E: 21 45 4F        LD      HL,AmbientLightTable; 4F45 ...
5671: 01 03 01        LD      BC,$0103            ; ... through 5047 ?? too many??
5674: 1E 00           LD      E,$00               ; Checksum as we go
5676: E5              PUSH    HL                  ; Hold the memory pointer
5677: C5              PUSH    BC                  ; Hold the count
5678: 7E              LD      A,(HL)              ; Get the next byte to write
5679: 83              ADD     A,E                 ; Add byte ...
567A: 5F              LD      E,A                 ; ... into checksum
567B: D5              PUSH    DE                  ; Hold the checksum
567C: 7E              LD      A,(HL)              ; Get the byte again
567D: CD 64 02        CALL    WriteTapeByte       ; Write the byte in A to tape
5680: D1              POP     DE                  ; Restore checksum
5681: C1              POP     BC                  ; Restore count
5682: E1              POP     HL                  ; Restore memory pointer
5683: 23              INC     HL                  ; Point to next byte
5684: 0B              DEC     BC                  ; Decrement the count
5685: 78              LD      A,B                 ; Any bits ...
5686: B1              OR      C                   ; ... set (means not zero)?
5687: C2 76 56        JP      NZ,$5676            ; Yes, keep writing memory to cassette
568A: 7B              LD      A,E                 ; The checksum
568B: CD 64 02        CALL    WriteTapeByte       ; Write the checksum byte in A to tape
568E: CD F8 01        CALL    TapeOff             ; Turn the tape off
5691: C3 AB 43        JP      ScriptCommandPASS   ; 

COM_1D_scramble_directions_print_ack()

COM_1D_scramble_directions_print_ack:
5694: 3A 74 47        LD      A,(keyWaitCounter)  ; Random value
5697: E6 03           AND     $03                 ; 0, 1, 2, or 3
5699: 47              LD      B,A                 ; To B
569A: 21 CC 49        LD      HL,RoomScripts      ; start of room scripts
CNALL: ; This is the label from the actual 8080 source code (see Code1)
569D: 7E              LD      A,(HL)              ; Get the verb number
569E: 23              INC     HL                  ; Next byte
569F: A7              AND     A                   ; End of script for this room?
56A0: CA 9D 56        JP      Z,CNALL             ; Yes ... ignore the terminator and move to next room
56A3: FE FF           CP      $FF                 ; FF means the end of all room scripts
56A5: CA C2 56        JP      Z,$56C2             ; We are done, print message and out
56A8: FE 05           CP      $05                 ; Is this verb in the script a compass direction?
56AA: D2 B8 56        JP      NC,$56B8            ; No, skip over this command list
56AD: 80              ADD     A,B                 ; Roll the verb
56AE: 2B              DEC     HL                  ; Point back to the verb
56AF: E6 03           AND     $03                 ; Limit to verbs 1-4
56B1: C2 B6 56        JP      NZ,CNAL2            ; Are we in 1, 2, or 3? Yes, keep it
56B4: 3E 04           LD      A,$04               ; We rolled around. 0 becomes 4.
CNAL2: ; This is the label from the actual 8080 source code (see Code1)
56B6: 77              LD      (HL),A              ; New verb number
56B7: 23              INC     HL                  ; Point to list length
56B8: 7E              LD      A,(HL)              ; Get the length
56B9: 85              ADD     A,L                 ; Add ...
56BA: 6F              LD      L,A                 ; ... length ...
56BB: 7C              LD      A,H                 ; ... to ...
56BC: CE 00           ADC     $00                 ; ... script ...
56BE: 67              LD      H,A                 ; ... pointer
56BF: C3 9D 56        JP      CNALL               ; Try all the verbs in all rooms
;
56C2: 21 B8 7F        LD      HL,PS_C0            ; "I_NO_LONGER_SEEM_TO_KNOW_WHICH_WAY_IS_NORTH!"
56C5: CD AE 45        CALL    PrintPacked         ; Print message
56C8: 31 BF 47        LD      SP,$47BF            ; Reset stack
56CB: C3 19 43        JP      GameLoop            ; Back to top of game loop

Word Table

Pyramid has a table of known words. Every word has a grammar that describes how it can be used. For instance, LAMP is a noun. The verb NORTH is a single-word command that requires no noun (in fact it is an error to give one). The verb DROP requires a noun that is in the inventory, but the verb DRINK works on a noun that is in the room or the pack.

Multiple words can refer to the same thing. LAMP and LANTERN, for instance, mean the same thing. So do GET and STEAL.

Since multiple nouns can have the same word for a name the game logic must be careful not to ever have two nouns with the same noun in the same place. The "dead lamp", for instance, is never around when the "lit lamp" is. When checking to see if a noun is accessible the code must check every noun since multiple nouns can have the same name.

The input routine parses the user input and returns a VERB and a NOUN based on the grammar of the words. The game scripts are assured that the grammar is correct and the noun is something the user has access to (in the pack or room).

; Info + text + data
;   Info byte:
;   AA_BBB_CCC
;
;   AA = Grammar
;      0 = Noun
;      1 = Verb (and needs noun in pack)
;      2 = Verb (and needs noun in pack or room)
;      3 = Verb (stand alone)
;
;   BBB = number of bytes in token data
;   CCC = number of bytes in token text
;
; Object words
; A single name can refer to several objects. The object data is
; the search order for finding objects in the pack or room. For
; instance, the LAMP refers to:
;   1) 0x0E unlit lamp
;   2) 0x0F lit lamp
;   3) 0x2C dead lamp
;
WordTable:
; Nouns
;                               Objects     AA BBB CCC Word
56CE: 1C 4C 41 4D 50            0E 0F 2C  ; 00_011_100 LAMP
56D6: 1E 4C 41 4E 54 45 52      0E 0F 2C  ; 00_011_110 LANTER
56E0: 0B 42 4F 58               10        ; 00_001_011 BOX
56E5: 0F 53 43 45 50 54 45 52   11        ; 00_001_111 SCEPTER
56EE: 14 42 49 52 44            13 14     ; 00_010_100 BIRD
56F5: 16 53 54 41 54 55 45      13 14     ; 00_010_110 STATUE
56FE: 0E 50 49 4C 4C 4F 57      12        ; 00_001_110 PILLOW
5706: 0E 56 45 4C 56 45 54      12        ; 00_001_110 VELVET
570E: 0E 53 45 52 50 45 4E      0B        ; 00_001_110 SERPEN
5716: 16 53 41 52 43 4F 50      17 18     ; 00_010_110 SARCOP
571F: 0E 4D 41 47 41 5A 49      19        ; 00_001_110 MAGAZI
5727: 0D 49 53 53 55 45         19        ; 00_001_101 ISSUE
572E: 0E 45 47 59 50 54 49      19        ; 00_001_110 EGYPTI
5736: 0C 46 4F 4F 44            1A        ; 00_001_100 FOOD
573C: 0E 42 4F 54 54 4C 45      1B        ; 00_001_110 BOTTLE
5744: 15 57 41 54 45 52         1C 1E     ; 00_010_101 WATER
574C: 1D 50 4C 41 4E 54         07 08 09  ; 00_011_101 PLANT
5755: 1E 42 45 41 4E 53 54      07 08 09  ; 00_011_110 BEANST
575F: 0E 4D 41 43 48 49 4E      06        ; 00_001_110 MACHIN
5767: 0E 56 45 4E 44 49 4E      06        ; 00_001_110 VENDIN
576F: 16 42 41 54 54 45 52      23 24     ; 00_010_110 BATTER
5778: 0C 47 4F 4C 44            25        ; 00_001_100 GOLD
577E: 0E 4E 55 47 47 45 54      25        ; 00_001_110 NUGGET
5786: 0E 44 49 41 4D 4F 4E      26        ; 00_001_110 DIAMON
578E: 0E 53 49 4C 56 45 52      27        ; 00_001_110 SILVER
5796: 0C 42 41 52 53            27        ; 00_001_100 BARS
579C: 0E 4A 45 57 45 4C 52      28        ; 00_001_110 JEWELR
57A4: 0D 43 4F 49 4E 53         29        ; 00_001_101 COINS
57AB: 0D 43 48 45 53 54         2A        ; 00_001_101 CHEST
57B2: 0E 54 52 45 41 53 55      2A        ; 00_001_110 TREASU
57BA: 0C 45 47 47 53            2B        ; 00_001_100 EGGS
57C0: 0B 45 47 47               2B        ; 00_001_011 EGG
57C5: 0C 4E 45 53 54            2B        ; 00_001_100 NEST
57CB: 0B 4B 45 59               22        ; 00_001_011 KEY
57D0: 14 56 41 53 45            20 21     ; 00_010_100 VASE
57D7: 0E 53 48 41 52 44 53      15        ; 00_001_110 SHARDS
57DF: 0E 50 4F 54 54 45 52      15        ; 00_001_110 POTTER
57E7: 0E 45 4D 45 52 41 4C      1F        ; 00_001_110 EMERAL
57EF: 0D 50 45 41 52 4C         16        ; 00_001_101 PEARL
;
; Verbs
57F6: C9 4E                     01        ; 11_001_001 N
57F9: CD 4E 4F 52 54 48         01        ; 11_001_101 NORTH
5800: C9 45                     02        ; 11_001_001 E
5803: CC 45 41 53 54            02        ; 11_001_100 EAST
5809: C9 53                     03        ; 11_001_001 S
580C: CD 53 4F 55 54 48         03        ; 11_001_101 SOUTH
5813: C9 57                     04        ; 11_001_001 W
5816: CC 57 45 53 54            04        ; 11_001_100 WEST
581C: CA 4E 45                  05        ; 11_001_010 NE
5820: CE 4E 4F 52 54 48 45      05        ; 11_001_110 NORTHE
5828: CA 53 45                  06        ; 11_001_010 SE
582C: CE 53 4F 55 54 48 45      06        ; 11_001_110 SOUTHE
5834: CA 53 57                  07        ; 11_001_010 SW
5838: CE 53 4F 55 54 48 57      07        ; 11_001_110 SOUTHW
5840: CA 4E 57                  08        ; 11_001_010 NW
5844: CE 4E 4F 52 54 48 57      08        ; 11_001_110 NORTHW
584C: C9 55                     09        ; 11_001_001 U
584F: CA 55 50                  09        ; 11_001_010 UP
5853: C9 44                     0A        ; 11_001_001 D
5856: CC 44 4F 57 4E            0A        ; 11_001_100 DOWN
585C: CA 49 4E                  0B        ; 11_001_010 IN
5860: CE 49 4E 53 49 44 45      0B        ; 11_001_110 INSIDE
5868: CB 4F 55 54               0C        ; 11_001_011 OUT
586D: CE 4F 55 54 53 49 44      0C        ; 11_001_110 OUTSID
5875: CD 43 52 4F 53 53         0D        ; 11_001_101 CROSS
587C: CC 4C 45 46 54            0E        ; 11_001_100 LEFT
5882: CD 52 49 47 48 54         0F        ; 11_001_101 RIGHT
5889: CC 4A 55 4D 50            10        ; 11_001_100 JUMP
588F: CD 43 4C 49 4D 42         11        ; 11_001_101 CLIMB
5896: CD 50 41 4E 45 4C         12        ; 11_001_101 PANEL
589D: CC 42 41 43 4B            14        ; 11_001_100 BACK
58A3: CC 53 57 49 4D            16        ; 11_001_100 SWIM
58A9: CA 4F 4E                  17        ; 11_001_010 ON
58AD: CB 4F 46 46               18        ; 11_001_011 OFF
58B2: CC 51 55 49 54            19        ; 11_001_100 QUIT
58B8: CC 53 54 4F 50            19        ; 11_001_100 STOP
58BE: CD 53 43 4F 52 45         1A        ; 11_001_101 SCORE
58C5: CE 49 4E 56 45 4E 54      1B        ; 11_001_110 INVENT
58CD: CC 4C 4F 4F 4B            1C        ; 11_001_100 LOOK
58D3: CC 48 45 4C 50            1D        ; 11_001_100 HELP
58D9: CC 46 49 4E 44            1E        ; 11_001_100 FIND
;                               20        ; 11_001_010 Y2 would go here. 20 is referenced in the scripts.
58DF: 4C 44 52 4F 50            21        ; 01_001_100 DROP
58E5: 4E 52 45 4C 45 41 53      21        ; 01_001_110 RELEAS
58ED: 4C 46 52 45 45            21        ; 01_001_100 FREE
58F3: 4E 44 49 53 43 41 52      21        ; 01_001_110 DISCAR
58FB: CD 4C 49 47 48 54         17        ; 11_001_101 LIGHT
5902: 4C 57 41 56 45            23        ; 01_001_100 WAVE
5908: 4D 53 48 41 4B 45         23        ; 01_001_101 SHAKE
590F: 4D 53 57 49 4E 47         23        ; 01_001_101 SWING
5916: 4C 50 4F 55 52            24        ; 01_001_100 POUR
591C: 4B 52 55 42               25        ; 01_001_011 RUB
5921: 4D 54 48 52 4F 57         26        ; 01_001_101 THROW
5928: 4C 54 4F 53 53            26        ; 01_001_100 TOSS
592E: 4C 46 49 4C 4C            27        ; 01_001_100 FILL
5934: 8C 54 41 4B 45            28        ; 10_001_100 TAKE
593A: 8B 47 45 54               28        ; 10_001_011 GET
593F: 8D 43 41 52 52 59         28        ; 10_001_101 CARRY
5946: 8D 43 41 54 43 48         28        ; 10_001_101 CATCH
594D: 8D 53 54 45 41 4C         28        ; 10_001_101 STEAL
5954: 8E 43 41 50 54 55 52      28        ; 10_001_110 CAPTUR
595C: 8C 4F 50 45 4E            29        ; 10_001_100 OPEN
5962: 8E 41 54 54 41 43 4B      2C        ; 10_001_110 ATTACK
596A: 8C 4B 49 4C 4C            2C        ; 10_001_100 KILL
5970: 8B 48 49 54               2C        ; 10_001_011 HIT
5975: 8D 46 49 47 48 54         2C        ; 10_001_101 FIGHT
597C: 8C 46 45 45 44            2D        ; 10_001_100 FEED
5982: 8B 45 41 54               2E        ; 10_001_011 EAT
5987: 8D 44 52 49 4E 4B         2F        ; 10_001_101 DRINK
598E: 8D 42 52 45 41 4B         30        ; 10_001_101 BREAK
5995: 8D 53 4D 41 53 48         30        ; 10_001_101 SMASH
599C: CC 4C 4F 41 44            3A        ; 11_001_100 LOAD
59A2: CC 53 41 56 45            3B        ; 11_001_100 SAVE
59A8: CD 50 4C 55 47 48         39        ; 11_001_101 PLUGH
59AF: 00

General Command Handler

This script is used when the room doesn't have a script for the input command.

GeneralComScript:
59B0: 01 04      ; N
59B2: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59B5: 02 04      ; E
59B7: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59BA: 03 04      ; S
59BC: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59BF: 04 04      ; W
59C1: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59C4: 05 04      ; NE
59C6: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59C9: 06 04      ; SE
59CB: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59CE: 07 04      ; SW
59D0: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59D3: 08 04      ; NW
59D5: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59D8: 09 04      ; U
59DA: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59DD: 0A 04      ; D
59DF: 04 ED 73   ;     print(PS_7A) THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
59E2: 0B 04      ; IN
59E4: 04 0D 74   ;     print(PS_7B) I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
59E7: 0C 04      ; OUT
59E9: 04 0D 74   ;     print(PS_7B) I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
59EC: 0E 04      ; LEFT
59EE: 04 31 74   ;     print(PS_7C) I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
59F1: 0F 04      ; RIGHT
59F3: 04 31 74   ;     print(PS_7C) I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
59F6: 12 04      ; PANEL
59F8: 04 56 74   ;     print(PS_7D) NOTHING_HAPPENS.
59FB: 14 02      ; BACK
59FD: 0E         ;     move_to_last_room()
59FE: 16 04      ; SWIM
5A00: 04 63 74   ;     print(PS_7E) I_DON'T_KNOW_HOW.
5A03: 17 18      ; ON
5A05: 07 0C      ;     stop_if_pass ...
5A07: 02 0E      ;         is_in_pack(OBJ_0E_LAMP_OFF)
5A09: 15 0E 00   ;         move_object_to_room(OBJ_0E_LAMP_OFF, RM_00_nowhere)
5A0C: 15 0F FF   ;         move_object_to_room(OBJ_0F_LAMP_ON, BACKPACK)
5A0F: 04 8F 74   ;         print(PS_80) YOUR_LAMP_IS_NOW_ON.
5A12: 07 06      ;     stop_if_pass ...
5A14: 02 0F      ;         is_in_pack(OBJ_0F_LAMP_ON)
5A16: 04 8F 74   ;         print(PS_80) YOUR_LAMP_IS_NOW_ON.
5A19: 04 9F 74   ;     print(PS_81) YOU_HAVE_NO_SOURCE_OF_LIGHT.
5A1C: 18 18      ; OFF
5A1E: 07 0C      ;     stop_if_pass ...
5A20: 02 0F      ;         is_in_pack(OBJ_0F_LAMP_ON)
5A22: 15 0F 00   ;         move_object_to_room(OBJ_0F_LAMP_ON, RM_00_nowhere)
5A25: 15 0E FF   ;         move_object_to_room(OBJ_0E_LAMP_OFF, BACKPACK)
5A28: 04 B4 74   ;         print(PS_82) YOUR_LAMP_IS_NOW_OFF.
5A2B: 07 06      ;     stop_if_pass ...
5A2D: 02 0E      ;         is_in_pack(OBJ_0E_LAMP_OFF)
5A2F: 04 B4 74   ;         print(PS_82) YOUR_LAMP_IS_NOW_OFF.
5A32: 04 9F 74   ;     print(PS_81) YOU_HAVE_NO_SOURCE_OF_LIGHT.
5A35: 19 02      ; QUIT
5A37: 09         ;     end_of_game()
5A38: 1A 02      ; SCORE
5A3A: 08         ;     print_score()
5A3B: 1B 02      ; INVENT
5A3D: 0F         ;     print_inventory()
5A3E: 1C 02      ; LOOK
5A40: 10         ;     print_room_description()
5A41: 1D 04      ; HELP
5A43: 04 C4 74   ;     print(PS_83) I'M_AS_CONFUSED_AS_YOU_ARE.
5A46: 1E 04      ; FIND
5A48: 04 D8 74   ;     print(PS_84) I_CAN_ONLY_TELL_YOU_WHAT_YOU_SEE_AS_YOU_MOVE_ABOUT_AND__________
;                                   MANIPULATE_THINGS.__I_CAN_NOT_TELL_YOU_WHERE_REMOTE_THINGS_ARE.
5A4B: 28 47      ; TAKE
5A4D: 07 06      ;     stop_if_pass ...
5A4F: 11 07      ;         is_object_user_input(OBJ_07_PLANT_SMALL)
5A51: 04 61 7A   ;         print(PS_A8) THE_PLANT_HAS_EXCEPTIONALLY_DEEP_ROOTS_AND_CANNOT_BE_PULLED_____
;                                       FREE.
5A54: 07 17      ;     stop_if_pass ...
5A56: 11 13      ;         is_object_user_input(OBJ_13_BIRD)
5A58: 07 06      ;         stop_if_pass ...
5A5A: 02 11      ;             is_in_pack(OBJ_11_SCEPTER)
5A5C: 04 C7 7A   ;             print(PS_AA) AS_YOU_APPROACH_THE_STATUE,_IT_COMES_TO_LIFE_AND_FLIES_ACROSS___
;                                           THE_CHAMBER_WHERE_IT_LANDS_AND_RETURNS_TO_STONE.
5A5F: 07 09      ;         stop_if_pass ...
5A61: 02 10      ;             is_in_pack(OBJ_10_BOX)
5A63: 15 13 00   ;             move_object_to_room(OBJ_13_BIRD, RM_00_nowhere)
5A66: 19 14 10   ;             put_object_in_container_print_ok(OBJ_14_BIRD_IN_BOX, OBJ_10_BOX)
5A69: 04 14 7B   ;         print(PS_AB) YOU_CAN_LIFT_THE_STATUE,_BUT_YOU_CANNOT_CARRY_IT.
5A6C: 07 0A      ;     stop_if_pass ...
5A6E: 11 20      ;         is_object_user_input(OBJ_20_VASE_ON_PILLOW)
5A70: 12 21      ;         get_from_room_print_ok(OBJ_21_VASE)
5A72: 15 20 00   ;         move_object_to_room(OBJ_20_VASE_ON_PILLOW, RM_00_nowhere)
5A75: 18 12      ;         move_object_to_current_room(OBJ_12_PILLOW)
5A77: 07 0D      ;     stop_if_pass ...
5A79: 11 1E      ;         is_object_user_input(OBJ_1E_STREAM_ROOM_38)
5A7B: 07 06      ;         stop_if_pass ...
5A7D: 02 1C      ;             is_in_pack(OBJ_1C_WATER)
5A7F: 04 37 7B   ;             print(PS_AC) YOUR_BOTTLE_IS_ALREADY_FULL.
5A82: 19 1C 1B   ;         put_object_in_container_print_ok(OBJ_1C_WATER, OBJ_1B_BOTTLE)
5A85: 07 0C      ;     stop_if_pass ...
5A87: 11 12      ;         is_object_user_input(OBJ_12_PILLOW)
5A89: 1A 20      ;         is_in_current_room(OBJ_20_VASE_ON_PILLOW)
5A8B: 15 20 00   ;         move_object_to_room(OBJ_20_VASE_ON_PILLOW, RM_00_nowhere)
5A8E: 18 21      ;         move_object_to_current_room(OBJ_21_VASE)
5A90: 12 12      ;         get_from_room_print_ok(OBJ_12_PILLOW)
5A92: 16         ;     get_users_object_print_ok()
5A93: 21 17      ; DROP
5A95: 07 14      ;     stop_if_pass ...
5A97: 11 21      ;         is_object_user_input(OBJ_21_VASE)
5A99: 15 21 00   ;         move_object_to_room(OBJ_21_VASE, RM_00_nowhere)
5A9C: 07 08      ;         stop_if_pass ...
5A9E: 1A 12      ;             is_in_current_room(OBJ_12_PILLOW)
5AA0: 18 20      ;             move_object_to_current_room(OBJ_20_VASE_ON_PILLOW)
5AA2: 04 15 7C   ;             print(PS_B0) THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW.
5AA5: 18 15      ;         move_object_to_current_room(OBJ_15_POTTERY)
5AA7: 04 3D 7C   ;         print(PS_B1) THE_VASE_DROPS_WITH_A_DELICATE_CRASH.
5AAA: 17         ;     drop_users_object_print_ok()
5AAB: 26 0E      ; THROW
5AAD: 07 0B      ;     stop_if_pass ...
5AAF: 11 21      ;         is_object_user_input(OBJ_21_VASE)
5AB1: 15 21 00   ;         move_object_to_room(OBJ_21_VASE, RM_00_nowhere)
5AB4: 18 15      ;         move_object_to_current_room(OBJ_15_POTTERY)
5AB6: 04 75 7C   ;         print(PS_B3) YOU_HAVE_TAKEN_THE_VASE_AND_HURLED_IT_DELICATELY_TO_THE_GROUND.
5AB9: 17         ;     drop_users_object_print_ok()
5ABA: 29 36      ; OPEN
5ABC: 07 1C      ;     stop_if_pass ...
5ABE: 11 17      ;         is_object_user_input(OBJ_17_SARCOPH_FULL)
5AC0: 07 06      ;         stop_if_pass ...
5AC2: 02 17      ;             is_in_pack(OBJ_17_SARCOPH_FULL)
5AC4: 04 01 77   ;             print(PS_94) I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
5AC7: 07 0E      ;         stop_if_pass ...
5AC9: 02 22      ;             is_in_pack(OBJ_22_KEY)
5ACB: 04 BE 76   ;             print(PS_93) A_GLISTENING_PEARL_FALLS_OUT_OF_THE_SARCOPHAGUS_AND_ROLLS_AWAY._
;                                           THE_SARCOPHAGUS_SNAPS_SHUT_AGAIN.
5ACE: 15 16 40   ;             move_object_to_room(OBJ_16_PEARL, RM_40_CUL_DE_SAC)
5AD1: 15 17 00   ;             move_object_to_room(OBJ_17_SARCOPH_FULL, RM_00_nowhere)
5AD4: 18 18      ;             move_object_to_current_room(OBJ_18_SARCOPH_EMPTY)
5AD6: 04 6B 77   ;         print(PS_96) YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
5AD9: 07 14      ;     stop_if_pass ...
5ADB: 11 18      ;         is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5ADD: 07 06      ;         stop_if_pass ...
5ADF: 02 18      ;             is_in_pack(OBJ_18_SARCOPH_EMPTY)
5AE1: 04 01 77   ;             print(PS_94) I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
5AE4: 07 06      ;         stop_if_pass ...
5AE6: 02 22      ;             is_in_pack(OBJ_22_KEY)
5AE8: 04 2D 77   ;             print(PS_95) THE_SARCOPHAGUS_CREAKS_OPEN,_REVEALING_NOTHING_INSIDE.__IT______
;                                           PROMPTLY_SNAPS_SHUT_AGAIN.
5AEB: 04 6B 77   ;         print(PS_96) YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
5AEE: 04 97 77   ;     print(PS_97) I_DON'T_KNOW_HOW_TO_LOCK_OR_UNLOCK_SUCH_A_THING.
5AF1: 23 04      ; WAVE
5AF3: 04 56 74   ;     print(PS_7D) NOTHING_HAPPENS.
5AF6: 24 0E      ; POUR
5AF8: 07 09      ;     stop_if_pass ...
5AFA: 11 1C      ;         is_object_user_input(OBJ_1C_WATER)
5AFC: 15 1C 00   ;         move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
5AFF: 04 E9 75   ;         print(PS_8C) 77	 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET.
;                                       YOUR_BOTTLE_IS_EMPTY_AND_THE_GROUND_IS_WET.
5B02: 04 08 76   ;     print(PS_8D) YOU_CAN'T_POUR_THAT.
5B05: 25 12      ; RUB
5B07: 07 06      ;     stop_if_pass ...
5B09: 11 0E      ;         is_object_user_input(OBJ_0E_LAMP_OFF)
5B0B: 04 18 76   ;         print(PS_8E) RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
;                                       ANYWAY,_NOTHING_EXCITING_HAPPENS.
5B0E: 07 06      ;     stop_if_pass ...
5B10: 11 0F      ;         is_object_user_input(OBJ_0F_LAMP_ON)
5B12: 04 18 76   ;         print(PS_8E) RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
;                                       ANYWAY,_NOTHING_EXCITING_HAPPENS.
5B15: 04 5B 76   ;     print(PS_8F) PECULIAR.__NOTHING_UNEXPECTED_HAPPENS.
5B18: 27 12      ; FILL
5B1A: 07 06      ;     stop_if_pass ...
5B1C: 11 1B      ;         is_object_user_input(OBJ_1B_BOTTLE)
5B1E: 04 77 76   ;         print(PS_90) THERE_IS_NOTHING_HERE_WITH_WHICH_TO_FILL_THE_BOTTLE.
5B21: 07 06      ;     stop_if_pass ...
5B23: 11 21      ;         is_object_user_input(OBJ_21_VASE)
5B25: 04 D9 75   ;         print(PS_8B) DON'T_BE_RIDICULOUS!
5B28: 04 AE 76   ;     print(PS_92) YOU_CAN'T_FILL_THAT.
5B2B: 2C 2D      ; ATTACK
5B2D: 07 09      ;     stop_if_pass ...
5B2F: 11 13      ;         is_object_user_input(OBJ_13_BIRD)
5B31: 15 13 00   ;         move_object_to_room(OBJ_13_BIRD, RM_00_nowhere)
5B34: 04 B9 77   ;         print(PS_98) THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
5B37: 07 09      ;     stop_if_pass ...
5B39: 11 14      ;         is_object_user_input(OBJ_14_BIRD_IN_BOX)
5B3B: 15 14 00   ;         move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
5B3E: 04 B9 77   ;         print(PS_98) THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
5B41: 07 06      ;     stop_if_pass ...
5B43: 11 17      ;         is_object_user_input(OBJ_17_SARCOPH_FULL)
5B45: 04 DD 77   ;         print(PS_99) THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
5B48: 07 06      ;     stop_if_pass ...
5B4A: 11 18      ;         is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5B4C: 04 DD 77   ;         print(PS_99) THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
5B4F: 07 06      ;     stop_if_pass ...
5B51: 11 0B      ;         is_object_user_input(OBJ_0B_SERPENT)
5B53: 04 03 78   ;         print(PS_9A) ATTACKING_THE_SERPENT_BOTH_DOESN'T_WORK_AND_IS_VERY_DANGEROUS.
5B56: 04 2F 78   ;     print(PS_9B) YOU_CAN'T_BE_SERIOUS!
5B59: 30 04      ; BREAK
5B5B: 04 3F 78   ;     print(PS_9C) IT_IS_BEYOND_YOUR_POWER_TO_DO_THAT.
5B5E: 2E 23      ; EAT
5B60: 07 09      ;     stop_if_pass ...
5B62: 11 1A      ;         is_object_user_input(OBJ_1A_FOOD)
5B64: 15 1A 00   ;         move_object_to_room(OBJ_1A_FOOD, RM_00_nowhere)
5B67: 04 59 78   ;         print(PS_9D) THANK_YOU,_IT_WAS_DELICIOUS!
5B6A: 07 06      ;     stop_if_pass ...
5B6C: 11 0A      ;         is_object_user_input(OBJ_0A_UNKNOWN_0A??)
5B6E: 04 6E 78   ;         print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5B71: 07 06      ;     stop_if_pass ...
5B73: 11 13      ;         is_object_user_input(OBJ_13_BIRD)
5B75: 04 6E 78   ;         print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5B78: 07 06      ;     stop_if_pass ...
5B7A: 11 14      ;         is_object_user_input(OBJ_14_BIRD_IN_BOX)
5B7C: 04 6E 78   ;         print(PS_9E) I_THINK_I_JUST_LOST_MY_APPETITE.
5B7F: 04 D9 75   ;     print(PS_8B) DON'T_BE_RIDICULOUS!
5B82: 2F 15      ; DRINK
5B84: 07 09      ;     stop_if_pass ...
5B86: 11 1C      ;         is_object_user_input(OBJ_1C_WATER)
5B88: 15 1C 00   ;         move_object_to_room(OBJ_1C_WATER, RM_00_nowhere)
5B8B: 04 9C 76   ;         print(PS_91) THE_BOTTLE_IS_NOW_EMPTY.
5B8E: 07 06      ;     stop_if_pass ...
5B90: 11 1E      ;         is_object_user_input(OBJ_1E_STREAM_ROOM_38)
5B92: 04 86 78   ;         print(PS_9F) YOU_HAVE_TAKEN_A_DRINK_FROM_THE_STREAM.__THE_WATER_TASTES_______
;                                       STRONGLY_OF_MINERALS,_BUT_IS_NOT_UNPLEASANT.__IT_IS_EXTREMELY___
;                                       COLD.
5B95: 04 2F 78   ;     print(PS_9B) YOU_CAN'T_BE_SERIOUS!
5B98: 2D 38      ; FEED
5B9A: 07 06      ;     stop_if_pass ...
5B9C: 11 13      ;         is_object_user_input(OBJ_13_BIRD)
5B9E: 04 E1 78   ;         print(PS_A0) IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
5BA1: 07 06      ;     stop_if_pass ...
5BA3: 11 14      ;         is_object_user_input(OBJ_14_BIRD_IN_BOX)
5BA5: 04 E1 78   ;         print(PS_A0) IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
5BA8: 07 10      ;     stop_if_pass ...
5BAA: 11 0B      ;         is_object_user_input(OBJ_0B_SERPENT)
5BAC: 07 09      ;         stop_if_pass ...
5BAE: 02 14      ;             is_in_pack(OBJ_14_BIRD_IN_BOX)
5BB0: 15 14 00   ;             move_object_to_room(OBJ_14_BIRD_IN_BOX, RM_00_nowhere)
5BB3: 04 2B 79   ;             print(PS_A2) THE_SERPENT_HAS_NOW_DEVOURED_YOUR_BIRD_STATUE.
5BB6: 04 4C 79   ;         print(PS_A3) THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
5BB9: 07 06      ;     stop_if_pass ...
5BBB: 11 17      ;         is_object_user_input(OBJ_17_SARCOPH_FULL)
5BBD: 04 A7 79   ;         print(PS_A5) I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
5BC0: 07 06      ;     stop_if_pass ...
5BC2: 11 18      ;         is_object_user_input(OBJ_18_SARCOPH_EMPTY)
5BC4: 04 A7 79   ;         print(PS_A5) I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
5BC7: 07 06      ;     stop_if_pass ...
5BC9: 11 0D      ;         is_object_user_input(OBJ_0D_UNKNOWN_0D??)
5BCB: 04 4C 79   ;         print(PS_A3) THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
5BCE: 04 D9 75   ;     print(PS_8B) DON'T_BE_RIDICULOUS!
5BD1: 39 02      ; PLUGH
5BD3: 1D         ;     scramble_directions_print_ack()
5BD4: 3A 02      ; LOAD
5BD6: 1B         ;     load_game()
5BD7: 3B 02      ; SAVE
5BD9: 1C         ;     save_game()
5BDA: 00         ;

Room descriptions (packed)

; adventure.dat ??
; YOU_ARE_STANDING_BEFORE_THE_ENTRANCE_OF_A_PYRAMID.__AROUND_YOU__
; IS_A_DESERT.
PS_00: ; RM_01_BEFORE_ENTRANCE
5BDB: 19 C7 DE 94 14 55 5E 50 BD 90 5A C4 6A 59 60 5B
5BEB: B1 5F BE 30 15 EB BF 17 98 B8 16 7B 14 14 A8 6B
5BFB: 48 9B 5D 94 14 30 A1 1B 58 1B A1 D5 15 7B 14 F5
5C0B: 59 3E 62 2E 00

; adventure.dat ??
; YOU_ARE_IN_THE_ENTRANCE_TO_THE_PYRAMID.__A_HOLE_IN_THE_FLOOR____
; LEADS_TO_A_PASSAGE_BENEATH_THE_SURFACE.
PS_01: ; RM_02_IN_ENTRANCE
5C10: 22 C7 DE 94 14 4B 5E 96 96 DB 72 9E 61 D0 B0 9B
5C20: 53 6B BF 5F BE F3 16 CF B0 17 79 43 13 A9 15 DB
5C30: 8B 83 7A 5F BE 56 15 44 A0 3B 13 3F 16 0D 47 89
5C40: 17 7B 14 55 A4 09 B7 44 5E 8F 61 82 49 82 17 55
5C50: 5E 30 C6 D7 46 2E 00

; adventure.dat ??
; YOU_ARE_IN_THE_DESERT.
PS_02: ; RM_03_DESERT1, RM_04, RM_05, RM_06
5C57: 07 C7 DE 94 14 4B 5E 96 96 DB 72 F5 59 3E 62 2E
5C67: 00

; 9	 YOU ARE IN A SMALL CHAMBER BENEATH A 3X3 STEEL GRATE TO THE
; 9	 SURFACE. A LOW CRAWL OVER COBBLES LEADS INWARD TO THE WEST.
; woods9
;
; YOU_ARE_IN_A_SMALL_CHAMBER_BENEATH_A_HOLE_FROM_THE_SURFACE.__A__
; LOW_CRAWL_LEADS_INWARD_TO_THE_WEST.__HIEROGLYPHICS_ON_THE_WALL__
; TRANSLATE,_"CURSE_ALL_WHO_ENTER_THIS_SACRED_CRYPT."
PS_03: ; RM_07_BENEATH_A_HOLE
5C68: 3B C7 DE 94 14 4B 5E 83 96 5F 17 46 48 DA 14 64
5C78: 48 23 62 70 4D 96 5F 03 71 A9 15 DB 8B 79 68 56
5C88: 90 DB 72 34 BA C5 65 DB 63 7B 14 49 16 C5 CE D9
5C98: B0 0E 8A 86 5F CB B5 33 9B 33 B1 6B BF 5F BE F7
5CA8: 17 17 BA 4A 13 34 79 FE 9E E2 DE E5 78 C0 16 82
5CB8: 17 59 5E 46 48 56 13 D0 B0 BB B8 FE BD 6D 13 3D
5CC8: C6 43 5E F3 8C 29 D1 30 15 F4 BD 82 17 4B 7B 05
5CD8: B7 66 B1 E4 14 EE DE 2E 22 00

; 10	 YOU ARE CRAWLING OVER COBBLES IN A LOW PASSAGE. THERE IS A
; 10	 DIM LIGHT AT THE EAST END OF THE PASSAGE.
; woods10
;
; YOU_ARE_CRAWLING_OVER_PEBBLES_IN_A_LOW_PASSAGE.__THERE_IS_A_DIM_
; LIGHT_AT_THE_EAST_END_OF_THE_PASSAGE.
PS_04: ; RM_08_CRAWLING_OVER_PEBBLES
5CE2: 21 C7 DE 94 14 45 5E D9 B0 90 8C D1 6A 74 CA DF
5CF2: 16 F6 4C 4B 62 83 7A 4E 45 6B A1 55 A4 09 B7 DB
5D02: 63 82 17 2F 62 D5 15 7B 14 8F 5A 43 16 2E 6D 96
5D12: 14 82 17 47 5E 66 49 30 15 11 58 96 64 DB 72 55
5D22: A4 09 B7 45 2E 00

; 11	 YOU ARE IN A DEBRIS ROOM, FILLED WITH STUFF WASHED IN FROM
; 11	 THE SURFACE. A LOW WIDE PASSAGE WITH COBBLES BECOMES
; 11	 PLUGGED WITH MUD AND DEBRIS HERE,BUT AN AWKWARD CANYON
; 11	 LEADS UPWARD AND WEST.
; 11	 A NOTE ON THE WALL SAYS 'MAGIC WORD XYZZY'.
; woods11
;
; YOU_ARE_IN_A_ROOM_FILLED_WITH_BROKEN_POTTERY_SHARDS_OF_ANCIENT__
; EGYPTIAN_CRAFTS.__AN_AWKWARD_CORRIDOR_LEADS_UPWARD_AND_WEST.
PS_05: ; RM_09_BROKEN_POTTERY
5D28: 29 C7 DE 94 14 4B 5E 83 96 39 17 DB 9F 0E 67 E6
5D38: 8B FB 17 53 BE 79 4F B0 85 E9 16 3F C0 7B B4 1B
5D48: B8 4D B1 B8 16 90 14 47 54 B3 9A 29 15 EE DE 90
5D58: 78 E4 14 5E 47 5B BB 90 14 99 14 73 88 33 B1 44
5D68: 55 06 B2 A3 A0 E3 8B 0B 5C F1 C5 2E 49 90 14 19
5D78: 58 66 62 2E 00

; 12	 YOU ARE IN AN AWKWARD SLOPING EAST/WEST CANYON.
; woods12
;
; YOU_ARE_IN_AN_AWKWARD_SLOPING_EAST/WEST_CORRIDOR.
PS_06: ; RM_0A_AWKWARD_SLOPING
5D7D: 10 C7 DE 94 14 4B 5E 83 96 83 96 A9 D1 2E 49 5E
5D8D: 17 63 A0 AB 98 95 5F E1 BC 66 62 E1 14 73 B3 84
5D9D: 5B 2E 00

; 13	 YOU ARE IN A SPLENDID CHAMBER THIRTY FEET HIGH. THE WALLS
; 13	 ARE FROZEN RIVERS OF ORANGE STONE. AN AWKWARD CANYON AND A
; 13	 GOOD PASSAGE EXIT FROM EAST AND WEST SIDES OF THE CHAMBER.
; woods13
;
; YOU_ARE_IN_A_SPLENDID_CHAMBER_THIRTY_FEET_HIGH.__THE_WALLS_ARE__
; FROZEN_RIVERS_OF_ORANGE_STONE.__AN_AWKWARD_CORRIDOR_AND_A_GOOD__
; PASSAGE_EXIT_FROM_THE_EAST_AND_WEST_SIDES_OF_THE_CHAMBER.
PS_07: ; RM_0B_SPLENDID_CHAMBER
5DA0: 3D C7 DE 94 14 4B 5E 83 96 62 17 F0 8B 86 5A DA
5DB0: 14 64 48 23 62 63 BE D3 B3 4F 15 73 62 89 73 9B
5DC0: 76 82 17 59 5E 46 48 C3 B5 5B B1 5C 15 EF A1 94
5DD0: 96 CF 7B 8B B3 C3 9E AB A0 B7 98 66 17 0F A0 3B
5DE0: F4 83 48 FD 49 14 D0 05 58 BC A0 09 79 83 AF 33
5DF0: 98 49 45 36 A0 52 13 65 49 77 47 3A 15 73 7B 79
5E00: 68 56 90 DB 72 95 5F 03 BC 33 98 B5 D0 15 BC FF
5E10: 78 D1 B5 96 64 DB 72 1B 54 AF 91 52 2E 00

; 14	 AT YOUR FEET IS A SMALL PIT BREATHING TRACES OF WHITE MIST. AN
; 14	 EAST PASSAGE ENDS HERE EXCEPT FOR A SMALL CRACK LEADING ON.
; woods14
;
; AT_YOUR_FEET_IS_A_SMALL_PIT_BREATHING_TRACES_OF_WHITE_MIST.__AN_
; EAST_PASSAGE_ENDS_HERE_EXCEPT_FOR_A_SMALL_CRACK_LEADING_ON._____
; ROUGH_STONE_STEPS_LEAD_DOWN_THE_PIT.
PS_08: ; RM_0C_SMALL_PIT_WHITE_MIST
5E1E: 36 73 49 C7 DE 88 AF 36 60 D5 15 7B 14 E3 B8 F3
5E2E: 8C 96 A5 BC 14 96 5F 90 73 D6 6A C5 B0 4B 62 C3
5E3E: 9E 23 D1 DB BD D5 92 9B C1 90 14 23 15 F3 B9 55
5E4E: A4 09 B7 47 5E 4D 98 9F 15 5B B1 1D 63 EE 61 59
5E5E: 15 83 AF 5F 17 46 48 E4 14 DD 46 3F 16 03 47 AB
5E6E: 98 27 A0 3B 13 54 13 29 A1 15 71 80 BF 55 5E F2
5E7E: BD CE B5 86 5F 09 15 03 D2 5F BE E3 16 54 2E 00

; 15	 YOU ARE AT ONE END OF A VAST HALL STRETCHING FORWARD OUT OF
; 15	 SIGHT TO THE WEST. THERE ARE OPENINGS TO EITHER SIDE. NEARBY, A WIDE
; 15	 STONE STAIRCASE LEADS DOWNWARD. THE HALL IS FILLED WITH
; 15	 WISPS OF WHITE MIST SWAYING TO AND FRO ALMOST AS IF ALIVE.
; 15	 A COLD WIND BLOWS UP THE STAIRCASE. THERE IS A PASSAGE
; 15	 AT THE TOP OF A DOME BEHIND YOU.
; woods15
;
; YOU_ARE_AT_ONE_END_OF_A_VAST_HALL_STRETCHING_FORWARD_OUT_OF_____
; SIGHT_TO_THE_WEST.__THERE_ARE_OPENINGS_TO_EITHER_SIDE.__NEARBY,_
; A_WIDE_STONE_STAIRCASE_LEADS_DOWNWARD.__THE_HALL_IS_VERY_MUSTY__
; AND_A_COLD_WIND_BLOWS_UP_THE_STAIRCASE.__THERE_IS_A_PASSAGE_AT__
; THE_TOP_OF_A_DOME_BEHIND_YOU.__ROUGH_STONE_STEPS_LEAD_UP_THE____
; DOME.
PS_09: ; RM_0D_STEPS_LEAD_UP_DOME
5E8E: 6C C7 DE 94 14 43 5E 11 BC 5B 98 8E 61 B8 16 7B
5E9E: 14 D5 C9 0A BC 46 48 66 17 76 B1 23 54 AB 98 04
5EAE: 68 14 D0 11 58 73 C6 C3 9E 3B 13 5B 17 2E 6D 89
5EBE: 17 82 17 59 5E 66 62 3B F4 5F BE 5B B1 2F 49 C2
5ECE: 16 93 61 C5 98 89 17 2B 15 5F BE 95 AF FF 78 3B
5EDE: F4 63 98 03 B1 03 EE FB 17 DB 59 09 BA 5B 98 FB
5EEE: B9 2D 7B 57 49 3F 16 0D 47 09 15 21 D2 2E 49 3B
5EFE: F4 5F BE 9B 15 F3 8C 4B 7B 74 CA 4F DB 66 C6 3B
5F0E: DB 8E 48 7B 14 3E 55 19 58 8E 7A B6 14 85 A1 B2
5F1E: 17 82 17 55 5E 4B BD 13 B1 BF B7 56 13 F4 72 4B
5F2E: 5E C3 B5 DB 16 D3 B9 9B 6C 73 49 82 17 56 5E 53
5F3E: A0 C3 9E 46 45 E7 9F AF 14 90 73 1B 58 3F A1 54
5F4E: 13 29 A1 15 71 80 BF 55 5E F2 BD CE B5 86 5F B2
5F5E: 17 82 17 3B 5E 46 13 E7 9F 2E 00

; 18	 THIS IS A LOW ROOM WITH A CRUDE NOTE ON THE WALL.
; 18	 IT SAYS 'YOU WON'T GET IT UP THE STEPS'.
; woods18
;
; THIS_IS_A_LOW_ROOM_WITH_A_HIEROGLYPH_ON_THE_WALL.__IT_TRANSLATES
; "YOU_WON'T_GET_IT_UP_THE_STEPS".
PS_0A: ; RM_0E_LOW_ROOM_HIEROGLYPH
5F69: 20 63 BE CB B5 C3 B5 49 16 D4 CE 3F A0 FB 17 53
5F79: BE 4A 45 34 79 FE 9E E2 DE C0 16 82 17 59 5E 46
5F89: 48 3B F4 73 7B EB BF 9E 9A 7F 49 03 B6 1B A1 40
5F99: D2 F3 23 B6 6C D6 15 B2 17 82 17 55 5E F2 BD 07
5FA9: B6 00

; 17	 YOU ARE ON THE EAST BANK OF A FISSURE SLICING CLEAR ACROSS
; 17	 THE HALL. THE MIST IS QUITE THICK HERE, AND THE FISSURE IS
; 17	 TOO WIDE TO JUMP.
; woods17
;
; YOU_ARE_ON_THE_EAST_BANK_OF_A_BOTTOMLESS_PIT_STRETCHING_ACROSS__
; THE_HALL.__THE_MIST_IS_QUITE_THICK_HERE,_AND_THE_PIT_IS_TOO_WIDE
; TO_JUMP.
PS_0B: ; RM_0F_EAST_BANK_BOTTOMLESS_PIT
5FAB: 2D C7 DE 94 14 51 5E 96 96 DB 72 95 5F 04 BC 95
5FBB: 48 B8 16 7B 14 06 4F 7F BF F5 8B D2 B5 73 7B 0C
5FCB: BA 7D 62 90 73 C3 6A B9 55 CB B9 82 17 4A 5E 46
5FDB: 48 3B F4 5F BE 6B 16 F3 B9 4B 7B AB AD DB BD 63
5FEB: BE 8B 54 F4 72 B3 63 8E 48 82 17 52 5E 73 7B 4B
5FFB: 7B 81 BF FB 17 F6 59 CC 9C 72 C5 2E 00

; 19	 YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES
; 19	 OFF IN ALL DIRECTIONS.
; woods19
;
; YOU_ARE_IN_THE_PHARAOH'S_CHAMBER,_WITH_PASSAGES_OFF_IN_ALL______
; DIRECTIONS.
PS_0C: ; RM_10_PHARAOHS_CHAMBER
6008: 19 C7 DE 94 14 4B 5E 96 96 DB 72 5B A5 D1 B0 65
6018: 71 DA 14 64 48 46 62 FB 17 53 BE 55 A4 09 B7 4B
6028: 62 D0 9E D0 15 8E 14 FB 89 3B 13 03 15 65 B1 91
6038: BE AF 9A 00

; 29	 YOU ARE IN THE SOUTH SIDE CHAMBER.
; woods29
;
; YOU_ARE_IN_THE_SOUTH_SIDE_CHAMBER.
PS_0D: ; RM_11_SOUTH_SIDE_CHAMBER
603C: 0B C7 DE 94 14 4B 5E 96 96 DB 72 47 B9 53 BE 46
604C: B8 45 5E 4F 72 74 4D 2E 00

; 27	 YOU ARE ON THE WEST SIDE OF THE FISSURE IN THE HALL OF MISTS.
; woods27
;
; YOU_ARE_ON_THE_WEST_SIDE_OF_THE_BOTTOMLESS_PIT_IN_THE_HALL_OF___
; GODS.
PS_0E: ; RM_12_HALL_OF_GODS
6055: 17 C7 DE 94 14 51 5E 96 96 DB 72 B5 D0 15 BC FF
6065: 78 B8 16 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 0B
6075: BC 96 96 DB 72 4E 72 11 8A 7B 64 81 15 2F 5C 00

; 41	 YOU ARE AT THE WEST END OF HALL OF MISTS. A LOW WIDE CRAWL
; 41	 CONTINUES WEST AND ANOTHER GOES NORTH. TO THE SOUTH IS A
; 41	 LITTLE PASSAGE 6 FEET OFF THE FLOOR.
;
; YOU_ARE_AT_THE_WEST_END_OF_THE_HALL_OF_GODS.___A_LOW_WIDE_PASS__
; CONTINUES_WEST_AND_ANOTHER_GOES_NORTH.__TO_THE_SOUTH_IS_A_LITTLE
; PASSAGE_SIX_FEET_OFF_THE_FLOOR.
PS_0F: ; RM_13_LITTLE_PASSAGE_SIX_FEET
6085: 35 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33
6095: 98 C3 9E 5F BE 9B 15 F3 8C C3 9E 36 6E 5B BB 43
60A5: 13 49 16 D9 CE FF 78 DB 16 CB B9 E1 14 C3 9A E7
60B5: 9A D9 B5 66 62 90 14 03 58 06 9A F4 72 81 15 4B
60C5: 62 04 9A 77 BE 56 13 D6 9C DB 72 47 B9 53 BE 4B
60D5: 7B 4E 45 8E 7B F2 8B 65 49 77 47 5B 17 08 D5 36
60E5: 60 B8 16 96 64 DB 72 89 67 C7 A0 00

; 60	 YOU ARE AT THE EAST END OF A VERY LONG HALL APPARENTLY
; 60	 WITHOUT SIDE CHAMBERS. TO THE EAST A LOW WIDE CRAWL SLANTS
; 60	 UP. TO THE NORTH A ROUND TWO FOOT HOLE SLANTS DOWN.
;
; YOU_ARE_AT_EAST_END_OF_A_VERY_LONG_HALL_APPARENTLY_WITHOUT_SIDE_
; CHAMBERS.__TO_THE_EAST_A_LOW_WIDE_CRAWL_SLANTS_UP.__TO_THE_NORTH
; A_ROUND_TWO_FOOT_HOLE_SLANTS_DOWN.
PS_10: ; RM_14_EAST_END_LONG_HALL
60F1: 36 C7 DE 94 14 43 5E 07 BC 66 49 30 15 11 58 83
6101: 64 CF 17 7B B4 80 8D CA 6A 46 48 92 14 54 A4 9E
6111: 61 FB 8E 56 D1 87 74 15 BC FF 78 DA 14 64 48 3D
6121: 62 3B F4 6B BF 5F BE 23 15 F3 B9 4E 45 6B A1 46
6131: D1 45 5E D9 B0 15 8A 50 8B 0B C0 F7 C5 56 13 D6
6141: 9C DB 72 04 9A 5B BE 39 17 8E C5 91 17 C8 9C 46
6151: A0 A9 15 DB 8B BB B8 CD 9A 09 15 27 D2 00

; 61	 YOU ARE AT THE WEST END OF A VERY LONG FEATURELESS HALL.
;
; YOU_ARE_AT_THE_WEST_END_OF_A_VERY_LONG_FEATURELESS_HALL.__THE___
; HALL_JOINS_UP_WITH_A_NARROW_NORTH/SOUTH_PASSAGE.
PS_11: ; RM_15_WEST_END_FEATURELESS_HALL
615F: 25 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33
616F: 98 C3 9E 58 45 43 62 49 16 AB 98 63 66 74 C0 3F
617F: 61 CB B9 4E 72 9B 8F 82 17 3B 5E 9B 15 F3 8C FB
618F: 80 8B 9A D3 C5 56 D1 03 71 8B 16 79 B3 D0 CE BE
619F: A0 DD 71 36 A1 12 71 65 49 77 47 2E 00

; 62	 YOU ARE AT A CROSSOVER OF A HIGH N/S PASSAGE AND A LOW E/W ONE.
;
; YOU_ARE_AT_A_CROSSOVER_OF_A_HIGH_N/S_PASSAGE_AND_A_LOW_E/W_ONE.
PS_12: ; RM_16_CROSSOVER
61AC: 15 C7 DE 94 14 43 5E 03 BC E4 14 E5 A0 4F A1 91
61BC: AF 83 64 A3 15 13 6D 5D 97 DB 16 D3 B9 9B 6C 8E
61CC: 48 7B 14 89 8D 20 15 D1 CE 7F 98 00

; 63	 DEAD END
;
; DEAD_END.
PS_13: ; RM_17_DEAD_END1, RM_2A, RM_2B, RM_2C, RM_2D, RM_2E, RM_2F, RM_30, RM_31, RM_32, RM_33, RM_35
61D8: 03 E3 59 07 58 57 98 00

; 30	 YOU ARE IN THE WEST SIDE CHAMBER OF HALL OF MT KING.
; 30	 A PASSAGE CONTINUES WEST AND UP HERE.
; woods31
;
; YOU_ARE_IN_THE_WEST_THRONE_CHAMBER.__A_PASSAGE_CONTINUES_WEST___
; AND_UP_FROM_HERE.
PS_14: ; RM_18_THRONE_CHAMBER
61E0: 1B C7 DE 94 14 4B 5E 96 96 DB 72 B5 D0 16 BC F9
61F0: 74 5B 98 1B 54 AF 91 1B B5 7B 14 55 A4 09 B7 45
6200: 5E 1E A0 9F 7A 4B 62 B5 D0 FB BB 90 14 17 58 08
6210: A3 FF B2 9F 15 7F B1 00

; 28	 YOU ARE IN A LOW N/S PASSAGE AT A HOLE IN THE FLOOR.
; 28	 THE HOLE GOES DOWN TO AN E/W PASSAGE.
; woods28
;
; YOU_ARE_IN_A_LOW_N/S_PASSAGE_AT_A_HOLE_IN_THE_FLOOR.__THE_HOLE__
; GOES_DOWN_TO_AN_E/W_PASSAGE.
PS_15: ; RM_19_LOW_NS_PASSAGE
6218: 1E C7 DE 94 14 4B 5E 83 96 49 16 D0 CE 8B 36 55
6228: A4 09 B7 43 5E 03 BC A9 15 DB 8B 83 7A 5F BE 56
6238: 15 44 A0 3B F4 5F BE A9 15 DB 8B 81 15 4B 62 89
6248: 5B 96 96 C3 9C 87 96 2B 37 55 A4 09 B7 45 2E 00

; 33	 YOU ARE IN A LARGE ROOM, WITH A PASSAGE TO THE SOUTH,
; 33	 A PASSAGE TO THE WEST, AND A WALL OF BROKEN ROCK TO
; 33	 THE EAST. THERE IS A LARGE 'Y2' ON A ROCK IN ROOMS CENTER.
; woods33
;
; YOU_ARE_IN_A_LARGE_ROOM,_WITH_A_PASSAGE_TO_THE_SOUTH,_AND_A_WALL
; OF_BROKEN_ROCK_TO_THE_EAST.__THERE_IS_A_PANEL_ON_THE_NORTH_WALL.
PS_16: ; RM_1A_PANEL_NORTH_WALL
6258: 2A C7 DE 94 14 4B 5E 83 96 3B 16 B7 B1 39 17 FE
6268: 9F FB 17 53 BE 52 45 65 49 77 47 89 17 82 17 55
6278: 5E 36 A1 73 76 8E 48 7B 14 0E D0 78 8D BC 14 97
6288: 9F 94 96 5D 9E 89 17 82 17 47 5E 66 49 3B F4 5F
6298: BE 5B B1 4B 7B 52 45 8F 48 11 8A 96 96 DB 72 04
62A8: 9A 53 BE 0E D0 4C 2E 00

; adventure.dat ??
; YOU_ARE_IN_THE_CHAMBER_OF_ANUBIS.
PS_17: ; RM_1B_CHAMBER_OF_ANUBIS
62B0: 0B C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91
62C0: AF 83 64 E4 9A 6F 7B 00

; YOU_ARE_IN_A_MAZE_OF_TWISTY_PASSAGES,_ALL_ALIKE.
PS_18: ; RM_1C_TWISTY_PASSAGES1, RM_1D, RM_1E, RM_1F, RM_20, RM_21, RM_22, RM_23, RM_24, RM_25, RM_26, RM_27, RM_28, RM_29
62C8: 10 C7 DE 94 14 4B 5E 83 96 63 16 5B E3 C3 9E BB
62D8: C0 13 BA DB 16 D3 B9 B5 6C 03 EE F3 8C 43 48 BF
62E8: 85 00

; YOU_ARE_ON_THE_BRINK_OF_A_LARGE_PIT.__YOU_COULD_CLIMB_DOWN,_BUT_
; YOU_WOULD_NOT_BE_ABLE_TO_CLIMB_BACK_UP.__THE_MAZE_CONTINUES_ON__
; THIS_LEVEL.
PS_19: ; RM_34_BRINK_OF_LARGE_PIT
62EA: 2E C7 DE 94 14 51 5E 96 96 DB 72 73 4F 4B 99 C3
62FA: 9E 4E 45 31 49 52 5E 97 7B 5B 13 1B A1 47 55 B3
630A: 8B C3 54 A3 91 89 5B F3 9B F6 4F 51 18 59 C2 2E
631A: A1 10 58 F3 A0 5B 4D B6 46 56 5E C5 9C 8F 8C 84
632A: 4B DD 46 B2 17 3B F4 5F BE 63 16 5B E3 40 55 90
633A: BE 35 C4 C0 16 56 13 95 73 3F 16 6E CA 2E 00

; 36	 YOU ARE IN A DIRTY BROKEN PASSAGE. TO THE EAST IS A CRAWL.
; 36	 TO THE WEST IS A LARGE PASSAGE. ABOVE YOU IS A HOLE TO
; 36	 ANOTHER PASSAGE.
; woods36
;
; YOU_ARE_IN_A_DIRTY_BROKEN_PASSAGE.__TO_THE_EAST_IS_A_CRAWL.__TO_
; THE_WEST_IS_A_LARGE_PASSAGE.__ABOVE_YOU_IS_A_HOLE_TO_ANOTHER____
; PASSAGE.
PS_1A: ; RM_36_DIRTY_BROKEN_PASSAGE
6349: 2D C7 DE 94 14 4B 5E 83 96 03 15 D3 B3 BC 14 97
6359: 9F 92 96 65 49 77 47 3B F4 6B BF 5F BE 23 15 F3
6369: B9 4B 7B 45 45 D9 B0 9B 8F 89 17 82 17 59 5E 66
6379: 62 D5 15 7B 14 54 8B 9B 6C 55 A4 09 B7 DB 63 84
6389: 14 4F A1 51 18 4B C2 C3 B5 A9 15 DB 8B 6B BF 99
6399: 48 5F BE 7B AF 52 13 65 49 77 47 2E 00

; 37	 YOU ARE ON THE BRINK OF A SMALL CLEAN CLIMBABLE PIT.
; 37	 A CRAWL LEADS WEST.
;
; YOU_ARE_ON_THE_BRINK_OF_A_SMALL_CLEAN_CLIMBABLE_PIT.__A_CRAWL___
; LEADS_WEST.
PS_1B: ; RM_37_BRINK_OF_CLEAN_PIT
63A6: 19 C7 DE 94 14 51 5E 96 96 DB 72 73 4F 4B 99 C3
63B6: 9E 55 45 8E 91 05 8A E3 8B 85 96 8F 8C C4 4C DB
63C6: 8B 96 A5 3B F4 45 45 D9 B0 FB 89 3F 16 0D 47 F7
63D6: 17 17 BA 00

; 38	 YOU ARE IN THE BOTTOM OF A SMALL PIT WITH A LITTLE
; 38	 STREAM, WHICH ENTERS AND EXITS THROUGH TINY SLITS.
;
; YOU_ARE_IN_THE_BOTTOM_OF_A_SMALL_PIT_WITH_A_LITTLE_STREAM,_WHICH
; ENTERS_AND_EXITS_THROUGH_TINY_SLITS.
PS_1C: ; RM_38_PIT_LITTLE_STREAM
63DA: 21 C7 DE 94 14 4B 5E 96 96 DB 72 06 4F 7F BF B8
63EA: 16 7B 14 E3 B8 F3 8C 96 A5 FB 17 53 BE 4E 45 8E
63FA: 7B DB 8B 0C BA 8F 5F 19 EE 85 73 F0 72 F4 BD C3
640A: B5 33 98 23 63 0B C0 6C BE 29 A1 16 71 A3 7A 5E
641A: 17 8D 7B 2E 00

; YOU_ARE_IN_A_THE_ROOM_OF_BES,_WHOSE_PICTURE_IS_ON_THE_WALL._____
; THERE_IS_A_BIG_HOLE_IN_THE_FLOOR.__THERE_IS_A_PASSAGE_LEADING___
; EAST.
PS_1D: ; RM_39_ROOM_OF_BES
641F: 2C C7 DE 94 14 4B 5E 83 96 82 17 54 5E 3F A0 B8
642F: 16 AF 14 33 BB 29 D1 9B B7 85 A5 74 C0 4B 5E D1
643F: B5 96 96 DB 72 0E D0 9B 8F 3B 13 82 17 2F 62 D5
644F: 15 7B 14 09 4E A9 15 DB 8B 83 7A 5F BE 56 15 44
645F: A0 3B F4 5F BE 5B B1 4B 7B 52 45 65 49 77 47 3F
646F: 16 03 47 AB 98 47 13 66 49 2E 00

; 64	 YOU ARE AT A COMPLEX JUNCTION. A LOW HANDS AND KNEES
; 64	 PASSAGE FROM THE NORTH JOINS A HIGHER CRAWL
; 64	 FROM THE EAST TO MAKE  A WALKING PASSAGE GOING WEST
; 64	 THERE IS ALSO A LARGE ROOM ABOVE. THE AIR IS DAMP HERE.
; 64	 A SIGN IN MIDAIR HERE SAYS 'CAVE UNDER CONSTRUCTION BEYOND
; 64	 THIS POINT. PROCEED AT OWN RISK.'
;
; YOU_ARE_AT_A_COMPLEX_JUNCTION.__A_LOW_HANDS_AND_KNEES_PASSAGE___
; FROM_THE_NORTH_JOINS_A_HIGHER_CRAWL_FROM_THE_EAST_TO_MAKE_A_____
; WALKING_PASSAGE_GOING_WEST.__THERE_IS_ALSO_A_LARGE_ROOM_ABOVE.__
; THE_AIR_IS_DAMP_HERE.
PS_1E: ; RM_3A_COMPLEX_JUNCTION
647A: 47 C7 DE 94 14 43 5E 03 BC E1 14 E6 93 13 63 F0
648A: 81 03 56 27 A0 43 13 49 16 CA CE 8E 48 C3 B5 33
649A: 98 0F 87 4B 62 55 A4 09 B7 3B 5E 5C 15 DB 9F 5F
64AA: BE 99 16 C2 B3 F9 15 9D 7A 7B 14 89 73 F4 72 E4
64BA: 14 FE 49 5C 15 DB 9F 5F BE 23 15 F3 B9 6B BF 8D
64CA: 91 43 5E 3B 13 59 13 45 48 91 7A DB 16 D3 B9 9B
64DA: 6C 3B 6E AB 98 B5 D0 9B C1 82 17 2F 62 D5 15 8E
64EA: 14 2B B9 4E 45 31 49 54 5E 3F A0 84 14 4F A1 3B
64FA: F4 5F BE 8B 14 8B AF C6 B5 72 48 9F 15 7F B1 00

; YOU_ARE_IN_THE_UNDERWORLD_ANTEROOM_OF_SEKER.__PASSAGES_GO_EAST,_
; WEST,_AND_UP.__HUMAN_BONES_ARE_STREWN_ABOUT_ON_THE_FLOOR._______
; HIEROGLYPHICS_ON_THE_WALL_ROUGHLY_TRANSLATE_TO_"THOSE_WHO_______
; PROCEED_EAST_MAY_NEVER_RETURN."
PS_1F: ; RM_3B_ANTEROOM_OF_SEKER
650A: 4A C7 DE 94 14 4B 5E 96 96 DB 72 8E C5 41 62 B6
651A: A0 03 58 BF 9A 01 B3 51 90 95 64 17 61 1B B5 DB
652A: 16 D3 B9 B5 6C 81 15 23 15 16 BA F7 17 16 BA 90
653A: 14 17 58 9B A8 AF 15 90 91 B9 14 75 98 94 14 55
654A: 5E EF BF 03 D2 B9 46 73 C6 03 A0 5F BE 56 15 44
655A: A0 3B F4 3B 13 4A 13 34 79 FE 9E E2 DE E5 78 C0
656A: 16 82 17 59 5E 46 48 39 17 7A C4 FB 8E EB BF 9E
657A: 9A 7F 49 89 17 7E 13 85 74 59 5E 6B 74 3B 13 3B
658A: 13 F9 A6 A7 53 07 58 66 49 63 16 50 DB CF 62 94
659A: AF 8F 62 E7 B2 22 00

; YOU_ARE_AT_THE_LAND_OF_DEAD.__PASSAGES_LEAD_OFF_IN_>ALL<________
; DIRECTIONS.
PS_20: ; RM_3C_LAND_OF_DEAD
65A1: 19 C7 DE 94 14 43 5E 16 BC DB 72 50 8B 11 58 86
65B1: 64 86 5F 3B F4 55 A4 09 B7 4B 62 E3 8B 11 58 83
65C1: 66 83 7A 8E 2D 73 8A 3B 13 3B 13 03 15 65 B1 91
65D1: BE AF 9A 00

; YOU'RE_IN_A_LARGE_ROOM_WITH_ANCIENT_DRAWINGS_ON_ALL_WALLS.______
; THE_PICTURES_DEPICT_ATUM,_A_PHARAOH_WEARING_THE_DOUBLE_CROWN.___
; A_SHALLOW_PASSAGE_PROCEEDS_DOWNWARD,_AND_A_SOMEWHAT_STEEPER_ONE_
; LEADS_UP.__A_LOW_HANDS_AND_KNEES_PASSAGE_ENTERS_FROM_THE_SOUTH.
PS_21: ; RM_3D_ANCIENT_DRAWINGS
65D5: 55 C7 DE AF 23 D0 15 7B 14 54 8B 9B 6C 01 B3 59
65E5: 90 82 7B 90 14 47 54 B3 9A EB 5B 50 D1 CB 6E 03
65F5: A0 46 48 F3 17 0D 8D 3B F4 3B 13 82 17 52 5E E6
6605: 78 2F C6 C6 B5 E3 61 F3 55 8F 49 B3 95 52 45 54
6615: 72 BA 48 F7 17 33 49 AB 98 5F BE 09 15 B6 C3 45
6625: 5E 09 B3 1B 9C 43 13 5A 17 46 48 6B A1 55 A4 09
6635: B7 52 5E F5 B2 26 60 C6 B5 80 A1 14 D0 73 5D 8E
6645: 48 7B 14 3F B9 FA 62 73 49 FF B9 DF 61 91 AF 5B
6655: 98 E3 8B 0B 5C F7 C5 43 13 49 16 CA CE 8E 48 C3
6665: B5 33 98 0F 87 4B 62 55 A4 09 B7 47 5E BF 9A 8B
6675: B3 79 68 56 90 DB 72 47 B9 77 BE 20 00

; YOU_ARE_IN_A_CHAMBER_WHOSE_WALL_CONTAINS_A_PICTURE_OF_A_MAN_____
; WEARING_THE_LUNAR_DISK_ON_HIS_HEAD.__HE_IS_THE_GOD_KHONS,_THE___
; MOON_GOD.
PS_22: ; RM_3E_MOON_GOD
6682: 2D C7 DE 94 14 4B 5E 83 96 DA 14 64 48 23 62 29
6692: D1 9B B7 0E D0 05 8A 1E A0 D0 47 C3 B5 E3 16 0F
66A2: 56 5B B1 C3 9E 4F 45 83 48 3B 13 F7 17 33 49 AB
66B2: 98 5F BE 4F 16 D4 97 03 15 8B B8 03 A0 95 73 9F
66C2: 15 17 47 4A 13 4B 5E D6 B5 DB 72 36 6E 1A 16 1D
66D2: A0 16 EE DB 72 4F 13 40 A0 81 15 44 2E 00

; YOU_ARE_IN_A_LONG_SLOPING_CORRIDOR_WITH_RAGGED_WALLS._
PS_23: ; RM_3F_RAGGED_WALLS
66E0: 12 C7 DE 94 14 4B 5E 83 96 49 16 AB 98 C9 B8 90
66F0: A5 C5 6A BC A0 09 79 99 AF 82 7B 2B 17 F7 6C 19
6700: 58 46 48 5B BB 20 00

; YOU_ARE_IN_A_CUL-DE-SAC_ABOUT_EIGHT_FEET_ACROSS.
PS_24: ; RM_40_CUL_DE_SAC
6707: 10 C7 DE 94 14 4B 5E 83 96 E7 14 56 8F A5 63 CB
6717: 46 B9 46 73 C6 C9 60 33 75 67 66 03 BC B9 55 EF
6727: B9 00

; 65	 YOU ARE IN BEDQUILT, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE.
; 65	 TO EXPLORE AT RANDOM SELECT NORTH, SOUTH, UP, OR DOWN.
;
; YOU_ARE_IN_THE_CHAMBER_OF_HORUS,_A_LONG_EAST/WEST_PASSAGE_WITH__
; HOLES_EVERYWHERE.__TO_EXPLORE_AT_RANDOM,_SELECT_NORTH,_SOUTH,___
; UP,_OR_DOWN.
PS_25: ; RM_41_CHAMBER_OF_HORUS
6729: 2E C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91
6739: AF 8A 64 BF A0 33 BB 4E 45 11 A0 23 15 F8 B9 B5
6749: D0 12 BC 65 49 77 47 FB 17 53 BE A9 15 F5 8B 38
6759: 15 43 62 1F D1 7F B1 56 13 C7 9C A6 D8 AF A0 96
6769: 14 2B 17 49 98 B3 95 AE B7 E6 5F 99 16 C2 B3 15
6779: EE 36 A1 73 76 57 13 73 A8 A3 A0 89 5B 4E 2E 00

; 68	 YOU ARE IN A LARGE LOW CIRCULAR CHAMBER WHOSE FLOOR IS AN
; 68	 IMMENSE SLAB FALLEN FROM THE CEILING(SLAB ROOM). EAST AND
; 68	 WEST THERE ONCE WERE LARGE PASSAGES, BUT THEY ARE NOW FILLED
; 68	 WITH BOULDERS. LOW SMALL PASSAGES GO NORTH AND SOUTH, AND THE
; 68	 SOUTH ONE QUICKLY BENDS WEST AROUND THE BOULDERS.
;
; YOU_ARE_IN_A_LARGE_LOW_CIRCULAR_CHAMBER_WHOSE_FLOOR_IS_AN_______
; IMMENSE_SLAB_FALLEN_FROM_THE_CEILING.__EAST_AND_WEST_THERE_ONCE_
; WHERE_LARGE_PASSAGES,_BUT_THEY_ARE_NOW_FILLED_WITH_SAND.________
; LOW_SMALL_PASSAGES_GO_NORTH_AND_SOUTH.
PS_26: ; RM_42_FALLEN_SLAB
6789: 4C C7 DE 94 14 4B 5E 83 96 3B 16 B7 B1 49 16 C5
6799: CE 2D 7B 3B C5 85 AF 4F 72 74 4D FA 17 D7 A0 56
67A9: 15 44 A0 D5 15 90 14 3B 13 3B 13 CF 15 30 92 9B
67B9: B7 BB B8 88 4B 46 48 83 61 79 68 56 90 DB 72 AB
67C9: 53 90 8C 5B 70 23 15 F3 B9 8E 48 F7 17 F3 B9 5F
67D9: BE 5B B1 0D A0 59 5E F4 72 4E 5E 31 49 52 5E 65
67E9: 49 77 47 33 BB F6 4F 82 17 3B 63 2F 49 99 16 C8
67F9: CE 46 7A F3 5F 56 D1 15 71 8E 48 3B F4 3B 13 3B
6809: 13 89 8D 5F 17 46 48 DB 16 D3 B9 B5 6C 81 15 99
6819: 16 C2 B3 90 14 15 58 36 A1 48 2E 00

; YOU_ARE_IN_THE_PRIEST'S_BEDROOM.__THE_WALLS_ARE_COVERED_WITH____
; CURTAINS,_THE_FLOOR_WITH_A_THICK_PILE_CARPET.__MOSS_COVERS_THE__
; CEILING.
PS_27: ; RM_48_PRIESTS_BEDROOM
6825: 2D C7 DE 94 14 4B 5E 96 96 DB 72 F3 A6 66 62 CB
6835: 23 66 4D 01 B3 DB 95 82 17 59 5E 46 48 C3 B5 5B
6845: B1 48 55 2F 62 19 58 82 7B 3B 13 E7 14 BB B3 9D
6855: 7A 16 EE DB 72 89 67 A3 A0 56 D1 03 71 82 17 DD
6865: 78 E3 16 DB 8B 14 53 F6 A4 3B F4 C5 93 C5 B5 4F
6875: A1 8B B3 5F BE 45 13 CE 60 91 7A 2E 00

; THIS_IS_THE_CHAMBER_OF_THE_HIGH_PRIEST.___ANCIENT_DRAWINGS_COVER
; THE_WALLS.__AN_EXTREMELY_TIGHT_TUNNEL_LEADS_WEST.__IT_LOOKS_LIKE
; A_TIGHT_SQUEEZE.__ANOTHER_PASSAGE_LEADS_SE.
PS_28: ; RM_49_HIGH_PRIEST
6882: 39 63 BE CB B5 D6 B5 DB 72 1B 54 AF 91 91 AF 96
6892: 64 DB 72 89 73 12 71 07 B2 17 BA 3B 13 8D 48 30
68A2: 79 06 BC D9 B0 91 7A C5 B5 4F A1 C2 B3 59 5E 46
68B2: 48 5B BB 90 14 3A 15 EF BF 2E 92 56 DB 7A 79 16
68C2: BC 98 C5 33 61 E3 8B 0B 5C B5 D0 9B C1 D6 15 49
68D2: 16 A5 9F 43 16 A3 85 83 17 2E 6D 63 17 27 C4 7F
68E2: E3 43 13 06 9A F4 72 DB 16 D3 B9 9B 6C E3 8B 0B
68F2: 5C BF B7 00

; YOU_ARE_IN_THE_HIGH_PRIEST'S_TREASURE_ROOM_LIT_BY_AN_EERIE_GREEN
; LIGHT.__A_NARROW_TUNNEL_EXITS_TO_THE_EAST.
PS_29: ; RM_4C_EERIE_GREEN_LIGHT
68F6: 23 C7 DE 94 14 4B 5E 96 96 DB 72 89 73 12 71 07
6906: B2 F5 B9 D6 B5 63 B1 34 BA 54 5E 3F A0 43 16 04
6916: BC 43 DB 87 96 33 62 49 5E 67 B1 83 99 2E 6D 3B
6926: F4 50 45 3C 49 6B A1 70 C0 6E 98 3A 15 8D 7B 89
6936: 17 82 17 47 5E 66 49 2E 00

; 67	 YOU ARE IN THE TWOPIT ROOM. THE FLOOR
; 67	 HERE IS LITTERED WITH THIN ROCK SLABS, WHICH MAKE IT
; 67	 EASY TO DESCEND THE PITS. THERE IS A PATH HERE BYPASSING
; 67	 THE PITS TO CONNECT PASSAGES FROM EAST AND WEST.THERE
; 67	 ARE HOLES ALL OVER, BUT THE ONLY BIG ONE IS ON THE WALL
; 67	 DIRECTLY OVER THE EAST PIT WHERE YOU CAN'T GET TO IT.
;
; YOU_ARE_AT_THE_EAST_END_OF_THE_TWOPIT_ROOM.__THE_FLOOR_HERE_IS__
; LITTERED_WITH_THIN_ROCK_SLABS,_WHICH_MAKE_IT_EASY_TO_DESCEND_THE
; PITS.__THERE_IS_A_PATH_HERE_BYPASSING_THE_PITS_TO_CONNECT_______
; PASSAGES_EAST_AND_WEST.__THERE_ARE_HOLES_ALL_OVER,_BUT_THE_ONLY_
; BIG_ONE_IS_ON_THE_WALL_DIRECTLY_OVER_THE_WEST_PIT_WHERE_YOU_____
; CAN'T_GET_TO_IT.
PS_2A: ; RM_4E_WEAST_END_TWOPIT
693F: 70 C7 DE 94 14 43 5E 16 BC DB 72 95 5F 07 BC 33
694F: 98 C3 9E 5F BE 91 17 63 A0 14 BC 3F A0 3B F4 5F
695F: BE 56 15 44 A0 9F 15 5B B1 4B 7B 43 16 3F C0 66
696F: B1 FB 17 53 BE 63 BE 94 96 5D 9E 5E 17 BD 46 19
697F: EE 85 73 0F 71 17 48 D6 15 23 15 BB BA 6B BF F5
698F: 59 B0 53 16 58 F2 72 8D 7B 3B F4 5F BE 5B B1 4B
699F: 7B 52 45 82 49 9F 15 5B B1 92 50 65 49 91 7A 82
69AF: 17 52 5E 8D 7B 89 17 E1 14 CF 99 F3 55 3B 13 3B
69BF: 13 55 A4 09 B7 4B 62 95 5F 03 BC 33 98 B5 D0 9B
69CF: C1 82 17 2F 62 94 14 4A 5E BF 9F C3 B5 F3 8C 4F
69DF: A1 F3 B4 F6 4F 82 17 51 5E 93 99 B3 14 D1 6A 5B
69EF: 98 4B 7B 03 A0 5F BE F3 17 F3 8C 94 5A E6 5F FB
69FF: 8E 4F A1 96 AF DB 72 B5 D0 12 BC 73 7B 1F D1 5B
6A0F: B1 C7 DE 3B 13 45 13 85 48 09 BC 73 62 6B BF 97
6A1F: 7B 00

; woods24 YOU ARE AT THE BOTTOM OF THE EASTERN PIT IN THE TWOPIT ROOM.  THERE IS
; woods24 A SMALL POOL OF OIL IN ONE CORNER OF THE PIT.
;
; YOU_ARE_AT_THE_BOTTOM_OF_THE_EASTERN_PIT_IN_THE_TWOPIT_ROOM.
PS_2B: ; RM_4F_BOTTOM_EASTERN_PIT
6A21: 14 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8
6A31: 16 82 17 47 5E 66 49 38 62 E3 16 0B BC 96 96 DB
6A41: 72 C1 C0 96 A5 39 17 FF 9F 00

; woods23    YOU ARE AT THE WEST END OF THE TWOPIT ROOM.  THERE IS A LARGE HOLE IN
; woods23    THE WALL ABOVE THE PIT AT THIS END OF THE ROOM.
;
; YOU_ARE_AT_THE_WEST_END_OF_THE_TWOPIT_ROOM.__THERE_IS_A_LARGE___
; HOLE_IN_THE_WALL_ABOVE_THE_PIT_AT_THIS_END_OF_THE_ROOM.
PS_2C: ; RM_50_WEST_END_TWOPIT
6A4B: 27 C7 DE 94 14 43 5E 16 BC DB 72 B5 D0 07 BC 33
6A5B: 98 C3 9E 5F BE 91 17 63 A0 14 BC 3F A0 3B F4 5F
6A6B: BE 5B B1 4B 7B 4E 45 31 49 3B 5E A9 15 DB 8B 83
6A7B: 7A 5F BE F3 17 F3 8C B9 46 5B CA 5F BE E3 16 03
6A8B: BC 16 BC 95 73 30 15 11 58 96 64 DB 72 01 B3 4D
6A9B: 2E 00

; 25    YOU ARE AT THE BOTTOM OF THE WESTERN PIT IN THE TWOPIT ROOM.  THERE IS
; 25    A LARGE HOLE IN THE WALL ABOUT 25 FEET ABOVE YOU.
; woods25
;
; YOU_ARE_AT_THE_BOTTOM_OF_THE_WEST_PIT_IN_THE_TWOPIT_ROOM.__THERE
; IS_A_LARGE_HOLE_IN_THE_WALL_ABOUT_TWENTY_FIVE_FEET_ABOVE_YOU.
PS_2D: ; RM_51_BOTTOM_WEST_PIT
6A9D: 29 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8
6AAD: 16 82 17 59 5E 66 62 E3 16 0B BC 96 96 DB 72 C1
6ABD: C0 96 A5 39 17 FF 9F 56 13 F4 72 D5 60 7B 14 54
6ACD: 8B 9B 6C 7E 74 4B 5E 96 96 DB 72 0E D0 03 8A 07
6ADD: 4F 16 BC B0 D0 FB C0 18 67 48 5E 36 60 84 14 4F
6AED: A1 51 18 55 2E 00

; YOU_ARE_IN_A_LONG,_NARROW_CORRIDOR_STRETCHING_OUT_OF_SIGHT_TO___
; THE_WEST.__AT_THE_EASTERN_END_IS_A_HOLE_THROUGH_WHICH_YOU_CAN___
; SEE_A_PROFUSION_OF_LEAVES.
PS_2E: ; RM_4D_PROFUSION_OF_LEAVES
6AF3: 33 C7 DE 94 14 4B 5E 83 96 49 16 CE 98 8B 16 79
6B03: B3 C5 CE BC A0 09 79 95 AF EF BF 9A BD 91 7A C7
6B13: 16 11 BC 95 64 7A 79 16 BC BB 9C 82 17 59 5E 66
6B23: 62 3B F4 73 49 5F BE 23 15 FF B9 C3 B2 8E 61 D5
6B33: 15 7B 14 7E 74 56 5E F9 74 7A C4 FA 17 DA 78 51
6B43: 18 45 C2 83 48 55 13 1B 60 52 45 F8 B2 5B C6 03
6B53: A0 C3 9E E3 8B 75 CA 2E 00

; YOU_ARE_IN_THE_CHAMBER_OF_OSIRIS._THE_CEILING_IS_TOO_HIGH_UP_FOR
; YOUR_LAMP_TO_SHOW_IT.__PASSAGES_LEAD_EAST,_NORTH,_AND_SOUTH.
PS_2F: ; RM_47_CHAMBER_OF_OSIRIS
6B5C: 29 C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91
6B6C: AF 91 64 54 B8 6F 7B 82 17 45 5E CE 60 91 7A D5
6B7C: 15 89 17 CA 9C 7A 79 B2 17 59 15 91 B4 23 C6 4F
6B8C: 8B 16 A3 D5 9C 89 74 D6 15 3B F4 55 A4 09 B7 4B
6B9C: 62 E3 8B 07 58 66 49 10 EE BE A0 73 76 8E 48 61
6BAC: 17 82 C6 2E 00

; THE_PASSAGE_HERE_IS_BLOCKED_BY_A_FALLEN_BLOCK.
PS_30: ; RM_46_BLOCKED_FALLEN_BLOCK
6BB1: 0F 5F BE DB 16 D3 B9 9B 6C F4 72 4B 5E C4 B5 75
6BC1: 8D A6 85 C3 14 7B 14 CE 65 F0 8B B6 14 5D 9E 2E
6BD1: 00

; YOU_ARE_IN_THE_CHAMBER_OF_NEKHEBET,_A_WOMAN_WITH_THE_HEAD_OF_A__
; VULTURE,_WEARING_THE_CROWN_OF_EGYPT.__A_PASSAGE_EXITS_TO_THE____
; SOUTH.
PS_31: ; RM_44_CHAMBER_OF_NEKHEBET
6BD2: 2C C7 DE 94 14 4B 5E 96 96 DB 72 1B 54 AF 91 91
6BE2: AF 90 64 1A 61 AF 5F 73 C1 59 45 E3 9F 99 96 82
6BF2: 7B 82 17 4A 5E 86 5F B8 16 7B 14 DF 17 4F 8E 7E
6C02: B1 F7 17 33 49 AB 98 5F BE E4 14 80 A1 B8 16 29
6C12: 15 EE DE 3B F4 52 45 65 49 77 47 3A 15 8D 7B 89
6C22: 17 82 17 3B 5E 55 13 36 A1 48 2E 00

Object descriptions (packed)

; THERE_IS_A_SHINY_BRASS_LAMP_NEARBY.
PS_32:
6C2E: 0B 5F BE 5B B1 4B 7B 55 45 90 73 44 DB D5 B0 CE
6C3E: B5 72 48 8F 16 2C 49 59 2E 00

; BRASS_LANTERN
PS_33:
6C48: 04 6B 4F CB B9 50 8B F4 BD 4E 00

; THERE_IS_A_LAMP_SHINING_NEARBY.
PS_34:
6C53: 0A 5F BE 5B B1 4B 7B 4E 45 72 48 5A 17 93 7A AB
6C63: 98 63 98 03 B1 2E 00

; BRASS_LANTERN
PS_35:
6C6A: 04 6B 4F CB B9 50 8B F4 BD 4E 00

; THERE_IS_A_SMALL_STATUE_BOX_DISCARDED_NEARBY.
PS_36:
6C75: 0F 5F BE 5B B1 4B 7B 55 45 8E 91 15 8A 56 BD 1B
6C85: C4 0A 4F 03 15 53 B7 3F B1 10 58 94 5F 9F 50 00

; STATUE_BOX
PS_37:
6C95: 03 FB B9 67 C0 B9 14 58 00

; A_THREE_FOOT_SCEPTER_WITH_AN_ANKH_ON_AN_END_LIES_NEARBY.
PS_38:
6C9E: 12 56 45 EF 74 48 5E 46 A0 55 17 EE 61 23 62 56
6CAE: D1 03 71 83 96 5A 99 C0 16 90 14 30 15 0E 58 35
6CBE: 79 8F 16 2C 49 59 2E 00

; SCEPTER
PS_39:
6CC6: 02 57 B7 3F A7 52 00

; A_STATUE_OF_THE_BIRD_GOD_IS_SITTING_HERE.
PS_3A:
6CCD: 0D 55 45 56 BD 1B C4 C3 9E 5F BE B3 14 33 B1 36
6CDD: 6E D5 15 5B 17 43 C0 AB 98 F4 72 45 2E 00

; THERE_IS_A_BIRD_STATUE_IN_THE_BOX.
PS_3B:
6CEB: 0B 5F BE 5B B1 4B 7B 44 45 2E 7B 66 17 8F 49 4B
6CFB: 5E 96 96 DB 72 0A 4F 2E 00

; BIRD_STATUE_IN_BOX
PS_3C:
6D04: 06 14 4E 15 58 56 BD 1B C4 83 7A 0A 4F 00

; A_SMALL_VELVET_PILLOW_LIES_ON_THE_FLOOR.
PS_3D:
6D12: 0D 55 45 8E 91 18 8A 50 61 73 62 8E A5 89 8D 43
6D22: 16 4B 62 03 A0 5F BE 56 15 44 A0 2E 00

; VELVET_PILLOW
PS_3E:
6D2F: 04 6E CA 76 CA E3 16 09 8D 57 00

; A_HUGE_GREEN_FIERCE_SERPENT_BARS_THE_WAY!
PS_3F:
6D3A: 0D 4A 45 77 C4 84 15 30 60 53 15 2D 62 55 5E 3A
6D4A: 62 9E 61 AB 14 8B B3 5F BE F3 17 59 21 00

; A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT.
PS_40:
6D58: 0E 55 45 80 BF 44 5E 06 B2 9B 6C 09 9A 62 17 9D
6D68: 48 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 54 2E 00

; THERE_IS_A_SARCOPHAGUS_HERE_WITH_IT'S_COVER_TIGHTLY_CLOSED.
PS_41:
6D78: 13 5F BE 5B B1 4B 7B 55 45 2D 49 62 A0 87 47 CA
6D88: B5 2F 62 FB 17 53 BE 75 7B C5 B5 4F A1 96 AF 7A
6D98: 79 13 BF DE 14 D7 A0 44 2E 00

; SARCOPHAGUS_>GROAN<
PS_42:
6DA2: 06 14 B7 42 55 49 72 4B C6 84 2E 10 9E 3C 00

; THERE_ARE_A_FEW_RECENT_ISSUES_OF_"EGYPTIAN_WEEKLY"_MAGAZINE_HERE
PS_43:
6DB1: 15 5F BE 5B B1 2F 49 7B 14 79 66 2F 17 B0 53 0B
6DC1: BC E7 B9 4B 62 C3 9E 69 1B EE DE 90 78 F7 17 1E
6DD1: 61 63 DB 89 91 73 4A 5B 98 F4 72 45 00

; "EGYPTIAN_WEEKLY"
PS_44:
6DDE: 05 69 1B EE DE 90 78 F7 17 1E 61 59 22 00

; THERE_IS_FOOD_HERE.
PS_45:
6DEC: 06 5F BE 5B B1 4B 7B 01 68 0A 58 2F 62 2E 00

; TASTY_FOOD
PS_46:
6DFB: 03 55 BD FB C0 01 68 44 00

; THERE_IS_A_BOTTLE_HERE.
PS_47:
6E04: 07 5F BE 5B B1 4B 7B 44 45 0E A1 DB 8B F4 72 45
6E14: 2E 00

; SMALL_BOTTLE
PS_48:
6E16: 04 E3 B8 F3 8C 06 4F FF BE 00

; THERE_IS_WATER_IN_THE_BOTTLE.
PS_49:
6E20: 09 5F BE 5B B1 4B 7B 16 D0 23 62 83 7A 5F BE B9
6E30: 14 46 C0 45 2E 00

; WATER_IN_THE_BOTTLE
PS_4A:
6E36: 06 16 D0 23 62 83 7A 5F BE B9 14 46 C0 45 00

; THERE_IS_A_TINY_PLANT_IN_THE_PIT,_MURMURING_"WATER,_WATER,_..."
PS_4B:
6E45: 15 5F BE 5B B1 4B 7B 56 45 A3 7A E6 16 9E 48 D0
6E55: 15 82 17 52 5E 96 7B 77 16 B7 B2 10 B2 BC 6A 16
6E65: D0 46 62 F3 17 F4 BD 1F EE DC F9 00

; THERE_IS_A_TWELVE_FOOT_BEAN_STALK_STRETCHING_UP_OUT_OF_THE_PIT,_
; BELLOWING_"WATER..._WATER..."
PS_4C:
6E71: 1F 5F BE 5B B1 4B 7B 56 45 AE D0 5B CA 01 68 04
6E81: BC 90 5F 66 17 45 48 66 17 76 B1 23 54 AB 98 D3
6E91: C5 36 A1 B8 16 82 17 52 5E 96 7B AF 14 09 8D 50
6EA1: D1 BC 6A 16 D0 47 62 DB F9 16 D0 47 62 DC F9 00

; THERE_IS_A_GIGANTIC_BEAN_STALK_STRETCHING_ALL_THE_WAY_UP_TO_THE_
; HOLE.
PS_4D:
6EB1: 17 5F BE 5B B1 4B 7B 49 45 73 79 C3 9A C4 51 90
6EC1: 5F 66 17 45 48 66 17 76 B1 23 54 AB 98 46 48 82
6ED1: 17 59 5E 3B 4A D3 C5 6B BF 5F BE A9 15 FF 8B 00

; THERE_IS_A_MASSIVE_VENDING_MACHINE_HERE.__THE_INSTRUCTIONS_ON_IT
; READ-_"DROP_COINS_HERE_TO_RECIEVE_FRESH_BATTERIES".
PS_4E:
6EE1: 26 5F BE 5B B1 4B 7B 4F 45 65 49 CF 7B CF 17 43
6EF1: 98 AB 98 85 91 90 73 4A 5E 2F 62 3B F4 5F BE D0
6F01: 15 0C BA E6 C3 C0 7A D1 B5 8B 96 EF BF 15 47 6E
6F11: 13 02 B3 E1 14 9D 7A 9F 15 5B B1 6B BF 65 B1 38
6F21: 79 48 5E 75 B1 04 71 8E 49 33 62 4C 62 2E 00

; THERE_ARE_FRESH_BATTERIES_HERE.
PS_4F:
6F30: 0A 5F BE 5B B1 2F 49 5C 15 5A 62 AB 14 3F C0 07
6F40: B2 CA B5 2F 62 2E 00

; BATTERIES
PS_50:
6F47: 03 D6 4C F4 BD 35 79 00

; SOME_WORN-OUT_BATTERIES_HAVE_BEEN_DISCARDED_NEARBY.
PS_51:
6F4F: 11 3F B9 59 5E B8 A0 47 EB 04 BC 8E 49 33 62 4B
6F5F: 62 58 72 44 5E 30 60 03 15 53 B7 3F B1 10 58 94
6F6F: 5F 9F 50 00

; BATTERIES
PS_52:
6F73: 03 D6 4C F4 BD 35 79 00

; THERE_IS_A_LARGE_SPARKLING_NUGGET_OF_GOLD_HERE!
PS_53:
6F7B: 0F 5F BE 5B B1 4B 7B 4E 45 31 49 55 5E 54 A4 C3
6F8B: 86 AB 98 E9 9A B6 6C B8 16 81 15 B3 8B F4 72 45
6F9B: 21 00

; LARGE_GOLD_NUGGET
PS_54:
6F9D: 05 54 8B 9B 6C 3E 6E 10 58 79 C4 45 54 00

; THERE_ARE_DIAMONDS_HERE!
PS_55:
6FAB: 08 5F BE 5B B1 2F 49 03 15 71 48 4D 98 9F 15 59
6FBB: B1 00

; SEVERAL_DIAMONDS
PS_56:
6FBD: 05 B8 B7 2B 62 06 8A 8F 78 0E A0 53 00

; THERE_ARE_BARS_OF_SILVER_HERE!
PS_57:
6FCA: 0A 5F BE 5B B1 2F 49 AB 14 8B B3 C3 9E 4E B8 74
6FDA: CA 9F 15 59 B1 00

; SILVER_BARS
PS_58:
6FE0: 03 4E B8 74 CA AB 14 52 53 00

; THERE_IS_PRECIOUS_JEWELRY_HERE!
PS_59:
6FEA: 0A 5F BE 5B B1 4B 7B EF A6 51 54 4B C6 79 7F 4C
6FFA: 61 4A DB 2F 62 21 00

; PRECIOUS_JEWELRY
PS_5A:
7001: 05 EF A6 51 54 4B C6 79 7F 4C 61 59 00

; THERE_ARE_MANY_COINS_HERE!
PS_5B:
700E: 08 5F BE 5B B1 2F 49 63 16 7B 9B 3B 55 8B 9A F4
701E: 72 45 21 00

; RARE_COINS
PS_5C:
7022: 03 D4 B0 45 5E 50 9F 53 00

; THE_PHARAOH'S_TREASURE_CHEST_IS_HERE!
PS_5D:
702B: 0C 5F BE E2 16 2B 49 15 9F D6 B5 63 B1 34 BA 45
703B: 5E F5 72 0B BC CA B5 2F 62 21 00

; TREASURE_CHEST
PS_5E:
7046: 04 EF BF 67 49 5B B1 1F 54 53 54 00

; THERE_IS_A_LARGE_NEST_HERE,_FULL_OF_GOLDEN_EGGS!
PS_5F:
7052: 10 5F BE 5B B1 4B 7B 4E 45 31 49 50 5E 66 62 9F
7062: 15 7E B1 5F 15 F3 8C C3 9E 3E 6E F0 59 29 15 C9
7072: 6E 00

; GOLDEN_EGGS
PS_60:
7074: 03 3E 6E F0 59 29 15 47 53 00

; THERE_IS_A_JEWEL-ENCRUSTED_KEY_HERE!
PS_61:
707E: 0C 5F BE 5B B1 4B 7B 4C 45 F7 62 57 8F 24 98 66
708E: C6 F3 5F BB 85 9F 15 59 B1 00

; JEWELED_KEY
PS_62:
7098: 03 79 7F 3F 61 0D 58 45 59 00

; THERE_IS_A_DELICATE,_PRECIOUS,_VASE_HERE!
PS_63:
70A2: 0D 5F BE 5B B1 4B 7B 46 45 43 61 16 53 B3 63 EF
70B2: A6 51 54 6E C6 CB 17 9B B7 F4 72 45 21 00

; VASE
PS_64:
70C0: 01 D5 C9 45 00

; THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW.
PS_65:
70C5: 12 5F BE CB 17 9B B7 4B 7B 09 9A 2F 17 03 BA CE
70D5: 98 FF 14 85 8C 7F 49 1E 8F C0 16 7B 14 6E CA 76
70E5: CA E3 16 09 8D 57 2E 00

; THE_FLOOR_IS_LITTERED_WITH_WORTHLESS_SHARDS_OF_POTTERY.
PS_66:
70ED: 12 5F BE 56 15 44 A0 D5 15 43 16 3F C0 66 B1 FB
70FD: 17 53 BE 44 D2 66 BE 65 62 5A 17 2E 49 D1 B5 92
710D: 64 0E A1 43 62 2E 00

; THERE_IS_AN_EMERALD_HERE_THE_SIZE_OF_A_PLOVER'S_EGG!
PS_67:
7114: 11 5F BE 5B B1 4B 7B 83 48 67 61 CE B0 0A 58 2F
7124: 62 82 17 55 5E 6F 7C B8 16 7B 14 09 A6 74 CA CB
7134: 23 79 60 21 00

; EGG-SIZED_EMERALD
PS_68:
7139: 05 79 60 DB EB 66 E3 2F 15 2B 62 4C 44 00

; OFF_TO_ONE_SIDE_LIES_A_GLISTENING_PEARL!
PS_69:
7147: 0D D0 9E 89 17 C0 16 55 5E FF 78 43 16 4B 62 49
7157: 45 95 8C F0 BD 91 7A DF 16 36 49 21 00

; GLISTENING_PEARL
PS_6A:
7164: 05 C3 6D FF B9 10 99 D2 6A 94 5F 4C 00

Miscalaneous messages (packed)

; 20	 YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK.
; woods20
;
; YOU_ARE_AT_THE_BOTTOM_OF_THE_PIT_WITH_A_BROKEN_NECK.
PS_6B:
7171: 11 C7 DE 94 14 43 5E 16 BC DB 72 06 4F 7F BF B8
7181: 16 82 17 52 5E 73 7B 56 D1 03 71 BC 14 97 9F 90
7191: 96 DD 5F 2E 00

; 16	 THE CRACK IS FAR TOO SMALL FOR YOU TO FOLLOW.
; woods16
;
; THE_CRACK_IS_FAR_TOO_SMALL_FOR_YOU_TO_FOLLOW.
PS_6C:
7196: 0F 5F BE E4 14 DD 46 D5 15 4B 15 96 AF 2B A0 E3
71A6: B8 F3 8C 04 68 51 18 56 C2 C8 9C C6 9F 8F A1 00

; 22	 THE DOME IS UNCLIMBABLE
; woods22
;
; THE_DOME_IS_UNCLIMBABLE.
PS_6D:
71B6: 08 5F BE 09 15 1B 92 4B 7B 8D C5 8F 8C C4 4C FF
71C6: 8B 00

; I_RESPECTFULLY_SUGGEST_YOU_GO_ACROSS_THE_BRIDGE_INSTEAD_OF______
; JUMPING.
PS_6E:
71C8: 18 54 77 62 62 E6 5F EE 68 FB 8E 29 BA B5 6C 1B
71D8: BC 1B A1 2B 6E E4 46 E5 A0 82 17 44 5E 06 B2 9B
71E8: 6C 9D 7A E3 BD 11 58 7B 64 3B 13 FF 15 E3 93 CF
71F8: 98 00

; 21	 YOU DIDN'T MAKE IT
; woods21
;
; YOU_DIDN'T_MAKE_IT.
PS_6F:
71FA: 06 C7 DE 03 15 45 5B 0F BC 17 48 D6 15 2E 00

; 31	 THERE IS NO WAY ACROSS THE FISSURE.
;
; THERE_IS_NO_WAY_ACROSS_THE_BOTTOMLESS_PIT.
PS_70:
7209: 0E 5F BE 5B B1 4B 7B EB 99 1B D0 85 14 05 B3 D6
7219: B5 DB 72 06 4F 7F BF F5 8B D2 B5 97 7B 00

; 32	 YOU CAN'T GET BY THE SNAKE
; woods32
;
; YOU_CAN'T_GET_BY_THE_SERPENT.
PS_71:
7227: 09 C7 DE D3 14 E6 96 77 15 04 BC 56 DB DB 72 B4
7237: B7 F0 A4 54 2E 00

; 40	 YOU HAVE CRAWLED THROUGH A VERY LOW WIDE PASSAGE PARALLEL
; 40	 TO AND NORTH OF THE HALL OF MISTS.
; woods40 and woods59
;
; YOU_HAVE_CRAWLED_THROUGH_A_VERY_LOW_WIDE_PASSAGE_PARALLEL_TO_AND
; NORTH_OF_THE_HALL_OF_GODS.
PS_72:
723D: 1E C7 DE 9B 15 5B CA AB 55 BF D1 16 58 F9 74 7A
724D: C4 7B 14 74 CA 4E DB 6B A1 46 D1 52 5E 65 49 77
725D: 47 DB 16 CE B0 EE 8B 89 17 90 14 59 5B C2 B3 B8
726D: 16 82 17 4A 5E 46 48 B8 16 81 15 2F 5C 00

; no crowther
; woods95   YOU DON'T FIT THROUGH A TWO-INCH SLIT!
;
; YOU_DON'T_FIT_THROUGH_TWO-INCH_SLIT!
PS_73:
727B: 0C C7 DE 09 15 E6 96 53 15 16 BC F9 74 7A C4 91
728B: 17 1B A2 1A 98 5E 17 71 7B 00

; 56	 YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND WOUND UP
; 56	 BACK IN THE MAIN PASSAGE.
; woods56
;
; YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_WOUND_UP_BACK__
; IN_THE_MAIN_PASSAGE.
PS_74:
7295: 1C C7 DE 9B 15 5B CA AB 55 BF D1 03 58 07 B3 33
72A5: 98 83 7A 3F B9 4E 5E 8E 7B DB 8B 7E 74 4B 62 8E
72B5: 48 01 18 8E C5 B2 17 AB 14 8B 54 D0 15 82 17 4F
72C5: 5E D0 47 DB 16 D3 B9 BF 6C 00

; no crowther
; woods126   YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND FOUND YOUR WAY
; woods126   BLOCKED BY A RECENT CAVE-IN.  YOU ARE NOW BACK IN THE MAIN PASSAGE.
;
; YOU_HAVE_CRAWLED_AROUND_IN_SOME_LITTLE_HOLES_AND_FOUND_YOUR_WAY_
; BLOCKED_BY_A_FALLEN_SLAB.__YOU_ARE_NOW_BACK_IN_THE_MAIN_PASSAGE.
PS_75:
72CF: 2A C7 DE 9B 15 5B CA AB 55 BF D1 03 58 07 B3 33
72DF: 98 83 7A 3F B9 4E 5E 8E 7B DB 8B 7E 74 4B 62 8E
72EF: 48 59 15 8E C5 51 18 23 C6 1B D0 B6 14 5D 9E F3
72FF: 5F 7B 50 48 45 46 48 83 61 BB B8 1B 51 51 18 43
730F: C2 5B B1 09 9A AB 14 8B 54 83 7A 5F BE 63 16 83
731F: 7A 55 A4 09 B7 45 2E 00

; YOU_CAN'T_FIT_THIS_BIG_SARCOPHAGUS_THROUGH_THAT_LITTLE_PASSAGE!
PS_76:
7327: 15 C7 DE D3 14 E6 96 53 15 16 BC 95 73 B3 14 D5
7337: 6A 2D 49 62 A0 87 47 D6 B5 F9 74 7A C4 82 17 73
7347: 49 96 8C FF BE DB 16 D3 B9 99 6C 00

; SOMETHING_YOU'RE_CARRYING_WON'T_FIT_THROUGH_THE_TUNNEL_WITH_YOU.
; YOU'D_BEST_TAKE_INVENTORY_AND_DROP_SOMETHING.
PS_77:
7353: 24 3F B9 82 62 91 7A 51 18 A4 C2 45 5E 3C 49 D0
7363: DD D9 6A 05 A0 08 BC 73 7B 6C BE 29 A1 16 71 DB
7373: 72 70 C0 6E 98 FB 17 53 BE C7 DE 51 F9 96 C2 AF
7383: 14 F3 B9 4D BD 4B 5E 0F 9B C9 9A 7B B4 8E 48 0C
7393: 15 53 A0 3F B9 82 62 91 7A 2E 00

; woods26   YOU CLAMBER UP THE PLANT AND SCURRY THROUGH THE HOLE AT THE TOP.
;
; YOU_CLAMBER_UP_THE_PLANT_AND_SCURRY_THROUGH_THE_HOLE_AT_THE_TOP.
PS_78:
739E: 15 C7 DE DE 14 64 48 23 62 D3 C5 5F BE E6 16 9E
73AE: 48 90 14 15 58 34 56 7B B4 6C BE 29 A1 16 71 DB
73BE: 72 7E 74 43 5E 16 BC DB 72 82 BF 2E 00

; YOU'VE_CLIMBED_UP_THE_PLANT_AND_OUT_OF_THE_PIT.
PS_79:
73CB: 0F C7 DE 4F 24 DE 14 64 7A F3 5F D3 C5 5F BE E6
73DB: 16 9E 48 90 14 11 58 73 C6 C3 9E 5F BE E3 16 54
73EB: 2E 00

; 9	 THERE IS NO WAY TO GO THAT DIRECTION.
;
; THERE_IS_NO_WAY_FOR_YOU_TO_GO_THAT_DIRECTION.
PS_7A:
73ED: 0F 5F BE 5B B1 4B 7B EB 99 1B D0 59 15 9B AF 1B
73FD: A1 6B BF 2B 6E 5B BE 06 BC 2F 7B 03 56 27 A0 00

; 11	 I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME
; 11	 SOMETHING IN THE GENERAL DIRECTION YOU WANT TO GO.
;
; I_DON'T_KNOW_IN_FROM_OUT_HERE.__USE_COMPASS_POINTS.
PS_7B:
740D: 11 46 77 05 A0 0D BC 09 9A D0 15 5C 15 DB 9F 36
741D: A1 9F 15 7F B1 57 13 9B B7 3F 55 55 A4 D2 B5 50
742D: 9F 2F C0 00

; 10	 I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR
; 10	 NEARBY OBJECTS.
;
; I_AM_UNSURE_HOW_YOU_ARE_FACING.__USE_COMPASS_POINTS.
PS_7C:
7431: 11 43 77 57 90 A7 9A 5B B1 89 74 51 18 43 C2 5B
7441: B1 C5 65 91 7A 3B F4 57 C6 E1 14 DB 93 CB B9 7B
7451: A6 CD 9A 2E 00

; 42	 NOTHING HAPPENS.
;
; NOTHING_HAPPENS.
PS_7D:
7456: 05 06 9A 90 73 CA 6A EA 48 9D 61 2E 00

; I_DON'T_KNOW_HOW.
PS_7E: ; (only used for SWIM)
7463: 05 46 77 05 A0 0D BC 09 9A A9 15 57 2E 00

; 12	 I DON'T KNOW HOW TO APPLY THAT WORD HERE.
;
; I_DON'T_KNOW_HOW_TO_APPLY_THAT_WORD_HERE.
PS_7F:
7471: 0D 46 77 05 A0 0D BC 09 9A A9 15 D6 CE C3 9C A6
7481: A6 56 DB 56 72 01 18 33 B1 F4 72 45 2E 00

; 39	 YOUR LAMP IS NOW ON.
;
; YOUR_LAMP_IS_NOW_ON.
PS_80:
748F: 06 C7 DE 8E AF 72 48 D5 15 99 16 D1 CE 4E 2E 00

; 38	 YOU HAVE NO SOURCE OF LIGHT.
;
; YOU_HAVE_NO_SOURCE_OF_LIGHT.
PS_81:
749F: 09 C7 DE 9B 15 5B CA EB 99 47 B9 17 B1 B8 16 43
74AF: 16 2E 6D 2E 00

; 40	 YOUR LAMP IS NOW OFF.
;
; YOUR_LAMP_IS_NOW_OFF.
PS_82:
74B4: 07 C7 DE 8E AF 72 48 D5 15 99 16 D1 CE A7 66 00

; 68	 I'M AS CONFUSED AS YOU ARE.
;
; I'M_AS_CONFUSED_AS_YOU_ARE.
PS_83:
74C4: 09 9F 77 95 14 E1 14 9F 98 A6 B7 95 14 51 18 43
74D4: C2 7F B1 00

; 59	 I CAN ONLY TELL YOU WHAT YOU SEE AS YOU MOVE ABOUT
; 59	 AND MANIPULATE THINGS. I CANNOT TELL YOU WHERE REMOTE THINGS
; 59	 ARE.
;
; I_CAN_ONLY_TELL_YOU_WHAT_YOU_SEE_AS_YOU_MOVE_ABOUT_AND__________
; MANIPULATE_THINGS.__I_CAN_NOT_TELL_YOU_WHERE_REMOTE_THINGS_ARE.
PS_84:
74D8: 2A 45 77 83 48 16 A0 56 DB 46 61 51 18 59 C2 56
74E8: 72 51 18 55 C2 1B 60 4B 49 C7 DE 71 16 5B CA B9
74F8: 46 73 C6 8E 48 3B 13 3B 13 3B 13 63 16 12 99 3B
7508: C5 DB BD 63 BE C5 98 3B F4 45 77 83 48 06 9A 7F
7518: 17 F3 8C C7 DE FA 17 2F 62 2F 17 C6 93 56 5E 90
7528: 73 CB 6E 2F 49 2E 00

; 54	 OK
;
; OK_
PS_85:
752F: 01 8B 9F 00

; SORRY,_BUT_I_NO_LONGER_SEEM_TO_REMEMBER_HOW_IT_WAS_YOU_GOT_HERE.
PS_86:
7533: 15 44 B9 9E B4 BF 14 0B BC 99 16 49 16 B7 98 95
7543: AF 2F 60 89 17 2F 17 2F 92 74 4D A9 15 CB CE 19
7553: BC 4B 49 C7 DE 81 15 0A BC 2F 62 2E 00

; 24	 YOU ARE ALREADY CARRYING IT!
;
; YOU_ARE_ALREADY_CARRYING_IT.
PS_87:
7560: 09 C7 DE 94 14 43 5E EF 8D 13 47 D3 14 83 B3 91
7570: 7A D6 15 2E 00

; YOU_CAN'T_CARRY_ANYTHING_MORE.__YOU'LL_HAVE_TO_DROP_SOMETHING___
; FIRST.
PS_88:
7575: 17 C7 DE D3 14 E6 96 D3 14 83 B3 90 14 82 DF 91
7585: 7A 71 16 7F B1 5B 13 1D A1 F3 8C 58 72 56 5E C6
7595: 9C 02 B3 61 17 36 92 90 73 BB 6A 53 15 A6 B3 2E
75A5: 00

; YOU'RE_NOT_CARRYING_ANYTHING.
PS_89:
75A6: 09 C7 DE AF 23 99 16 05 BC 3C 49 D0 DD C3 6A 96
75B6: 9B 90 73 47 2E 00

; YOU_ARE_CURRENTLY_HOLDING_THE_FOLLOWING:
PS_8A:
75BC: 0D C7 DE 94 14 45 5E 3C C6 9E 61 FB 8E 7E 74 90
75CC: 5A D6 6A DB 72 FE 67 89 8D 91 7A 3A 00

; DON'T_BE_RIDICULOUS!
PS_8B:
75D9: 06 80 5B F3 23 5B 4D 06 B2 E7 78 87 8D 53 21 00

; 77	 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET.
; YOUR_BOTTLE_IS_EMPTY_AND_THE_GROUND_IS_WET.
PS_8C:
75E9: 0E C7 DE 84 AF 0E A1 DB 8B 4B 7B 72 61 FB C0 8E
75F9: 48 82 17 49 5E 07 B3 33 98 4B 7B B6 D0 2E 00

; 78	 YOU CAN'T POUR THAT.
;
; YOU_CAN'T_POUR_THAT.
PS_8D:
7608: 06 C7 DE D3 14 E6 96 E9 16 23 C6 5B BE 54 2E 00

; 75	 RUBBING THE ELECTRIC LAMP IS NOT PARTICULARLY REWARDING.
; 75	 ANYWAY, NOTHING EXCITING HAPPENS.
;
; RUBBING_THE_ELECTRIC_LAMP_IS_NOT_PARTICULARLY_REWARDING.________
; ANYWAY,_NOTHING_EXCITING_HAPPENS.
PS_8E:
7618: 20 E4 B3 10 4E D6 6A DB 72 3F 61 0C 56 CB 78 4F
7628: 8B 0B A3 D0 B5 F3 A0 54 A4 85 BE 3B C5 93 B2 2F
7638: 17 14 D0 90 5A 5B 70 3B 13 3B 13 90 14 F3 DF B3
7648: E0 06 9A 90 73 C7 6A 9B D6 90 BE CA 6A EA 48 9D
7658: 61 2E 00

; 76	 PECULIAR.  NOTHING UNEXPECTED HAPPENS.
;
; PECULIAR.__NOTHING_UNEXPECTED_HAPPENS.
PS_8F:
765B: 0C E5 A4 43 C5 47 49 50 13 02 A1 91 7A B0 17 2A
766B: 63 E6 5F F3 5F 52 72 F0 A4 53 2E 00

; THERE_IS_NOTHING_HERE_WITH_WHICH_TO_FILL_THE_BOTTLE.
PS_90:
7677: 11 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 FB
7687: 17 53 BE 23 D1 13 54 6B BF 0E 67 16 8A DB 72 06
7697: 4F FF BE 2E 00

; THE_BOTTLE_IS_NOW_EMPTY.
PS_91:
769C: 08 5F BE B9 14 46 C0 4B 5E D0 B5 6B A1 72 61 1F
76AC: C1 00

; YOU_CAN'T_FILL_THAT.
PS_92:
76AE: 06 C7 DE D3 14 E6 96 53 15 F3 8C 5B BE 54 2E 00

; A_GLISTENING_PEARL_FALLS_OUT_OF_THE_SARCOPHAGUS_AND_ROLLS_AWAY._
; THE_SARCOPHAGUS_SNAPS_SHUT_AGAIN.
PS_93:
76BE: 20 49 45 95 8C F0 BD 91 7A DF 16 36 49 4B 15 0D
76CE: 8D C7 16 11 BC 96 64 DB 72 14 B7 42 55 49 72 4B
76DE: C6 8E 48 39 17 0D 8D 99 14 5F 4A 82 17 55 5E 2D
76EE: 49 62 A0 87 47 D5 B5 D2 97 D5 B5 76 75 89 14 D0
76FE: 47 2E 00

; I'D_ADVISE_YOU_TO_PUT_DOWN_THE_SARCOPHAGUS_BEFORE_OPENING_IT!!
PS_94:
7701: 14 96 77 86 14 15 CB 5B 5E 1B A1 6B BF 76 A7 09
7711: 15 03 D2 5F BE 53 17 21 B1 5B A5 35 6F AF 14 04
7721: 68 51 5E F0 A4 91 7A D6 15 21 21 00

; THE_SARCOPHAGUS_CREAKS_OPEN,_REVEALING_NOTHING_INSIDE.__IT______
; PROMPTLY_SNAPS_SHUT_AGAIN.
PS_95:
772D: 1E 5F BE 53 17 21 B1 5B A5 35 6F E4 14 8D 5F D1
773D: B5 F0 A4 14 EE CF 62 43 48 AB 98 06 9A 90 73 CB
774D: 6A 9B 9A FF 59 4B 13 FB BB 3B 13 EC 16 F2 9F 13
775D: BF 60 17 ED 48 5A 17 73 C6 73 47 A7 7A 00

; YOU_DON'T_HAVE_ANYTHING_STRONG_ENOUGH_TO_OPEN_THE_SARCOPHAGUS.
PS_96:
776B: 14 C7 DE 09 15 E6 96 9B 15 5B CA A3 48 63 BE AB
777B: 98 0C BA 11 A0 30 15 29 A1 16 71 D1 9C F0 A4 82
778B: 17 55 5E 2D 49 62 A0 87 47 53 2E 00

; I_DON'T_KNOW_HOW_TO_LOCK_OR_UNLOCK_SUCH_A_THING.
PS_97:
7797: 10 46 77 05 A0 0D BC 09 9A A9 15 D6 CE CE 9C 5D
77A7: 9E C4 16 B0 17 75 8D D5 83 DA C3 7B 14 63 BE CF
77B7: 98 00

; THE_BIRD_STATUE_IS_NOW_DEAD.__ITS_BODY_DISAPPEARS.
PS_98:
77B9: 10 5F BE B3 14 33 B1 FB B9 67 C0 D5 15 99 16 C6
77C9: CE 86 5F 3B F4 8D 7B B9 14 FB 5C 95 5A EA 48 94
77D9: 5F 53 2E 00

; THE_STONE_IS_VERY_STRONG_AND_IS_IMPERVIOUS_TO_ATTACK.
PS_99:
77DD: 11 5F BE 66 17 0F A0 D5 15 CF 17 7B B4 0C BA 11
77ED: A0 90 14 0B 58 CB B5 DF 93 13 B4 35 A1 89 17 96
77FD: 14 45 BD 4B 2E 00

; ATTACKING_THE_SERPENT_BOTH_DOESN'T_WORK_AND_IS_VERY_DANGEROUS.
PS_9A:
7803: 14 8E 49 DD 46 91 7A 82 17 55 5E 3A 62 9E 61 B9
7813: 14 53 BE 77 5B 05 B9 19 BC B5 A0 90 14 0B 58 D8
7823: B5 43 62 FB 14 B7 98 07 B3 53 2E 00

; 25	 YOU CAN'T BE SERIOUS!
;
; YOU_CAN'T_BE_SERIOUS!
PS_9B:
782F: 07 C7 DE D3 14 E6 96 AF 14 57 17 11 B2 49 C6 00

; IT_IS_BEYOND_YOUR_POWER_TO_DO_THAT.
PS_9C:
783F: 0B 73 7B 4B 7B 7B 4D 0E A0 51 18 23 C6 89 A6 23
784F: 62 6B BF 6B 5B 5B BE 54 2E 00

; THANK_YOU,_IT_WAS_DELICIOUS!
PS_9D:
7859: 09 5B BE 4B 99 C7 DE 0B EE 19 BC 4B 49 EE 59 DB
7869: 78 35 A1 21 00

; I_THINK_I_JUST_LOST_MY_APPETITE.
PS_9E:
786E: 0A 56 77 90 73 CB 83 FF 15 F3 B9 85 8D 0F BC 43
787E: DB 9F A6 96 BE 45 2E 00

; YOU_HAVE_TAKEN_A_DRINK_FROM_THE_STREAM.__THE_WATER_TASTES_______
; STRONGLY_OF_MINERALS,_BUT_IS_NOT_UNPLEASANT.__IT_IS_EXTREMELY___
; COLD.
PS_9F:
7886: 2C C7 DE 9B 15 5B CA 4D BD 83 61 46 45 10 B2 C8
7896: 83 FF B2 82 17 55 5E EF BF 7F 48 56 13 DB 72 16
78A6: D0 23 62 55 BD F5 BD 3B 13 3B 13 66 17 00 B3 D3
78B6: 6D B8 16 6B 16 74 98 4D 48 04 EE 73 C6 4B 7B 06
78C6: 9A B0 17 FF A5 53 49 D7 9A 4B 13 0B BC C7 B5 4C
78D6: D9 67 61 FB 8E 45 13 BE 9F 2E 00

; IT'S_NOT_HUNGRY.__BESIDES,_YOU_HAVE_NO_BIRD_SEED.
PS_A0:
78E1: 10 75 7B D0 B5 F3 A0 70 75 C3 6E 3B F4 75 4D FF
78F1: 78 33 BB C7 DE 9B 15 5B CA EB 99 14 4E 15 58 26
7901: 60 2E 00

; 23	 YOU FELL INTO A PIT AND BROKE EVERY BONE IN YOUR BODY!
;
; YOU_FELL_INTO_A_PIT_AND_BROKE_EVERY_BONE_IN_YOUR_BODY.
PS_A1:
7904: 12 C7 DE 4F 15 F3 8C 9E 7A C3 9C E3 16 03 BC 33
7914: 98 79 4F 9B 85 CF 62 7B B4 00 4F 4B 5E 9B 96 34
7924: A1 B9 14 1F 5D 20 00

; 45	 THE LITTLE BIRD IS NOW DEAD. ITS BODY DISAPPEARS.
;
; THE_SERPENT_HAS_NOW_DEVOURED_YOUR_BIRD_STATUE.
PS_A2:
792B: 0F 5F BE 57 17 1F B3 B3 9A 55 72 99 16 C6 CE D9
793B: 62 2F C6 1B 58 34 A1 B3 14 33 B1 FB B9 67 C0 2E
794B: 00

; THERE_IS_NOTHING_HERE_IT_WANTS_TO_EAT_-_EXCEPT_PERHAPS_YOU.
PS_A3:
794C: 13 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 D6
795C: 15 F3 17 CD 9A 89 17 23 15 1D BC 3A 15 B2 53 12
796C: BC 32 62 ED 48 51 18 55 2E 00

; 16	 IT IS NOW PITCH BLACK. IF YOU PROCEED YOU WILL LIKELY
; 16	 FALL INTO A PIT.
;
; IT_IS_NOW_PITCH_DARK.__IF_YOU_PROCEED,_YOU_WILL_LIKELY_FALL_INTO
; A_PIT.
PS_A4:
7976: 17 73 7B 4B 7B 09 9A E3 16 9A BD FB 14 6F B2 4B
7986: 13 9B 64 1B A1 F9 A6 A7 53 73 5D C7 DE FB 17 F3
7996: 8C 8D 8C 53 61 4B 15 F3 8C 9E 7A FB 9D 96 A5 2E
79A6: 00

; I'M_GAME.__WOULD_YOU_CARE_TO_EXPLAIN_HOW?
PS_A5:
79A7: 0D 9F 77 73 15 3F 92 59 13 2E A1 1B 58 1B A1 14
79B7: 53 56 5E C7 9C A6 D8 D0 47 A9 15 57 3F 00

; YOUR_LAMP_IS_GETTING_DIM.__YOU'D_BEST_START_WRAPPING_THIS_UP,___
; UNLESS_YOU_CAN_FIND_SOME_FRESH_BATTERIES.__I_SEEM_TO_RECALL_____
; THERE_IS_A_VENDING_MACHINE_IN_THE_MAZE.__BRING_SOME_COINS_WITH__
; YOU.
PS_A6:
79C5: 41 C7 DE 8E AF 72 48 D5 15 77 15 43 C0 AB 98 8F
79D5: 5A 3B F4 C7 DE 73 21 75 4D 15 BC 54 BD 19 BC D2
79E5: B0 90 A5 D6 6A 95 73 B2 17 FB ED B0 17 F5 8B DB
79F5: B5 1B A1 10 53 53 15 33 98 3F B9 48 5E 75 B1 04
7A05: 71 8E 49 33 62 6F 62 4B 13 57 17 5B 61 6B BF 65
7A15: B1 46 48 3B 13 56 13 F4 72 4B 5E C3 B5 CF 17 43
7A25: 98 AB 98 85 91 90 73 4B 5E 96 96 DB 72 9C 91 DB
7A35: 63 BC 14 91 7A 61 17 1B 92 3B 55 8B 9A 56 D1 FB
7A45: 70 C7 DE 2E 00

; YOUR_LAMP_HAS_RUN_OUT_OF_POWER.
PS_A7:
7A4A: 0A C7 DE 8E AF 72 48 9B 15 D4 B5 83 C5 36 A1 B8
7A5A: 16 E9 16 B4 D0 2E 00

; THE_PLANT_HAS_EXCEPTIONALLY_DEEP_ROOTS_AND_CANNOT_BE_PULLED_____
; FREE.
PS_A8:
7A61: 17 5F BE E6 16 9E 48 9B 15 C7 B5 97 D6 43 A7 0B
7A71: A0 13 8D FF 14 D3 61 01 B3 0B C0 8E 48 D3 14 D9
7A81: 99 04 BC 52 5E 46 C5 F3 5F 3B 13 5C 15 3F 60 00

; YOUR_LAMP_IS_GETTING_DIM.__I'M_TAKING_THE_LIBERTY_OF_REPLACING__
; THE_BATTERIES.
PS_A9:
7A91: 1A C7 DE 8E AF 72 48 D5 15 77 15 43 C0 AB 98 8F
7AA1: 5A 3B F4 9F 77 7B 17 50 86 D6 6A DB 72 84 8C 3E
7AB1: 62 51 DB 94 64 E6 61 DB 46 AB 98 82 17 44 5E 8E
7AC1: 49 33 62 6F 62 00

; 26	 THE BIRD WAS UNAFRAID WHEN YOU ENTERED, BUT AS YOU APPROACH
; 26	 IT BECOMES DISTURBED AND YOU CANNOT CATCH IT.
;
; AS_YOU_APPROACH_THE_STATUE,_IT_COMES_TO_LIFE_AND_FLIES_ACROSS___
; THE_CHAMBER_WHERE_IT_LANDS_AND_RETURNS_TO_STONE.
PS_AA:
7AC7: 25 4B 49 C7 DE 92 14 F9 A6 DA 46 82 17 55 5E 56
7AD7: BD 3E C4 D6 15 E1 14 35 92 89 17 43 16 5B 66 8E
7AE7: 48 56 15 35 79 85 14 05 B3 BB B5 82 17 45 5E 4F
7AF7: 72 74 4D FA 17 2F 62 D6 15 3B 16 4D 98 90 14 14
7B07: 58 8F 62 DD B2 89 17 66 17 0F A0 2E 00

; woods27	 YOU CAN CATCH THE BIRD, BUT YOU CANNOT CARRY IT.
;
; YOU_CAN_LIFT_THE_STATUE,_BUT_YOU_CANNOT_CARRY_IT.
PS_AB:
7B14: 10 C7 DE D3 14 8E 96 5E 79 82 17 55 5E 56 BD 3E
7B24: C4 BF 14 1B BC 1B A1 10 53 06 9A D3 14 83 B3 D6
7B34: 15 2E 00

; YOUR_BOTTLE_IS_ALREADY_FULL.
PS_AC:
7B37: 09 C7 DE 84 AF 0E A1 DB 8B 4B 7B 4C 48 86 5F 48
7B47: DB 46 C5 2E 00

; _____SUDDENLY,_A_MUMMY_CREEPS_UP_BEHIND_YOU!!______"I'M_THE_____
; KEEPER_OF_THE_TOMB",__HE_WAILS,_"I_TAKE_THESE_TREASURES_AND_PUT_
; THEM_IN_THE_CHEST_DEEP_IN_THE_MAZE!"__HE_GRABS_YOUR_TREASURE_AND
; VANISHES_INTO_THE_GLOOM.
PS_AD:
7B4C: 48 3B 13 55 13 FE C3 96 61 B3 E0 4F 45 6F C5 45
7B5C: DB 67 B1 0B A7 D3 C5 6A 4D 8E 7A 51 18 E9 C1 3B
7B6C: 13 3B 13 FD 1B 56 90 DB 72 3B 13 17 16 DF 61 91
7B7C: AF 96 64 DB 72 7F BF C6 4B 4A 13 59 5E CE 47 33
7B8C: BB FB 1B 4D BD 56 5E F5 72 56 5E 63 B1 34 BA 4B
7B9C: 62 8E 48 EF 16 16 BC EF 72 D0 15 82 17 45 5E F5
7BAC: 72 06 BC 32 60 D0 15 82 17 4F 5E 6F 4A E3 06 9F
7BBC: 15 84 15 BD 46 51 18 23 C6 EF BF 67 49 5B B1 8E
7BCC: 48 D0 C9 5A 7B 4B 62 9E 7A D6 9C DB 72 C9 6D FF
7BDC: 9F 00

; THE_STONE_BRIDGE_HAS_RETRACTED!
PS_AE:
7BDE: 0A 5F BE 66 17 0F A0 BC 14 01 79 4A 5E 4B 49 76
7BEE: B1 C5 B0 E6 BD 21 00

; 112	 A CRYSTAL BRIDGE NOW SPANS THE FISSURE.
;
; A_STONE_BRIDGE_NOW_SPANS_THE_BOTTOMLESS_PIT.
PS_AF:
7BF5: 0E 55 45 80 BF 44 5E 06 B2 9B 6C 09 9A 62 17 9D
7C05: 48 82 17 44 5E 0E A1 EE 9F 65 62 E3 16 54 2E 00

; THE_VASE_IS_NOW_RESTING,_DELICATELY,_ON_A_VELVET_PILLOW.
PS_B0:
7C15: 12 5F BE CB 17 9B B7 4B 7B 09 9A 2F 17 03 BA CE
7C25: 98 FF 14 85 8C 7F 49 1E 8F C0 16 7B 14 6E CA 76
7C35: CA E3 16 09 8D 57 2E 00

; THE_VASE_DROPS_WITH_A_DELICATE_CRASH.
PS_B1:
7C3D: 0C 5F BE CB 17 9B B7 F9 5B 0B A7 56 D1 03 71 FF
7C4D: 14 85 8C 7F 49 E4 14 5A 49 2E 00

; THERE_ARE_NOW_SOME_FRESH_BATTERIES_HERE.
PS_B2:
7C58: 0D 5F BE 5B B1 2F 49 99 16 D5 CE E7 9F 5C 15 5A
7C68: 62 AB 14 3F C0 07 B2 CA B5 2F 62 2E 00

; YOU_HAVE_TAKEN_THE_VASE_AND_HURLED_IT_DELICATELY_TO_THE_GROUND.
PS_B3:
7C75: 15 C7 DE 9B 15 5B CA 4D BD 83 61 5F BE CB 17 9B
7C85: B7 8E 48 AF 15 7F B2 0B 58 06 BC 43 61 16 53 53
7C95: 61 89 17 82 17 49 5E 07 B3 57 98 00

; 30	 THE LITTLE BIRD ATTACKS THE GREEN SNAKE, AND IN AN
; 30	 ASTOUNDING FLURRY DRIVES THE SNAKE AWAY.
;
; THE_BIRD_STATUE_COMES_TO_LIFE_AND_ATTACKS_THE_SERPENT_AND_IN_AN_
; ASTOUNDING_FLURRY,_DRIVES_THE_SERPENT_AWAY.__THE_BIRD_TURNS_BACK
; INTO_A_STATUE.
PS_B4:
7CA1: 2F 5F BE B3 14 33 B1 FB B9 67 C0 E1 14 35 92 89
7CB1: 17 43 16 5B 66 8E 48 96 14 45 BD CB 87 5F BE 57
7CC1: 17 1F B3 B3 9A 8E 48 D0 15 90 14 95 14 87 BF 43
7CD1: 98 AB 98 8F 67 83 B3 06 EE 18 B2 4B 62 5F BE 57
7CE1: 17 1F B3 B3 9A F3 49 DB E0 82 17 44 5E 2E 7B 8F
7CF1: 17 DD B2 AB 14 9B 54 C9 9A 7B 14 FB B9 67 C0 2E
7D01: 00

; THE_PLANT_SPURTS_INTO_FURIOUS_GROWTH_FOR_A_FEW_SECONDS.
PS_B5:
7D02: 12 5F BE E6 16 9E 48 62 17 3E C6 CB B5 C9 9A 5F
7D12: 15 11 B2 4B C6 B9 6E 02 D3 59 15 83 AF 4F 15 D5
7D22: CE E1 5F 4D 98 2E 00

; THE_PLANT_GROWS_EXPLOSIVELY,_ALMOST_FILLING_THE_BOTTOM_OF_THE___
; PIT.
PS_B6:
7D29: 16 5F BE E6 16 9E 48 84 15 85 A1 3A 15 09 A6 58
7D39: B8 53 61 03 EE 31 8D F3 B9 0E 67 90 8C D6 6A DB
7D49: 72 06 4F 7F BF B8 16 82 17 3B 5E E3 16 54 2E 00

; YOU'VE_OVER-WATERED_THE_PLANT!__IT'S_SHRIVELING_UP!
PS_B7:
7D59: 11 C7 DE 4F 24 C8 16 45 62 16 D0 2F 62 16 58 DB
7D69: 72 FB A5 B1 9A 4B 13 65 BC 5A 17 18 B2 43 61 AB
7D79: 98 D1 C5 00

; THERE_IS_NOTHING_HERE_TO_CLIMB.__USE_UP_OR_OUT_TO_LEAVE_THE_PIT.
PS_B8:
7D7D: 15 5F BE 5B B1 4B 7B 06 9A 90 73 CA 6A 2F 62 89
7D8D: 17 DE 14 64 7A 3B F4 57 C6 B2 17 C4 16 C7 16 16
7D9D: BC CE 9C 98 5F 56 5E DB 72 96 A5 2E 00

; OH_DEAR,_YOU_SEEM_TO_HAVE_GOTTEN_YOURSELF_KILLED.__I_MIGHT_BE___
; ABLE_TO_HELP_YOU_OUT,_BUT_I'VE_NEVER_REALLY_DONE_THIS_BEFORE.___
; DO_YOU_WANT_ME_TO_TRY_TO_REINCARNATE_YOU?
PS_B9:
7DAA: 38 13 9F E3 59 F3 B4 C7 DE 57 17 5B 61 6B BF 58
7DBA: 72 49 5E 0E A1 83 61 C7 DE 97 B3 03 8C 4E 86 E6
7DCA: 8B 3B F4 4F 77 7A 79 04 BC 3B 5E 84 14 DB 8B 6B
7DDA: BF EE 72 1B A3 1B A1 36 A1 04 EE 73 C6 A8 77 50
7DEA: 5E CF 62 94 AF 8E 5F FB 8E 80 5B 56 5E 95 73 AF
7DFA: 14 04 68 DB 63 46 13 DB 9C 1B A1 10 D0 0F BC 56
7E0A: 5E D6 9C 7B B4 6B BF 6B B1 13 98 CB B2 DB BD C7
7E1A: DE 3F 00

; YOU_CLUMSY_OAF,_YOU'VE_DONE_IT_AGAIN!__I_DON'T_KNOW_HOW_LONG_I__
; CAN_KEEP_THIS_UP.__DO_YOU_WANT_ME_TO_TRY_REINCARNATING_YOU______
; AGAIN?
PS_BA:
7E1D: 2C C7 DE DE 14 75 C5 51 DB 66 47 51 18 A8 C2 46
7E2D: 5E 0F A0 D6 15 89 14 D0 47 BB 06 46 77 05 A0 0D
7E3D: BC 09 9A A9 15 CE CE 11 A0 BB 15 D3 14 8D 96 32
7E4D: 60 82 17 4B 7B F7 C5 46 13 DB 9C 1B A1 10 D0 0F
7E5D: BC 56 5E D6 9C 7B B4 6B B1 13 98 CB B2 90 BE DB
7E6D: 6A 1B A1 3B 13 43 13 0B 6C 4E 3F 00

; I_SEEM_TO_BE_OUT_OF_ORANGE_SMOKE.__HOW_CAN_I_REINCARNATE_YOU____
; WITHOUT_ORANGE_SMOKE?
PS_BB:
7E79: 1C 55 77 2F 60 89 17 AF 14 C7 16 11 BC 91 64 D0
7E89: B0 9B 6C F1 B8 BF 85 4A 13 6B A1 10 53 BB 15 6B
7E99: B1 13 98 CB B2 DB BD C7 DE 3B 13 FB 17 69 BE 73
7EA9: C6 AB A0 B7 98 5F 17 97 9F 3F 00

; ALL_RIGHT.__BUT_DON'T_BLAME_ME_IF_SOMETHING_GOES_WR.............
; ______________________----__POOF_!!__----_______________________
; YOU_ARE_ENGULFED_IN_A_CLOUD_OF_ORANGE_SMOKE.__COUGHING_AND______
; GASPING,_YOU_EMERGE_FROM_THE_SMOKE.
PS_BC:
7EB4: 4B 46 48 33 17 2E 6D 3B F4 F6 4F 09 15 E6 96 B6
7EC4: 14 67 48 67 16 C8 15 61 17 36 92 90 73 C9 6A B5
7ED4: 9E 04 18 FF F9 FF F9 FF F9 FF F9 3B F4 3B 13 3B
7EE4: 13 3B 13 3B 13 3B 13 3B 13 5D 13 2D ED 52 13 38
7EF4: A0 E9 12 5D 13 2D ED 3B 13 3B 13 3B 13 3B 13 3B
7F04: 13 3B 13 3B 13 5B 13 1B A1 2F 49 30 15 2E 6F 66
7F14: 66 D0 15 7B 14 C9 54 F3 C3 C3 9E AB A0 B7 98 5F
7F24: 17 97 9F 3B F4 47 55 23 6D AB 98 8E 48 3B 13 3B
7F34: 13 15 6C 90 A5 33 70 C7 DE 2F 15 31 62 48 5E FF
7F44: B2 82 17 55 5E BD 93 45 2E 00

; OKAY,_NOW_WHERE_DID_I_PUT_MY_ORANGE_SMOKE?..._>POOF!<___________
; EVERYTHING_DISAPPEARS_IN_A_DENSE_CLOUD_OF_ORANGE_SMOKE.
PS_BD:
7F4E: 27 93 9F B3 E0 09 9A FA 17 2F 62 03 15 0B 58 EF
7F5E: 16 0F BC 51 DB D0 B0 9B 6C F1 B8 98 85 FF F9 F2
7F6E: 13 38 A0 33 07 3B 13 3B 13 3B 13 38 15 43 62 63
7F7E: BE AB 98 95 5A EA 48 94 5F CB B5 83 96 FF 14 97
7F8E: 9A DE 14 26 A1 B8 16 C4 16 91 48 55 5E BD 93 45
7F9E: 2E 00

; READY_CASSETTE
PS_BE:
7FA0: 04 63 B1 FB 5C 15 53 B6 B7 54 45 00

; CHECKSUM_ERROR
PS_BF:
7FAC: 04 1F 54 A5 54 5B C5 3C 62 4F 52 00

; OH,_NO!__I_LOST_MY_COMPASS.__I_NO_LONGER_SEEM_TO_KNOW_WHICH_WAY_
; IS_NORTH!
PS_C0:
7FB8: 18 36 9F 99 16 BB 06 4E 77 E6 A0 7B 16 E1 14 DB
7FC8: 93 EF B9 4B 13 99 16 49 16 B7 98 95 AF 2F 60 89
7FD8: 17 20 16 6B A1 23 D1 13 54 1B D0 D5 15 99 16 C2
7FE8: B3 21 00

Some bytes on the end of the tape:

39 00 39 00 39 00 39 00 39 00 39 00 39 00 39 00 39 00 39 00 47 78 00 43 FF FF