• Contact
  • Journal
  • Home
  • CoCo
  • Bedlam
  • 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 35%
      • 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
      • 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
    • 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
    • Hardware
    • HauntedHouse
      • RAMUse1
      • Code1
      • RAMUse2
      • Code2

      • Journal
    • Pyramid
      • RAMUse
      • Code

      • RAMUse1
      • Code1

      • Journal
    • RaakaTu
      • RAMUse
      • Code

      • Journal
    • Bedlam
      • RAMUse
      • Code

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

  • Tools
    • Blend
      • blend.zip

      • Journal
  • Bedlam Code
  • Start
  • Main Loop
  • Get Input Line
  • Get Key
  • Decode Buffer
  • Process Command
  • Every Turn
  • Print Character
  • Unpack Bytes
  • Data Section
  • Command Jump Table
  • Phrase List
  • Room Descriptions
  • Object Data
  • General Commands
  • Helper Commands
  • Input Word Tables
  • Disk Loader

Bedlam Code

RAM Usage

Hardware Info

Loaded from cassette at 0x600 (right after text screen memory).
Executed at 0x0600.

Start

Start:
0600: 86 0D           LDA     #$0D                ; 14 rows left ...
0602: B7 01 E3        STA     tillMORE            ; ... until MORE prompt
0605: 4F              CLRA                        ; 256 words (512 bytes on screen)
0606: 8E 04 00        LDX     #$0400              ; Start of screen
0609: CE 60 60        LDU     #$6060              ; Space-space
060C: EF 81           STU     ,X++                ; Clear ...
060E: 4A              DECA                        ; ... text ...
060F: 26 FB           BNE     $60C                ; ... screen
;
0611: 10 CE 03 FF     LDS     #$03FF              ; Stack starts just below screen
;
0615: 86 13           LDA     #$13                ; Player object ...
0617: B7 01 D2        STA     ACTIVE_OBJ_NUM      ; ... is the active object number
;
061A: 8E 05 E0        LDX     #$05E0              ; Set cursor to ...
061D: 9F 88           STX     <printCursor        ; ... bottom row of screen
;
061F: 8E 13 55        LDX     #$1355              ; Splash message ...
0622: BD 0C 44        JSR     ProcessCommand      ; ... "you feel as though"
;
0625: 86 0D           LDA     #$0D                ; Print ...
0627: BD 11 D5        JSR     PrintCharacterAutoWrap; .. CR
062A: BD 0B 6C        JSR     GetKey              ; Get a key
;
062D: 8E 13 54        LDX     #$1354              ; Init random game, place player object, ...
0630: BD 0C 44        JSR     ProcessCommand      ; ... and look
0633: 86 0D           LDA     #$0D                ; Print ...
0635: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR

Main Loop

MainLoop: 
0638: 10 CE 03 FF     LDS     #$03FF              ; Initialize stack
063C: BD 0B 0D        JSR     $0B0D               ; Get user input
063F: 86 0D           LDA     #$0D                ; 14 rows left ...
0641: B7 01 E3        STA     tillMORE            ; ... until MORE prompt

0644: 7F 01 B7        CLR     adjWord             ; Adjective word number
0647: 7F 01 BA        CLR     lsbAdj1             ; LSB of 1st adjective in buffer
064A: 7F 01 BB        CLR     lsbVerb             ; LSB of verb
064D: 7F 01 B2        CLR     tmp1B2              ; Misc
0650: 7F 01 B3        CLR     verbWord            ; Verb word number
0653: 7F 01 B9        CLR     not1B9              ; Never used again
0656: 7F 01 B8        CLR     commandTarg         ; Target object of command
0659: 7F 01 B4        CLR     perpWord            ; Preposition number
065C: 7F 01 B5        CLR     prepGiven           ; Preposition given flag (not 0 if given)
065F: 7F 01 BF        CLR     VAR_OBJ_NUMBER      ; VAR object number
0662: 7F 01 C3        CLR     FIRST_NOUN_NUM      ; 1st noun word number
0665: 7F 01 C9        CLR     SECOND_NOUN_NUM     ; 2nd noun word number

0668: C6 13           LDB     #$13                ; Player object ...
066A: F7 01 D2        STB     ACTIVE_OBJ_NUM      ; ... is active object number
066D: BD 11 7D        JSR     $117D               ; Get player object data
0670: BF 01 D3        STX     ACTIVE_OBJ_DATA     ; Active object's data
0673: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
0676: E6 84           LDB     ,X                  ; Get player location
0678: F7 01 D5        STB     CUR_ROOM            ; Current room
067B: 8E 15 A1        LDX     #$15A1              ; Room scripts
067E: BD 0A 60        JSR     FindSublist         ; Find sublist ... script for current room
0681: BF 01 D6        STX     CUR_ROOM_DATA       ; Script for current room
;
0684: 8E 01 E4        LDX     #$01E4              ; Input token list area
0687: BF 01 D8        STX     nextToken           ; Where decoder fills in
068A: 6F 84           CLR     ,X                  ; Empty token ... clear the list
068C: 8E 05 E0        LDX     #$05E0              ; Bottom row is input buffer
068F: BD 0B 83        JSR     $0B83               ; Decode input word
0692: 27 0B           BEQ     $69F                ; All words done
0694: A6 80           LDA     ,X+                 ; Next character
0696: 81 60           CMPA    #$60                ; A space?
0698: 27 F5           BEQ     $68F                ; Decode next
069A: 8C 06 00        CMPX    #$0600              ; End of input buffer?
069D: 26 F5           BNE     $694                ; No ... look for next word
069F: 8C 06 00        CMPX    #$0600              ; End of input buffer?
06A2: 26 EB           BNE     $68F                ; No ... keep looking
06A4: 6F 9F 01 D8     CLR     [nextToken]         ; Terminate token list
06A8: 8E 01 E4        LDX     #$01E4              ; Input buffer
06AB: A6 84           LDA     ,X                  ; List number of first word
06AD: 10 27 00 92     LBEQ    $0743               ; Nothing entered
06B1: 81 02           CMPA    #$02                ; First word a noun?
06B3: 26 0F           BNE     $6C4                ; No ... move on
06B5: 30 01           LEAX    1,X                 ; Point to word number
06B7: A6 84           LDA     ,X                  ; Get word number
06B9: 30 1F           LEAX    -1,X                ; Back to list number
06BB: 81 09           CMPA    #$09                ; Living things (people, dogs, etc) are <9
06BD: 24 05           BCC     $6C4                ; Not a living thing
06BF: B7 01 B8        STA     commandTarg         ; Remember living thing. We are giving them a command so process normally.
06C2: 30 03           LEAX    3,X                 ; Next word

06C4: A6 80           LDA     ,X+                 ; Word list
06C6: 27 7B           BEQ     $743                ; End of list ... go process
06C8: E6 84           LDB     ,X                  ; Word number to B
06CA: EE 81           LDU     ,X++                ; LSB to LSB of U
06CC: 34 10           PSHS    X                   ; Hold token buffer
06CE: 4A              DECA                        ; List 1? Verbs?
06CF: 26 21           BNE     $6F2                ; No ... continue

I believe the goal here was to allow multiple verbs given on an input line to be translated to a single verb. The code finds a replacement list for the newly given verb and then runs the list two bytes at a time comparing one of the entries to the last given verb and storing the second byte if there is a match. I believe that is what is SUPPOSED to happen, but I believe the code has a bug or two. It actually does nothing at all. The replacement list for BEDLAM and RAAKATU is empty so the code is never used anyway.

06D1: 8E 13 B2        LDX     #$13B2              ; Multi verb translation list (empty list for BEDLAM and RAAKATU)
06D4: BD 0A 60        JSR     FindSublist         ; Look for an entry for the given verb
06D7: 24 13           BCC     $6EC                ; No entry ... use the word as-is
06D9: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length of entry
06DC: BD 0A 99        JSR     CompareXY           ; End of list?
06DF: 1F 98           TFR     B,A                 ; ?? Held in A but ...
06E1: 24 09           BCC     $6EC                ; Reached end of list. This input is the verb.
06E3: E6 80           LDB     ,X+                 ; ??
06E5: A6 80           LDA     ,X+                 ; ?? ... A is mangled here?
06E7: F1 01 B3        CMPB    verbWord            ; ?? Compare to 01B3 ...
06EA: 26 F0           BNE     $6DC                ; Continue running list
06EC: F7 01 B3        STB     verbWord            ; ?? ... then store if equal?
06EF: 7E 07 3E        JMP     $073E               ; Continue with next word

06F2: 4A              DECA                        ; List 2 Noun
06F3: 26 36           BNE     $72B                ; Not a noun
06F5: 7D 01 B5        TST     prepGiven           ; Has prepostion been given?
06F8: 27 20           BEQ     $71A                ; No ... this is first noun
06FA: 8E 01 C9        LDX     #$01C9              ; 2nd noun area
06FD: E7 80           STB     ,X+                 ; Store word number
06FF: B6 01 B7        LDA     adjWord             ; Last adjective
0702: A7 80           STA     ,X+                 ; Keep with noun
0704: B6 01 BA        LDA     lsbAdj1             ; LSB of adjective
0707: A7 84           STA     ,X                  ; Keep with noun
0709: 26 04           BNE     $70F                ; There was one ... go on
070B: 1F 30           TFR     U,D                 ; Use LSB of ...
070D: E7 84           STB     ,X                  ; ... noun if no adjective
070F: 7F 01 B7        CLR     adjWord             ; Adjective moved
0712: 7F 01 B5        CLR     prepGiven           ; Preposition moved
0715: 7F 01 BA        CLR     lsbAdj1             ; LSB moved
0718: 20 24           BRA     $73E                ; Continue with next word

071A: BE 01 C3        LDX     FIRST_NOUN_NUM      ; Copy ...
071D: BF 01 C9        STX     SECOND_NOUN_NUM     ; ... any ...
0720: BE 01 C5        LDX     firstNounLSB        ; ... first noun ...
0723: BF 01 CB        STX     secondNounLSB       ; ... to second
0726: 8E 01 C3        LDX     #$01C3              ; First word area
0729: 20 D2           BRA     $6FD                ; Go fill out first word

072B: 4A              DECA                        ; List 3 Adjective
072C: 26 0A           BNE     $738                ; Not a proposition
072E: F7 01 B7        STB     adjWord             ; Store adjective number
0731: 1F 30           TFR     U,D                 ; Store ...
0733: F7 01 BA        STB     lsbAdj1             ; ... adjective LSB in buffer
0736: 20 06           BRA     $73E                ; Continue with next word

0738: F7 01 B4        STB     perpWord            ; Preposition
073B: F7 01 B5        STB     prepGiven           ; Preoposition given (noun should follow)
073E: 35 10           PULS    X                   ; Restore token pointer
0740: 7E 06 C4        JMP     $06C4               ; Next word

; Process input
0743: 7D 01 B3        TST     verbWord            ; Verb given?
0746: 10 27 02 8C     LBEQ    $09D6               ; No ... ?VERB? error
074A: 8E 01 C9        LDX     #$01C9              ; Second noun
074D: BD 08 63        JSR     $0863               ; Decode it (only returns if OK)
0750: B7 01 C9        STA     SECOND_NOUN_NUM     ; Hold target object index
0753: BF 01 CC        STX     SECOND_NOUN_DATA    ; Hold target object pointer
0756: 8E 01 C3        LDX     #$01C3              ; First noun
0759: BD 08 63        JSR     $0863               ; Decode it (only returns if OK)
075C: B7 01 C3        STA     FIRST_NOUN_NUM      ; Hold target object index
075F: BF 01 C6        STX     FIRST_NOUN_DATA     ; Hold target object pointer
0762: 7F 01 B5        CLR     prepGiven           ; Clear preposition flag

0765: BE 01 C6        LDX     FIRST_NOUN_DATA     ; Pointer to first noun object data
0768: B6 01 C3        LDA     FIRST_NOUN_NUM      ; First noun index
076B: 27 07           BEQ     $774                ; No first noun ... store a 0
076D: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and load end
0770: 30 02           LEAX    2,X                 ; Skip 2 bytes
0772: A6 84           LDA     ,X                  ; Object parameter bits
0774: B7 01 C8        STA     firstNounParams     ; Hold first noun's parameter bits

0777: BE 01 CC        LDX     SECOND_NOUN_DATA    ; Pointer to second noun object data
077A: B6 01 C9        LDA     SECOND_NOUN_NUM     ; Second noun number
077D: 27 07           BEQ     $786                ; No second noun ... store 0
077F: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and load end
0782: 30 02           LEAX    2,X                 ; Skip 2 bytes
0784: A6 84           LDA     ,X                  ; Object parameter bits
0786: B7 01 CE        STA     secondNounParams    ; Hold second noun's parameter bits

0789: 8E 13 E3        LDX     #$13E3              ; Syntax list
078C: A6 84           LDA     ,X                  ; End of list?
078E: 10 27 02 00     LBEQ    $0992               ; Yes ... "?PHRASE?"
0792: B6 01 B3        LDA     verbWord            ; Verb ...
0795: A1 80           CMPA    ,X+                 ; ... matches?
0797: 26 57           BNE     $7F0                ; No ... move to next entry
0799: A6 84           LDA     ,X                  ; Phrase's proposition
079B: B7 01 B6        STA     phrasePrep          ; Hold it
079E: B6 01 B4        LDA     perpWord            ; Preposition word number
07A1: 27 04           BEQ     $7A7                ; None given ... skip prep check
07A3: A1 84           CMPA    ,X                  ; Given prep matches?
07A5: 26 49           BNE     $7F0                ; No ... move to next phrase
07A7: 30 01           LEAX    1,X                 ; Skip to next phrase component
07A9: A6 84           LDA     ,X                  ; First noun required by phrase
07AB: 27 14           BEQ     $7C1                ; Not given in phrase ... skip check
07AD: B6 01 C3        LDA     FIRST_NOUN_NUM      ; 1st noun index
07B0: 26 14           BNE     $7C6                ; Requested by phrase but not given by user ... next phrase
07B2: B6 01 BB        LDA     lsbVerb             ; LSB of verb ...
07B5: B7 01 BD        STA     lsbError            ; ... to location of error
07B8: 10 8E 01 C3     LDY     #$01C3              ; Descriptor for 1st noun
07BC: BD 09 13        JSR     $0913               ; Decode 1st noun as per phrase
07BF: 20 05           BRA     $7C6                ; We just processed a first one. We know it is there.
07C1: B6 01 C3        LDA     FIRST_NOUN_NUM      ; Is there a 1st noun?
07C4: 26 2C           BNE     $7F2                ; None given ... move to next entry
07C6: 30 01           LEAX    1,X                 ; Next in phrase
07C8: A6 84           LDA     ,X                  ; Phrase wants a second noun?
07CA: 27 19           BEQ     $7E5                ; No ... skip
07CC: B6 01 C9        LDA     SECOND_NOUN_NUM     ; User given 2nd noun
07CF: 26 19           BNE     $7EA                ; Yes ... use this phrase
07D1: B6 01 BC        LDA     lsbCursor           ; Location of ...
07D4: B7 01 BD        STA     lsbError            ; ... error on screen
07D7: 86 01           LDA     #$01                ; Set preposition ...
07D9: B7 01 B5        STA     prepGiven           ; ... flag to YES
07DC: 10 8E 01 C9     LDY     #$01C9              ; 2nd noun index
07E0: BD 09 13        JSR     $0913               ; Decode 2nd noun as per phrase
07E3: 20 05           BRA     $7EA                ; Use this

07E5: B6 01 C9        LDA     SECOND_NOUN_NUM     ; Is there a second noun?
07E8: 26 0A           BNE     $7F4                ; No ... move to next entry
07EA: 30 01           LEAX    1,X                 ; Get matched ...
07EC: A6 84           LDA     ,X                  ; ... phrase number
07EE: 20 09           BRA     $7F9                ; Store and continue
07F0: 30 01           LEAX    1,X                 ; Skip ...
07F2: 30 01           LEAX    1,X                 ; ... to ...
07F4: 30 02           LEAX    2,X                 ; ... next entry
07F6: 7E 07 8C        JMP     $078C               ; Keep looking

; Input processing goes like this:
; If this is a phrase given to someone
;   If the target object has field 0B then execute that script
;   Otherwise execute the general "other commanded" script at 1356. For
;   BEDLAM this script just prints the name. Everybody should have an 0B script.
; else
;   Execute the user-script at 2F24

07F9: B7 01 D1        STA     PHRASE_FORM         ; Store the phrase number
07FC: 8E 05 FF        LDX     #$05FF              ; Move cursor to ...
07FF: 9F 88           STX     <printCursor        ; ... end of line (force line feed on next print)
0801: B6 01 C3        LDA     FIRST_NOUN_NUM      ; First noun given?
0804: 26 0C           BNE     $812                ; Yes ... keep what we have
0806: BE 01 CC        LDX     SECOND_NOUN_DATA    ; Move 2nd ...
0809: BF 01 C6        STX     FIRST_NOUN_DATA     ; ... noun to ...
080C: B6 01 C9        LDA     SECOND_NOUN_NUM     ; ... first ...
080F: B7 01 C3        STA     FIRST_NOUN_NUM      ; ... descriptor
0812: B6 01 B8        LDA     commandTarg         ; Command given to someone else?
0815: 27 33           BEQ     $84A                ; No ... go handle it as user
0817: 8E 01 E5        LDX     #$01E5              ; First word (who was commanded)
081A: A6 84           LDA     ,X                  ; Get the object word
081C: 6F 84           CLR     ,X                  ; Clear adjective for commanded
081E: A7 82           STA     ,-X                 ; Make a descriptor out of the 1st word area
0820: BD 08 63        JSR     $0863               ; Lookup the object (make sure they are here)
0823: B7 01 D2        STA     ACTIVE_OBJ_NUM      ; Active object
0826: BF 01 D3        STX     ACTIVE_OBJ_DATA     ; Active object data
0829: 86 0D           LDA     #$0D                ; Print ...
082B: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR
082E: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and load end
0831: 30 03           LEAX    3,X                 ; Skip object data
0833: C6 0B           LDB     #$0B                ; Get handle-request ...
0835: BD 0A 68        JSR     $0A68               ; ... script from the object
0838: 25 08           BCS     $842                ; There is one ... do it
083A: 8E 13 56        LDX     #$1356              ; General handler for ...
083D: BD 0C 44        JSR     ProcessCommand      ; ... being commanded
0840: 20 16           BRA     $858                ; Allow other objects to move
 
0842: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip size
0845: BD 0C 44        JSR     ProcessCommand      ; Execute command handler
0848: 20 0E           BRA     $858                ; Continue with giving objects their turns

084A: 86 0D           LDA     #$0D                ; Print ...
084C: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR
084F: 8E 2F 24        LDX     #$2F24              ; General command scripts
0852: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip over end delta
0855: BD 0C 44        JSR     ProcessCommand      ; Execute script
;
0858: BD 10 51        JSR     EveryTurn           ; Allow objects to move
085B: 86 0D           LDA     #$0D                ; Print ...
085D: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR
0860: 7E 06 38        JMP     MainLoop            ; Top of game loop


; This function decodes the NOUN descriptor pointed to by X. The AJECTIVE-NOUN
; pair is compared to all objects in the room (and pack). If no adjective
; is given and there are multiple matching objects (like multiple doors with
; different colors) then the "?WHICH?" prompt is given. If there is no
; matching object then "?WHAT?" is given. If this function returns then
; the mapping was successful.
;
; @param X pointer to the noun descriptor to decode
; @return A index of target object
; @return X pointer to target object data
;
0863: 7F 01 BF        CLR     VAR_OBJ_NUMBER      ; Input object number
0866: E6 80           LDB     ,X+                 ; Word number of noun
0868: F7 01 B2        STB     tmp1B2              ; Hold it
086B: 26 02           BNE     $86F                ; Real object ... go decode
086D: 4F              CLRA                        ; Not found
086E: 39              RTS                         ; Out
086F: A6 80           LDA     ,X+                 ; Noun's adjective
0871: B7 01 B7        STA     adjWord             ; Hold it
0874: A6 84           LDA     ,X                  ; LSB of word in buffer
0876: B7 01 CF        STA     tmp1CF              ; Hold it
0879: 8E 1B 42        LDX     #$1B42              ; Object data
087C: BD 0A 60        JSR     FindSublist         ; Get pointer to next object that matches word
087F: 24 5A           BCC     $8DB                ; Not found
0881: 34 20           PSHS    Y                   ; Hold end of object data
0883: 34 10           PSHS    X                   ; Hold pointer to noun descriptor
0885: B6 01 E1        LDA     tmp1E1              ; Index of object in the object list
0888: B7 01 E2        STA     tmp1E2              ; Remember this
088B: BD 08 EB        JSR     $08EB               ; Is object in this room or on player?
088E: 26 57           BNE     $8E7                ; No ... can't be target ... out
0890: B6 01 B7        LDA     adjWord             ; Noun's adjective
0893: 27 1F           BEQ     $8B4                ; No adjective ... skip this
0895: 35 10           PULS    X                   ; Restore pointer to noun descriptor
0897: 34 10           PSHS    X                   ; Hold it again
0899: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the id and end
089C: 30 03           LEAX    3,X                 ; Skip the object data
089E: C6 01           LDB     #$01                ; Look up adjective ...
08A0: BD 0A 68        JSR     $0A68               ; ... list for object
08A3: 24 0F           BCC     $8B4                ; No adjective ... ignore
08A5: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the id and length
08A8: BD 0A 99        JSR     CompareXY           ; End of adjective list?
08AB: 24 3A           BCC     $8E7                ; Yes ... no match ... next object
08AD: B6 01 B7        LDA     adjWord             ; Adjective
08B0: A1 80           CMPA    ,X+                 ; In this list?
08B2: 26 F4           BNE     $8A8                ; No ... keep searching list
08B4: 35 10           PULS    X                   ; Restore object pointer
08B6: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Last object index that matched
08B9: 10 26 01 10     LBNE    $09CD               ; Multiple matches ... do "?WHICH?"
08BD: B6 01 E2        LDA     tmp1E2              ; Object index
08C0: B7 01 BF        STA     VAR_OBJ_NUMBER      ; Current guess at matching object index
08C3: BF 01 C0        STX     VAR_OBJ_DATA        ; Input object data
08C6: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip id and end
08C9: 1F 21           TFR     Y,X                 ; Next object
08CB: 35 20           PULS    Y                   ; End of object data
08CD: F6 01 B2        LDB     tmp1B2              ; Restore word number of noun
08D0: B6 01 E2        LDA     tmp1E2              ; Current object index
08D3: B7 01 E1        STA     tmp1E1              ; Start count for next pass
08D6: BD 0A 68        JSR     $0A68               ; Find next matching object
08D9: 25 A6           BCS     $881                ; Got one ... go test it
08DB: BE 01 C0        LDX     VAR_OBJ_DATA        ; Object data to X
08DE: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Object found?
08E1: 26 03           BNE     $8E6                ; Yes ...  out
08E3: 7E 09 89        JMP     $0989               ; No ... "?WHAT?"
08E6: 39              RTS                         ; Done
08E7: 35 10           PULS    X                   ; Restore object pointer
08E9: 20 DB           BRA     $8C6                ; Do next object

; This function checks if the target object is in the current room or being
; held by the active object.
;
; @param X pointer to target object
; @return Z=1 for yes or Z=0 for no
;
08EB: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip size
08EE: B6 01 D5        LDA     CUR_ROOM            ; Current room number
08F1: A1 84           CMPA    ,X                  ; Is object in room?
08F3: 27 F1           BEQ     $8E6                ; Yes ... return OK
08F5: A6 84           LDA     ,X                  ; Get object's room number
08F7: 27 17           BEQ     $910                ; 0 ... fail
08F9: 81 FF           CMPA    #$FF                ; FF ...
08FB: 27 E9           BEQ     $8E6                ; ... return OK
08FD: 85 80           BITA    #$80                ; Upper bit of object location set ...
08FF: 26 0F           BNE     $910                ; ... then fail
0901: E6 84           LDB     ,X                  ; Location again
0903: F1 01 D2        CMPB    ACTIVE_OBJ_NUM      ; Being held by the active object?
0906: 27 DE           BEQ     $8E6                ; Yes ... return OK
0908: 8E 1B 42        LDX     #$1B42              ; Strange. 117D does this too.
090B: BD 11 7D        JSR     $117D               ; Get object's container object (if any)
090E: 20 DB           BRA     $8EB                ; Repeat check
0910: 8A 01           ORA     #$01                ; Mark failure
0912: 39              RTS                         ; Out

; This function fills the noun descriptor pointed to by Y with the object
; in current room or on user that matches the parameter value from the
; phrase script. If there is not exactly one such object then flash an error
; like "WITH ?WHAT?" using the current preposition or just "?WHAT?" if there
; isn't one.
;
; @param Y pointer to noun descriptor to fill
; @param X pointer to phrase data
; @return descriptor filled out with object
;
0913: 34 10           PSHS    X                   ; Hold phrase data pointer
0915: 7F 01 B2        CLR     tmp1B2              ; Found word flag
0918: 7F 01 E1        CLR     tmp1E1              ; Object index starts at 0
091B: 34 20           PSHS    Y                   ; Hold noun descriptor
091D: A6 84           LDA     ,X                  ; Object parameter mask bits
091F: B7 01 AB        STA     tmp1AB              ; Hold
0922: 8E 1B 42        LDX     #$1B42              ; Object data
0925: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and load end
0928: BD 0A 99        JSR     CompareXY           ; At end of object data?
092B: 24 40           BCC     $96D                ; Yes ... done
092D: 7C 01 E1        INC     tmp1E1              ; Bump object index
0930: 34 20           PSHS    Y                   ; Hold end of object
0932: 34 10           PSHS    X                   ; Hold pointer to object
0934: BD 08 EB        JSR     $08EB               ; Is object in room or on player?
0937: 35 10           PULS    X                   ; Restore pointer to object
0939: 26 2D           BNE     $968                ; No ... next object
093B: E6 84           LDB     ,X                  ; Object word number
093D: BF 01 D8        STX     nextToken           ; Pointer to object data
0940: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and load end
0943: 30 02           LEAX    2,X                 ; Point to object parameters
0945: A6 84           LDA     ,X                  ; Get parameters
0947: B4 01 AB        ANDA    tmp1AB              ; Compare to phrase data ...
094A: B1 01 AB        CMPA    tmp1AB              ; ... this is a strange way to do it
094D: 26 13           BNE     $962                ; Not a match ... next word
094F: B6 01 B2        LDA     tmp1B2              ; Already got a word number?
0952: 26 47           BNE     $99B                ; Yes ... error
0954: F7 01 B2        STB     tmp1B2              ; Found word number
0957: A6 84           LDA     ,X                  ; Remember ...
0959: B7 01 B7        STA     adjWord             ; ... object parameters
095C: BE 01 D8        LDX     nextToken           ; Remember ...
095F: BF 01 AD        STX     tmp1AD              ; ... object pointer
0962: 1E 12           EXG     X,Y                 ; Start of next object to X
0964: 35 20           PULS    Y                   ; Restore end of object pointer
0966: 20 C0           BRA     $928                ; Continue with next object
0968: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and load end
096B: 20 F5           BRA     $962                ; Try next object
096D: B6 01 B2        LDA     tmp1B2              ; Did we find an object word?
0970: 27 29           BEQ     $99B                ; No .... error
0972: 35 20           PULS    Y                   ; Noun descriptor
0974: BE 01 AD        LDX     tmp1AD              ; Object data pointer
0977: B6 01 E1        LDA     tmp1E1              ; New ...
097A: A7 A4           STA     ,Y                  ; ... object number
097C: 31 23           LEAY    3,Y                 ; New ...
097E: AF A1           STX     ,Y++                ; ... pointer to object data
0980: B6 01 B7        LDA     adjWord             ; New ...
0983: A7 A4           STA     ,Y                  ; ... object parameters
0985: 35 10           PULS    X                   ; Restore phrase data pointer
0987: 4F              CLRA                        ; Set Z=1
0988: 39              RTS                         ; Done

0989: 10 8E 13 C3     LDY     #$13C3              ; "?WHAT?"
098D: B6 01 CF        LDA     tmp1CF              ; LSB of screen location
0990: 20 4A           BRA     $9DC                ; Go flash error and try again

0992: 10 8E 13 D2     LDY     #$13D2              ; "?PHRASE?"
0996: B6 01 BC        LDA     lsbCursor           ; LSB of screen location
0999: 20 41           BRA     $9DC                ; Go flash error and try again

099B: B6 01 B5        LDA     prepGiven           ; Preposition given?
099E: 27 24           BEQ     $9C4                ; No ... just plain "?WHAT?"
09A0: B6 01 B4        LDA     perpWord            ; Preposition word number?
09A3: 26 1F           BNE     $9C4                ; No word ... just plain "?WHAT?"
09A5: 8E 3E A2        LDX     #$3EA2              ; Prepositions list
09A8: E6 84           LDB     ,X                  ; Length of word
09AA: 27 18           BEQ     $9C4                ; Reached the end ... do "?WHAT?"
09AC: 34 10           PSHS    X                   ; Hold start of word
09AE: E6 80           LDB     ,X+                 ; Get length again
09B0: 3A              ABX                         ; Point to end of word
09B1: B6 01 B6        LDA     phrasePrep          ; Target preposition
09B4: A1 80           CMPA    ,X+                 ; Matches?
09B6: 27 04           BEQ     $9BC                ; Yes ... error includes this word
09B8: 35 06           PULS    A,B                 ; Restore stack
09BA: 20 EC           BRA     $9A8                ; Next word
09BC: 35 20           PULS    Y                   ; Word text to Y
09BE: B6 01 BD        LDA     lsbError            ; LSB of error message
09C1: BD 0A 22        JSR     $0A22               ; Push preposition word
09C4: 10 8E 13 C3     LDY     #$13C3              ; "?WHAT?"
09C8: B6 01 BD        LDA     lsbError            ; LSB of screen location
09CB: 20 0F           BRA     $9DC                ; Go flash error and try again
09CD: 10 8E 13 CA     LDY     #$13CA              ; "?WHICH"?
09D1: B6 01 CF        LDA     tmp1CF              ; LSB of screen location
09D4: 20 06           BRA     $9DC                ; Go flash error and try again
09D6: 10 8E 13 BC     LDY     #$13BC              ; "?VERB?"
;
09DA: 86 E0           LDA     #$E0                ; LSB of start of input line
09DC: 10 CE 03 FF     LDS     #$03FF              ; Reset the stack (we jump back into the main loop)
09E0: 8E 05 E0        LDX     #$05E0              ; Error goes at start of line
09E3: BD 0A 22        JSR     $0A22               ; Push error message on and pause
09E6: A6 A4           LDA     ,Y                  ; Get length
09E8: B7 01 AB        STA     tmp1AB              ; Hold in counter
09EB: 34 10           PSHS    X                   ; Hold X
09ED: 86 60           LDA     #$60                ; SPACE
09EF: A7 80           STA     ,X+                 ; Flash off ...
09F1: 7A 01 AB        DEC     tmp1AB              ; ... error ...
09F4: 26 F7           BNE     $9ED                ; ... word
09F6: BD 0A 17        JSR     $0A17               ; Long delay
09F9: 35 10           PULS    X                   ; Restore insertion point
09FB: 5A              DECB                        ; All flashes done?
09FC: 26 14           BNE     $A12                ; No ... keep flashing error word
09FE: A6 A4           LDA     ,Y                  ; Size of error word
0A00: 4C              INCA                        ; Plus the extra space
0A01: B7 01 AB        STA     tmp1AB              ; Hold counter
0A04: BD 0B 1C        JSR     $0B1C               ; Close up the ...
0A07: 7A 01 AB        DEC     tmp1AB              ; ... error ...
0A0A: 26 F8           BNE     $A04                ; ... word
0A0C: BD 0A A4        JSR     $0AA4               ; Get input line
0A0F: 7E 06 44        JMP     $0644               ; Continue processing
0A12: BD 0A 41        JSR     $0A41               ; Flash message and pause
0A15: 20 CF           BRA     $9E6                ; Continue flashing and read new line

;Long delay
0A17: 86 32           LDA     #$32                ; Outer loop counts
0A19: 7A 01 AB        DEC     tmp1AB              ; Decrease inner count (doesn't matter what's there)
0A1C: 26 FB           BNE     $A19                ; Kill inner time
0A1E: 4A              DECA                        ; All 256 loops done?
0A1F: 26 F8           BNE     $A19                ; No ... keep pausing
0A21: 39              RTS                         ; Done

0A22: B7 01 AB        STA     tmp1AB              ; Hold LSB of cursor
0A25: CC 05 E0        LDD     #$05E0              ; Start of input line
0A28: F6 01 AB        LDB     tmp1AB              ; Replace LSB
0A2B: 1F 01           TFR     D,X                 ; Place for error word in X
0A2D: A6 A4           LDA     ,Y                  ; Get length of message
0A2F: 4C              INCA                        ; Plus a space after
0A30: B7 01 AB        STA     tmp1AB              ; Store length
0A33: 34 20           PSHS    Y                   ; Hold message
0A35: BD 0B 47        JSR     $0B47               ; Slide right past insertion point
0A38: 7A 01 AB        DEC     tmp1AB              ; Space opened up?
0A3B: 26 F8           BNE     $A35                ; No ... open all the spaces for the error word
0A3D: 35 20           PULS    Y                   ; Restore pointer
0A3F: C6 08           LDB     #$08                ; 8 flashes
0A41: A6 A4           LDA     ,Y                  ; Count again
0A43: B7 01 AB        STA     tmp1AB              ; Size of word
0A46: 34 34           PSHS    Y,X,B               ; Hold all
0A48: 31 21           LEAY    1,Y                 ; Skip size
0A4A: A6 A0           LDA     ,Y+                 ; Copy error word ...
0A4C: A7 80           STA     ,X+                 ; ... to screen
0A4E: 7A 01 AB        DEC     tmp1AB              ; All done?
0A51: 26 F7           BNE     $A4A                ; No ... go back and do all
0A53: 30 01           LEAX    1,X                 ; Bump ...
0A55: 1F 10           TFR     X,D                 ; ... LSB ...
0A57: F7 01 BD        STB     lsbError            ; ... of screen pointer
0A5A: BD 0A 17        JSR     $0A17               ; Long pause
0A5D: 35 34           PULS    B,X,Y               ; Restore
0A5F: 39              RTS                         ; Done

FindSublist:
; Find a sublist by ID within a master list.
; X=pointer to master list
; B=sublist ID
; Return sublist pointer in X
; Return C=0 if not found, C=1 if found
0A60: 30 01           LEAX    1,X                 ; Skip list ID
0A62: BD 0A 85        JSR     LoadEnd             ; Read end of list to Y
0A65: 7F 01 E1        CLR     tmp1E1              ; Clear index of sublist
0A68: BD 0A 99        JSR     CompareXY           ; Compare X to Y
0A6B: 25 01           BCS     $A6E                ; X is smaller ... keep going
0A6D: 39              RTS                         ; Done (C=0 not found)
0A6E: 7C 01 E1        INC     tmp1E1              ; Keep up with index of sublist
0A71: E1 84           CMPB    ,X                  ; Is this the sublist we want?
0A73: 27 0B           BEQ     $A80                ; Found ... C=1 and out
0A75: 34 20           PSHS    Y                   ; Hold the end
0A77: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and read end of list to Y
0A7A: 1F 21           TFR     Y,X                 ; Jump to the end of this list
0A7C: 35 20           PULS    Y                   ; Restore the end of the master lsit
0A7E: 20 E8           BRA     $A68                ; Keep looking for the sublist
;
0A80: 1A 01           ORCC    #$01                ; C=1
0A82: 39              RTS                         ; Done

SkipIDLoadEnd:
; Skip the ID byte and load the end of the list in Y.
0A83: 30 01           LEAX    1,X                 ; Bump script pointer
;
LoadEnd:
; Load the end of the list in Y.
0A85: 4F              CLRA                        ; Upper is 0
0A86: 34 04           PSHS    B                   ; Hold lower
0A88: E6 80           LDB     ,X+                 ; Get lower
0A8A: C5 80           BITB    #$80                ; One or two byte value?
0A8C: 27 06           BEQ     $A94                ; Just a one byte ... use it
0A8E: C4 7F           ANDB    #$7F                ; This is the ...
0A90: 1F 98           TFR     B,A                 ; ... MSB
0A92: E6 80           LDB     ,X+                 ; Now get 2nd byte (LSB)
0A94: 31 8B           LEAY    D,X                 ; Offset script
0A96: 35 04           PULS    B                   ; Restore B
0A98: 39              RTS                         ; Done

CompareXY:
; Compare X to Y (flags = X - Y)
0A99: 10 BF 01 A9     STY     tmp1A9              ; Do compare ...
0A9D: BC 01 A9        CMPX    tmp1A9              ; X - Y
0AA0: 39              RTS                         ; Done

Get Input Line

GetInputLine:
0AA1: 8E 05 E0        LDX     #$05E0              ; Start of bottom row
0AA4: BD 0B 64        JSR     $0B64               ; Slide bottom row to right after cursor and draw cursor
0AA7: BD 0B 6C        JSR     GetKey              ; Get a key from the keyboard
0AAA: 81 15           CMPA    #$15                ; SHIFT-LEFT ARROW ? (true left arrow)
0AAC: 27 20           BEQ     $ACE                ; Swap cursor and character to left
0AAE: 81 5D           CMPA    #$5D                ; SHIFT-RIGHT ARROW ? (true right arrow)
0AB0: 27 2F           BEQ     $AE1                ; Swap cursor and character to right
0AB2: 81 09           CMPA    #$09                ; Backspace
0AB4: 27 3E           BEQ     $AF4                ; Go handle backspace
0AB6: 81 0D           CMPA    #$0D                ; CR?
0AB8: 27 4F           BEQ     $B09                ; Handle it and out
0ABA: 81 0C           CMPA    #$0C                ; CLEAR?
0ABC: 27 4F           BEQ     $B0D                ; Yes ... clear the row
0ABE: 81 08           CMPA    #$08                ; LEFT-ARROW ? (backspace)
0AC0: 27 3B           BEQ     $AFD                ; Yes go handle
0AC2: 8C 05 FF        CMPX    #$05FF              ; At the end of the screen?
0AC5: 27 E0           BEQ     $AA7                ; Yes ... ignore and get another
0AC7: BD 0B 47        JSR     $0B47               ; Slide bottom row beyond insertion
0ACA: A7 80           STA     ,X+                 ; Store character
0ACC: 20 D9           BRA     $AA7                ; Go get another character
;
0ACE: 8C 05 E0        CMPX    #$05E0              ; Nothing typed?
0AD1: 27 D4           BEQ     $AA7                ; Yes ... ignore and get another
0AD3: 30 1F           LEAX    -1,X                ; Swap ...
0AD5: A6 80           LDA     ,X+                 ; ... cursor ...
0AD7: A7 84           STA     ,X                  ; ... and ...
0AD9: 30 1F           LEAX    -1,X                ; ... character ...
0ADB: 86 CF           LDA     #$CF                ; ... to the ...
0ADD: A7 84           STA     ,X                  ; ... left
0ADF: 20 C6           BRA     $AA7                ; Go get another character
;
0AE1: 8C 05 FF        CMPX    #$05FF              ; End of screen?
0AE4: 27 C1           BEQ     $AA7                ; Yes ... go get another key
0AE6: 30 01           LEAX    1,X                 ; Swap ...
0AE8: A6 84           LDA     ,X                  ; ... cursor ...
0AEA: 30 1F           LEAX    -1,X                ; ... and ...
0AEC: A7 80           STA     ,X+                 ; ... character ...
0AEE: 86 CF           LDA     #$CF                ; ... to the ...
0AF0: A7 84           STA     ,X                  ; ... right
0AF2: 20 B3           BRA     $AA7                ; Go get another key
;
0AF4: BD 0B 1C        JSR     $0B1C               ; Back off trailing cursor block
0AF7: 86 CF           LDA     #$CF                ; Store ...
0AF9: A7 84           STA     ,X                  ; ... cursor block
0AFB: 20 AA           BRA     $AA7                ; Go get another key
;
0AFD: 8C 05 E0        CMPX    #$05E0              ; At the start of the row?
0B00: 27 A5           BEQ     $AA7                ; Yes ... go get another key
0B02: 30 1F           LEAX    -1,X                ; Back up one character
0B04: BD 0B 1C        JSR     $0B1C               ; Erase the end
0B07: 20 9E           BRA     $AA7                ; Go get another key
;
0B09: BD 0B 1C        JSR     $0B1C               ; Back off cursor character
0B0C: 39              RTS                         ; Done
;
0B0D: 8E 05 E0        LDX     #$05E0              ; Start of bottom row
0B10: C6 20           LDB     #$20                ; 32 characters on the row
0B12: 86 60           LDA     #$60                ; SPACE character
0B14: A7 80           STA     ,X+                 ; Clear ...
0B16: 5A              DECB                        ; ... the ...
0B17: 26 FB           BNE     $B14                ; ... bottom row
0B19: 7E 0A A1        JMP     GetInputLine        ; Go get another key
;
0B1C: 1F 13           TFR     X,U                 ; Hold X
0B1E: 31 01           LEAY    1,X                 ; Clear trailing ...
0B20: 86 60           LDA     #$60                ; ... cursor ...
0B22: A7 84           STA     ,X                  ; ... block
;
0B24: 10 8C 06 00     CMPY    #$0600              ; End of screen?
0B28: 27 E2           BEQ     $B0C                ; Yes out
0B2A: 10 8C 06 01     CMPY    #$0601              ; End of screen?
0B2E: 27 DC           BEQ     $B0C                ; Yes out
0B30: 10 8C 06 02     CMPY    #$0602              ; End of screen?
0B34: 27 D6           BEQ     $B0C                ; Yes out
0B36: A6 A0           LDA     ,Y+                 ; Back ...
0B38: A7 80           STA     ,X+                 ; ... up ...
0B3A: 10 8C 06 00     CMPY    #$0600              ; ... row ...
0B3E: 26 F6           BNE     $B36                ; ... over cursor
0B40: 86 60           LDA     #$60                ; Clear last ...
0B42: A7 84           STA     ,X                  ; ... character
0B44: 1F 31           TFR     U,X                 ; Restore X
0B46: 39              RTS                         ; Done
;
0B47: 8C 06 00        CMPX    #$0600              ; Past end of screen?
0B4A: 27 17           BEQ     $B63                ; Yes ... out
0B4C: BF 01 A7        STX     tmp1A7              ; Hold insertion point
0B4F: 8E 06 00        LDX     #$0600              ; End+1
0B52: 10 8E 05 FF     LDY     #$05FF              ; End
0B56: E6 A2           LDB     ,-Y                 ; Slide bottom row ...
0B58: E7 82           STB     ,-X                 ; ... to the right
0B5A: BC 01 A7        CMPX    tmp1A7              ; At the insertion point?
0B5D: 26 F7           BNE     $B56                ; No ... slide all
0B5F: C6 60           LDB     #$60                ; SPACE
0B61: E7 84           STB     ,X                  ; Clear first character
0B63: 39              RTS                         ; Done
;
0B64: BD 0B 47        JSR     $0B47               ; Slide row over from cursor
0B67: 86 CF           LDA     #$CF                ; Cursor character (white block)
0B69: A7 84           STA     ,X                  ; Cursor to screen
0B6B: 39              RTS                         ; Done

Get Key

GetKey:
0B6C: BD 13 19        JSR     Com_2B_generate_random; Get random number every key
0B6F: AD 9F A0 00     JSR     [POLCAT]            ; Get key from user
0B73: 4D              TSTA                        ; Anything pressed?
0B74: 27 F6           BEQ     GetKey              ; No ... keep waiting
0B76: 81 41           CMPA    #$41                ; Letter 'A'
0B78: 24 06           BCC     $B80                ; Greater or equal ... use it
0B7A: 81 20           CMPA    #$20                ; Space
0B7C: 25 02           BCS     $B80                ; Lower .... use it
0B7E: 8B 40           ADDA    #$40                ; Not really sure why. '!' becomes 'a'.
0B80: 39              RTS                         ; Done

Decode Buffer

DecodeBuffer:
; X=input buffer on screen (1 before)
; 1D8=pointer to result token list
; Return 1CF LSB of first word
; Return 1BB LSB of next word
; Return list of 3-byte tokens filled into buffer pointed to by 1D8:
;   NN WW PP
;     NN = list number
;     WW = word number
;     PP = LSB of word on screen
;
0B81: 30 01           LEAX    1,X                 ; Next in buffer
;
0B83: 1F 10           TFR     X,D                 ; Hold ...
0B85: F7 01 CF        STB     tmp1CF              ; ... LSB of first word (could be ignored)
0B88: 8C 06 00        CMPX    #$0600              ; End of buffer?
0B8B: 27 F3           BEQ     $B80                ; Yes ... out
0B8D: A6 84           LDA     ,X                  ; Next in input
0B8F: 81 60           CMPA    #$60                ; Valid character?
0B91: 24 EE           BCC     DecodeBuffer        ; No ... skip till we find one
0B93: 10 8E 3B D5     LDY     #$3BD5              ; Word token table
0B97: BD 0B CC        JSR     DecodeWord          ; Try first list
0B9A: 27 E7           BEQ     $B83                ; Found a match ... ignore it
0B9C: C6 01           LDB     #$01                ; Staring list number
0B9E: 31 21           LEAY    1,Y                 ; Next list of words
0BA0: BD 0B CC        JSR     DecodeWord          ; Try and match
0BA3: 27 08           BEQ     $BAD                ; Found a match ... record it
0BA5: 5C              INCB                        ; Next list of words
0BA6: C1 05           CMPB    #$05                ; All tried?
0BA8: 26 F4           BNE     $B9E                ; No ... go back and try all
0BAA: 8A 01           ORA     #$01                ; Not-zero ... error
0BAC: 39              RTS                         ; Done

0BAD: 1E 12           EXG     X,Y                 ; X to Y
0BAF: BE 01 D8        LDX     nextToken           ; Current result token pointer
0BB2: E7 80           STB     ,X+                 ; Store list number
0BB4: A7 80           STA     ,X+                 ; Store word number
0BB6: B6 01 CF        LDA     tmp1CF              ; Start of word
0BB9: A7 80           STA     ,X+                 ; Store word start
0BBB: BF 01 D8        STX     nextToken           ; Bump result token pointer
0BBE: 1E 12           EXG     X,Y                 ; Restore X
0BC0: C1 01           CMPB    #$01                ; Is this the first (VERB) list?
0BC2: 26 06           BNE     $BCA                ; No ... skip marking
0BC4: B6 01 BC        LDA     lsbCursor           ; Mark the input buffer location ...
0BC7: B7 01 BB        STA     lsbVerb             ; ... of the verb
0BCA: 4F              CLRA                        ; OK
0BCB: 39              RTS                         ; Return

DecodeWord:
; Y=input match table
; X=pointer to input buffer word
; Return word data in A if found
; Return is-zero if found, not-zero if not found
; Return 1AB with word data (if found)
; Return 1BC with LSB of pointer-to-next-word
;
; 1A7,1A8 Temporary
; 1AB Temporary
; 1D0 Temporary
;
0BCC: A6 A4           LDA     ,Y                  ; Length of word
0BCE: 26 03           BNE     $BD3                ; It is a word ... go check it
0BD0: 8A 01           ORA     #$01                ; End of list ...
0BD2: 39              RTS                         ; ... return not-zero
0BD3: B7 01 AB        STA     tmp1AB              ; Temporary
0BD6: B7 01 D0        STA     tmp1DO              ; Temporary
0BD9: 34 10           PSHS    X                   ; Hold pointer to input word
0BDB: 31 21           LEAY    1,Y                 ; Skip over word length in table
0BDD: A6 84           LDA     ,X                  ; Character from input (from screen)
0BDF: 81 60           CMPA    #$60                ; Space?
0BE1: 27 53           BEQ     $C36                ; Yes. Didn't match the target word. Next.
0BE3: 8C 06 00        CMPX    #$0600              ; Past screen (end of buffer)?
0BE6: 27 4E           BEQ     $C36                ; Yes. Didn't match the target word. next
0BE8: 81 60           CMPA    #$60                ; Valid character?
0BEA: 25 04           BCS     $BF0                ; Yes ... do compare
0BEC: 30 01           LEAX    1,X                 ; No ... skip this
0BEE: 20 ED           BRA     $BDD                ; Look for valid character
0BF0: A1 A4           CMPA    ,Y                  ; Matches target word?
0BF2: 26 42           BNE     $C36                ; No ... next word
0BF4: 30 01           LEAX    1,X                 ; Next in input
0BF6: 31 21           LEAY    1,Y                 ; Next in match
0BF8: 7A 01 AB        DEC     tmp1AB              ; All done?
0BFB: 26 E0           BNE     $BDD                ; No ... keep looking
0BFD: B6 01 D0        LDA     tmp1DO              ; Original length
0C00: 81 06           CMPA    #$06                ; Six letter input?
0C02: 27 06           BEQ     $C0A                ; Yes ... could be truncated. That's enough of a match.
0C04: A6 84           LDA     ,X                  ; Next from screen
0C06: 81 60           CMPA    #$60                ; Space? End of word?
0C08: 25 33           BCS     $C3D                ; No. Try next word
0C0A: A6 A4           LDA     ,Y                  ; Get the word data
0C0C: 35 20           PULS    Y                   ; Drop the input buffer pointer
0C0E: B7 01 AB        STA     tmp1AB              ; Hold the word data
0C11: A6 84           LDA     ,X                  ; Next in input buffer?
0C13: 81 60           CMPA    #$60                ; Is it a space?
0C15: 27 0C           BEQ     $C23                ; Yes ... ready for next word
0C17: BF 01 A7        STX     tmp1A7              ; Start of next word (in case end of buffer)
0C1A: 8C 06 00        CMPX    #$0600              ; Is this the end of the input buffer?
0C1D: 27 0A           BEQ     $C29                ; Yes. Done
0C1F: 30 01           LEAX    1,X                 ; Skip to next input word
0C21: 20 EE           BRA     $C11                ; Keep looking for input
0C23: BF 01 A7        STX     tmp1A7              ; Pointer to ending space
0C26: 7C 01 A8        INC     tmp1A7+1            ; Point to next character past space (start of next word)
0C29: B6 01 A8        LDA     tmp1A7+1            ; Keep ...
0C2C: B7 01 BC        STA     lsbCursor           ; ... only LSB
0C2F: B6 01 AB        LDA     tmp1AB              ; Return word data in A
0C32: 7F 01 A7        CLR     tmp1A7              ; return is-zero for found
0C35: 39              RTS                         ; Done
;
0C36: 31 21           LEAY    1,Y                 ; Skip next in word data
0C38: 7A 01 AB        DEC     tmp1AB              ; All skipped
0C3B: 26 F9           BNE     $C36                ; No ... skip all
0C3D: 35 10           PULS    X                   ; Restore pointer to word
0C3F: 31 21           LEAY    1,Y                 ; Skip word data
0C41: 7E 0B CC        JMP     DecodeWord          ; Keep trying

Process Command

ProcessCommand:
; Either a direct command or a common command
0C44: A6 80           LDA     ,X+                 ; Next in script
0C46: 1F 89           TFR     A,B                 ; Hold original command
0C48: 85 80           BITA    #$80                ; Upper bit set?
0C4A: 27 13           BEQ     $C5F                ; No ... do commands
0C4C: 34 30           PSHS    Y,X                 ; Hold
0C4E: 8E 33 9C        LDX     #$339C              ; Common commands
0C51: BD 0A 60        JSR     FindSublist         ; Find common command
0C54: 24 06           BCC     $C5C                ; Not found ... skip
0C56: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length of command
0C59: BD 0C 44        JSR     ProcessCommand      ; Execute command
0C5C: 35 30           PULS    X,Y                 ; Restore
0C5E: 39              RTS                         ; Out

0C5F: 1F 98           TFR     B,A                 ; Hold original command
0C61: 10 8E 13 57     LDY     #$1357              ; Function table
0C65: 48              ASLA                        ; Jump to ...
0C66: 6E B6           JMP     [A,Y]               ; ... command

Com_0D_while_pass:
; while_pass:
; Execute a list of commands as long as they pass. Either way end pointing one
; past end.
; Data: LENGTH + list of command
0C68: BD 0A 85        JSR     LoadEnd             ; Read length of command
0C6B: BD 0A 99        JSR     CompareXY           ; Are we past the end?
0C6E: 24 0C           BCC     $C7C                ; Yes ... end successfully
0C70: 34 20           PSHS    Y                   ; Hold the end
0C72: BD 0C 44        JSR     ProcessCommand      ; Execute the command
0C75: 35 20           PULS    Y                   ; Restore the end
0C77: 27 F2           BEQ     $C6B                ; Command successful? Yes ... keep processing
0C79: 1E 12           EXG     X,Y                 ; Fail ... put us at the end
0C7B: 39              RTS                         ; Done
0C7C: 1E 12           EXG     X,Y                 ; Point to end of list
0C7E: 4F              CLRA                        ; Z=1 ... success
0C7F: 39              RTS                         ; Done

Com_0E_while_fail:
; while_fail:
0C80: BD 0A 85        JSR     LoadEnd             ; Load the end
0C83: BD 0A 99        JSR     CompareXY           ; Reached end of list?
0C86: 24 0C           BCC     $C94                ; Yes ... error
0C88: 34 20           PSHS    Y                   ; Hold end of command
0C8A: BD 0C 44        JSR     ProcessCommand      ; Execute command
0C8D: 35 20           PULS    Y                   ; Restore end
0C8F: 26 F2           BNE     $C83                ; Command failed ... try next
0C91: 1E 12           EXG     X,Y                 ; Set script pointer to end of list
0C93: 39              RTS                         ; Out
;
0C94: 1E 12           EXG     X,Y                 ; Set script pointer to end of list
0C96: 8A 01           ORA     #$01                ; Return fail
0C98: 39              RTS                         ; Done

Com_0B_switch:
; switch:
0C99: BD 0A 85        JSR     LoadEnd             ; Get size of switch list
0C9C: E6 80           LDB     ,X+                 ; Get function to call
0C9E: BD 0A 99        JSR     CompareXY           ; End of options?
0CA1: 24 F1           BCC     $C94                ; Yes ... out with error
0CA3: 34 20           PSHS    Y                   ; Hold total switch size
0CA5: 34 04           PSHS    B                   ; Hold function to call
0CA7: 1F 98           TFR     B,A                 ; Call the ...
0CA9: BD 0C 61        JSR     $0C61               ; ... target function
0CAC: 35 04           PULS    B                   ; Restore function to call
0CAE: 27 09           BEQ     $CB9                ; Got our script ... go do it
0CB0: BD 0A 85        JSR     LoadEnd             ; Size of pass script
0CB3: 1E 12           EXG     X,Y                 ; Skip over this option
0CB5: 35 20           PULS    Y                   ; End of script
0CB7: 20 E5           BRA     $C9E                ; Keep looking
0CB9: BD 0A 85        JSR     LoadEnd             ; Skip length
0CBC: BD 0C 44        JSR     ProcessCommand      ; Execute
0CBF: 35 10           PULS    X                   ; Restore script
0CC1: 39              RTS                         ; Done

Com_00_move_ACTIVE_and_look:
; move_ACTIVE_and_look(room)
0CC2: BD 0C CE        JSR     Com_19_move_ACTIVE  ; Move active object to new room
0CC5: 34 10           PSHS    X                   ; Hold script
0CC7: BD 0D 8B        JSR     $0D8B               ; Print room description and objects
0CCA: 35 10           PULS    X                   ; Restore script
0CCC: 4F              CLRA                        ; OK
0CCD: 39              RTS                         ; Done

Com_19_move_ACTIVE:
; move_ACTIVE(room)
0CCE: A6 80           LDA     ,X+                 ; New room number
0CD0: 34 10           PSHS    X                   ; Hold script
0CD2: B7 01 D5        STA     CUR_ROOM            ; Store new actvie room number
0CD5: 1F 89           TFR     A,B                 ; Store ...
0CD7: 8E 15 A1        LDX     #$15A1              ; ... pointer ...
0CDA: BD 0A 60        JSR     FindSublist         ; ... to ...
0CDD: BF 01 D6        STX     CUR_ROOM_DATA       ; ... new room
0CE0: BE 01 D3        LDX     ACTIVE_OBJ_DATA     ; Active object
0CE3: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip size
0CE6: B6 01 D5        LDA     CUR_ROOM            ; New location
0CE9: A7 84           STA     ,X                  ; Move object to active room
0CEB: 35 10           PULS    X                   ; Restore script
0CED: 4F              CLRA                        ; OK
0CEE: 39              RTS                         ; Done

Com_1A_set_VAR_to_first_noun:
; set_VAR_to_first_noun()
0CEF: FE 01 C6        LDU     FIRST_NOUN_DATA     ; Copy 1st noun ...
0CF2: FF 01 C0        STU     VAR_OBJ_DATA        ; ... data pointer
0CF5: B6 01 C3        LDA     FIRST_NOUN_NUM      ; Copy 1st noun ...
0CF8: B7 01 BF        STA     VAR_OBJ_NUMBER      ; ... object number
0CFB: 4F              CLRA                        ; Z=1 for OK
0CFC: 39              RTS                         ; Done

Com_1B_set_VAR_to_second_noun:
; set_VAR_to_second_noun()
0CFD: FE 01 CC        LDU     SECOND_NOUN_DATA    ; Copy 2nd noun ...
0D00: FF 01 C0        STU     VAR_OBJ_DATA        ; ... data pointer
0D03: B6 01 C9        LDA     SECOND_NOUN_NUM     ; Copy 2nd noun ...
0D06: B7 01 BF        STA     VAR_OBJ_NUMBER      ; ... object number
0D09: 4F              CLRA                        ; Z=1 for OK
0D0A: 39              RTS                         ; Done

Com_1C_set_VAR:
; set_VAR(object)
0D0B: E6 80           LDB     ,X+                 ; Get object number from script
0D0D: 34 10           PSHS    X                   ; Hold script pointer
0D0F: F7 01 BF        STB     VAR_OBJ_NUMBER      ; Store target object number
0D12: 27 06           BEQ     $D1A                ; 0 ... no-object
0D14: BD 11 7D        JSR     $117D               ; Find object data
0D17: BF 01 C0        STX     VAR_OBJ_DATA        ; Store target object data
0D1A: 35 10           PULS    X                   ; Restore script
0D1C: 4F              CLRA                        ; Return OK
0D1D: 39              RTS                         ; Done

Com_21_execute_phrase:
; execute_phrase(phrase,first_noun,second_noun)
0D1E: FE 01 C6        LDU     FIRST_NOUN_DATA     ; 1st noun data ...
0D21: 34 40           PSHS    U                   ; ... on stack
0D23: FE 01 CC        LDU     SECOND_NOUN_DATA    ; 2nd noun data ...
0D26: 34 40           PSHS    U                   ; ... on stack
0D28: B6 01 C9        LDA     SECOND_NOUN_NUM     ; 2nd noun number
0D2B: F6 01 C3        LDB     FIRST_NOUN_NUM      ; 1st noun number
0D2E: 34 06           PSHS    B,A                 ; Hold these
0D30: B6 01 D1        LDA     PHRASE_FORM         ; Phrase number
0D33: 34 02           PSHS    A                   ; Hold it
0D35: A6 80           LDA     ,X+                 ; New temporary ...
0D37: B7 01 D1        STA     PHRASE_FORM         ; ... phrase number
0D3A: EC 81           LDD     ,X++                ; Temporary 1st and 2nd noun numbers
0D3C: F7 01 AB        STB     tmp1AB              ; Hold 2nd noun for now
0D3F: 34 10           PSHS    X                   ; Hold script
0D41: B7 01 C3        STA     FIRST_NOUN_NUM      ; Temporary 1st noun
0D44: 1F 89           TFR     A,B                 ; To B (for lookup)
0D46: 27 06           BEQ     $D4E                ; Not one ... skip
0D48: BD 11 7D        JSR     $117D               ; Lookup object in B
0D4B: BF 01 C6        STX     FIRST_NOUN_DATA     ; Temporary 1st noun data
0D4E: F6 01 AB        LDB     tmp1AB              ; Temporary 2nd noun ...
0D51: F7 01 C9        STB     SECOND_NOUN_NUM     ; ... index
0D54: 27 06           BEQ     $D5C                ; There isn't one ... skip
0D56: BD 11 7D        JSR     $117D               ; Lookup object in B
0D59: BF 01 CC        STX     SECOND_NOUN_DATA    ; Temporary 2nd noun
0D5C: 8E 2F 24        LDX     #$2F24              ; General commands
0D5F: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ID and length
0D62: BD 0C 44        JSR     ProcessCommand      ; Execute general script
0D65: 1F A8           TFR     CCR,A               ; Hold the result ...
0D67: B7 01 AB        STA     tmp1AB              ; ... for a moment
0D6A: 35 20           PULS    Y                   ;
0D6C: 35 02           PULS    A                   ;
0D6E: B7 01 D1        STA     PHRASE_FORM         ; Restore ...
0D71: 35 06           PULS    A,B                 ; ... phrase ...
0D73: F7 01 C3        STB     FIRST_NOUN_NUM      ; ... and ...
0D76: B7 01 C9        STA     SECOND_NOUN_NUM     ; ... nouns
0D79: 35 40           PULS    U                   ;
0D7B: FF 01 CC        STU     SECOND_NOUN_DATA    ; 
0D7E: 35 40           PULS    U                   ;
0D80: FF 01 C6        STU     FIRST_NOUN_DATA     ; 
0D83: 1E 12           EXG     X,Y                 ;
0D85: B6 01 AB        LDA     tmp1AB              ; 
0D88: 1F 8A           TFR     A,CCR               ; Restore result
0D8A: 39              RTS                         ; Done

; Print "YOU ARE IN" + description + objects if active object is Player
; Print just description if active object is SYSTEM.
0D8B: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Active object number
0D8E: 81 38           CMPA    #$38                ; Is this the SYSTEM object?
0D90: 27 04           BEQ     $D96                ; Yes ... keep going OK
0D92: 81 13           CMPA    #$13                ; Is it the Player object?
0D94: 26 F4           BNE     $D8A                ; No ... error out
0D96: BE 01 D6        LDX     CUR_ROOM_DATA       ; Current room script
0D99: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
0D9C: 30 01           LEAX    1,X                 ;
0D9E: C6 03           LDB     #$03                ; You are in DESCRIPTION script
0DA0: BD 0A 68        JSR     $0A68               ; Get room description
0DA3: 24 1F           BCC     $DC4                ; No room description ... print objects in room
0DA5: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Active object
0DA8: 81 38           CMPA    #$38                ; Is it the SYSTEM object?
0DAA: 27 0A           BEQ     $DB6                ; Skip leading "THIS IS" or "YOU ARE IN"
0DAC: 34 10           PSHS    X                   ; Hold script
0DAE: 8E 0E 23        LDX     #$0E23              ; "THIS IS" or "YOU ARE IN" preamble
0DB1: BD 0C 44        JSR     ProcessCommand      ; Execute preamble script
0DB4: 35 10           PULS    X                   ; Restore script
0DB6: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip script length
0DB9: BD 0C 44        JSR     ProcessCommand      ; Execute description script
0DBC: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Active object
0DBF: 81 38           CMPA    #$38                ; Is this the SYSTEM object?
0DC1: 26 01           BNE     $DC4                ; No ... print objects in room
0DC3: 39              RTS                         ; Done
;
; Print object descriptions
;
0DC4: 8E 1B 42        LDX     #$1B42              ; Object data
0DC7: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
0DCA: 34 20           PSHS    Y                   ; Hold end
0DCC: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip this object's length
0DCF: B6 01 D5        LDA     CUR_ROOM            ; Current room
0DD2: A1 84           CMPA    ,X                  ; Object in room?
0DD4: 26 41           BNE     $E17                ; No ... next object
0DD6: 30 02           LEAX    2,X                 ; Skip to data
0DD8: A6 80           LDA     ,X+                 ; Get object data
0DDA: 34 02           PSHS    A                   ; Hold value
0DDC: C6 03           LDB     #$03                ; Get description ...
0DDE: BD 0A 68        JSR     $0A68               ; ... script
0DE1: 24 32           BCC     $E15                ; No script ... skip to next object
0DE3: 34 20           PSHS    Y                   ; Hold end of object
0DE5: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
0DE8: BD 0C 44        JSR     ProcessCommand      ; Print object description
0DEB: 35 20           PULS    Y                   ; Restore end of object
0DED: 35 02           PULS    A                   ; Get back ...
0DEF: 34 02           PSHS    A                   ; ... object data
0DF1: 84 08           ANDA    #$08                ; Open/close-able?
0DF3: 27 20           BEQ     $E15                ; No ... no need for further status
0DF5: 35 02           PULS    A                   ; Get back ...
0DF7: 34 02           PSHS    A                   ; ... object data
0DF9: 84 0A           ANDA    #$0A                ; We already checked 08 bit, but OK ...
0DFB: 88 0A           EORA    #$0A                ; ... see if object is in open state
0DFD: 26 0C           BNE     $E0B                ; Yes ... skip "which is closed" and print period
0DFF: 34 20           PSHS    Y                   ; Hold end of object
0E01: 8E 0E 21        LDX     #$0E21              ; "WHICH IS CLOSED."
0E04: BD 0C 44        JSR     ProcessCommand      ; Print door closed status.
0E07: 35 20           PULS    Y                   ; Restore end of object
0E09: 20 0A           BRA     $E15                ; Next object
0E0B: 34 20           PSHS    Y                   ; Hold end of object
0E0D: 8E 0E 22        LDX     #$0E22              ; ".  "
0E10: BD 0C 44        JSR     ProcessCommand      ; Print period and 2 spaces
0E13: 35 20           PULS    Y                   ; Next object pointer
0E15: 35 02           PULS    A                   ; Discard object data
0E17: 1E 12           EXG     X,Y                 ; Move to next object
0E19: 35 20           PULS    Y                   ; End of object data
0E1B: BD 0A 99        JSR     CompareXY           ; Are we at the end of objects?
0E1E: 25 AA           BCS     $DCA                ; No ... go back and do all
0E20: 39              RTS                         ; Done
;
0E21: 8A  ; "WHICH IS CLOSED."
0E22: 8B  ; ".  "
0E23: 8C  ; "THIS IS" or "YOU ARE IN"

Com_01_is_in_pack_or_current_room:
; is_in_pack_or_current_room(object)
0E24: E6 80           LDB     ,X+                 ; Get object number from script
0E26: 34 10           PSHS    X                   ; Hold script pointer
0E28: BD 11 7D        JSR     $117D               ; Get object data
0E2B: BD 08 EB        JSR     $08EB               ; See if it is in pack or room
0E2E: 35 10           PULS    X                   ; Restore script
0E30: 39              RTS                         ; Out

Com_20_is_ACTIVE_this:
; is_ACTIVE_this(object)
0E31: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Active object
0E34: A1 80           CMPA    ,X+                 ; Matches target?
0E36: 39              RTS                         ; Done

Com_2C_set_ACTIVE:
; set_ACTIVE(object)
0E37: E6 80           LDB     ,X+                 ; Get number from script
0E39: 34 10           PSHS    X                   ; Hold script
0E3B: F7 01 D2        STB     ACTIVE_OBJ_NUM      ; Set active object number
0E3E: BD 11 7D        JSR     $117D               ; Get data
0E41: BF 01 D3        STX     ACTIVE_OBJ_DATA     ; Set active object data
0E44: 35 10           PULS    X                   ; Restore script
0E46: 4F              CLRA                        ; Return OK
0E47: 39              RTS                         ; Done

Com_02_is_owned_by_ACTIVE:
; is_owned_by_ACTIVE(object)
0E48: E6 80           LDB     ,X+                 ; Get object number from script
0E4A: 7E 10 4A        JMP     $104A               ; Make sure this object is owned by active object

Com_03_is_located:
; is_located(room,object)
; Check to see if an object is at a target location.
0E4D: EC 81           LDD     ,X++                ; Room and object
0E4F: 34 10           PSHS    X                   ; Hold script
0E51: B7 01 AB        STA     tmp1AB              ; Remember the room
0E54: BD 11 7D        JSR     $117D               ; Locate the object
0E57: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the length
0E5A: EC 81           LDD     ,X++                ; Get the room to A
0E5C: B1 01 AB        CMPA    tmp1AB              ; Is this object in the target place?
0E5F: 35 10           PULS    X                   ; Restore script
0E61: 39              RTS                         ; Out

Com_0C_fail:
; fail()
; Always fail
0E62: 8A 01           ORA     #$01                ; Set the fail flag
0E64: 39              RTS                         ; Done

Com_04_print:
; print(msg)
0E65: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Active object
0E68: 81 38           CMPA    #$38                ; Is this the SYSTEM?
0E6A: 27 19           BEQ     $E85                ; Yes ... do print
0E6C: 81 13           CMPA    #$13                ; Is this the Player?
0E6E: 26 0E           BNE     $E7E                ; No ... skip printing

Com_1F_print2:
; print2(msg)
0E70: C6 13           LDB     #$13                ; Player number
0E72: 34 10           PSHS    X                   ; Hold script
0E74: BD 11 7D        JSR     $117D               ; Look up Player
0E77: BD 08 EB        JSR     $08EB               ; Is Player in current room?
0E7A: 35 10           PULS    X                   ; Restore
0E7C: 27 07           BEQ     $E85                ; Yes ... do printing
0E7E: BD 0A 85        JSR     LoadEnd             ; Skip to ...
0E81: 1E 12           EXG     X,Y                 ; ... end of packed message.
0E83: 20 03           BRA     $E88                ; Return OK but no printing
0E85: BD 11 99        JSR     PrintPackedMessage  ; Print packed message at X
0E88: 4F              CLRA                        ; OK
0E89: 39              RTS                         ; Done

Com_07_print_room_description:
; print_room_description()
0E8A: BD 0D 8B        JSR     $0D8B               ; Print room description
0E8D: 4F              CLRA                        ; OK
0E8E: 39              RTS                         ; Done

Com_06_print_inventory:
; print_inventory()
0E8F: 34 10           PSHS    X                   ; Hold script pointer
0E91: 86 0D           LDA     #$0D                ; Print ...
0E93: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR
0E96: 8E 1B 42        LDX     #$1B42              ; Objects
0E99: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip size of objects
;
0E9C: BD 0A 99        JSR     CompareXY           ; CompareXY
0E9F: 24 2A           BCC     $ECB                ; End of list ... out
0EA1: 34 20           PSHS    Y                   ; Hold end of master list of objects
0EA3: BD 0A 83        JSR     SkipIDLoadEnd       ; Get pointer to next object
0EA6: E6 84           LDB     ,X                  ; Object location
0EA8: F1 01 D2        CMPB    ACTIVE_OBJ_NUM      ; Active object?
0EAB: 26 18           BNE     $EC5                ; No ... skip this object
0EAD: 30 02           LEAX    2,X                 ; Do ...
0EAF: A6 80           LDA     ,X+                 ; ... we print ...
0EB1: 84 20           ANDA    #$20                ; ... shortname?
0EB3: 27 10           BEQ     $EC5                ; No ... skip
0EB5: C6 02           LDB     #$02                ; Find data #2 ...
0EB7: BD 0A 68        JSR     $0A68               ; ... the short-name
0EBA: 24 09           BCC     $EC5                ; Not found ... out
0EBC: 30 01           LEAX    1,X                 ; Skip the 02 data id
0EBE: 34 20           PSHS    Y                   ; Hold next-object
0EC0: BD 11 8D        JSR     $118D               ; Print packed message and CR
0EC3: 35 20           PULS    Y                   ; Restore next-object
0EC5: 1E 12           EXG     X,Y                 ; Move to next object
0EC7: 35 20           PULS    Y                   ; End of master list
0EC9: 20 D1           BRA     $E9C                ; Do all objects
0ECB: 4F              CLRA                        ; Success
0ECC: 35 10           PULS    X                   ; Restore script pointer
0ECE: 39              RTS                         ; Done

Com_08_is_first_noun:
; is_first_noun(object)
0ECF: FE 01 C6        LDU     FIRST_NOUN_DATA     ; 1st noun data
0ED2: B6 01 C3        LDA     FIRST_NOUN_NUM      ; 1st noun number
;
0ED5: FF 01 D8        STU     nextToken           ; Hold
0ED8: 4D              TSTA                        ; Is there an object?
0ED9: 27 10           BEQ     $EEB                ; No ... error
0EDB: E6 80           LDB     ,X+                 ; Object number from script
0EDD: 34 10           PSHS    X                   ; Hold script
0EDF: BD 11 7D        JSR     $117D               ; Find object
0EE2: 1E 12           EXG     X,Y                 ; Pointer of found object to Y
0EE4: 35 10           PULS    X                   ; Restore script pointer
0EE6: 10 BC 01 D8     CMPY    nextToken           ; Object the same?
0EEA: 39              RTS                         ; Done
0EEB: 5D              TSTB                        ; B can't be 0 ... Z=0 error
0EEC: 39              RTS                         ; Done

Com_09_compare_to_second_noun:
; compare_to_second_noun(object)
0EED: FE 01 CC        LDU     SECOND_NOUN_DATA    ; 2nd noun data
0EF0: B6 01 C9        LDA     SECOND_NOUN_NUM     ; 2nd noun number
0EF3: 20 E0           BRA     $ED5                ; Do compare
        
Com_2D_is_VAR:
; is_VAR(object)
0EF5: FE 01 C0        LDU     VAR_OBJ_DATA        ; Var noun data
0EF8: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Var noun number
0EFB: 7E 0E D5        JMP     $0ED5               ; Do compare

Com_0A_compare_input_to:
; compare_input_to(phrase)
0EFE: E6 80           LDB     ,X+                 ; Compare from script ...
0F00: F1 01 D1        CMPB    PHRASE_FORM         ; ... to phrase form
0F03: 39              RTS                         ; Done

Com_0F_pick_up_VAR:
; pick_up_VAR()
; Move noun object to pack.
0F04: 34 10           PSHS    X                   ; Hold script
0F06: BE 01 C0        LDX     VAR_OBJ_DATA        ; Pointer to noun object
0F09: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
0F0C: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Back pack "location" value
0F0F: A7 84           STA     ,X                  ; Move object to pack
0F11: 4F              CLRA                        ; OK
0F12: 35 10           PULS    X                   ; Restore script
0F14: 39              RTS                         ; Done

Com_10_drop_VAR:
; drop_VAR()
; Move noun object to current room.
0F15: 34 10           PSHS    X                   ; Hold script
0F17: BE 01 C0        LDX     VAR_OBJ_DATA        ; Pointer to noun object
0F1A: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
0F1D: B6 01 D5        LDA     CUR_ROOM            ; Current room
0F20: A7 84           STA     ,X                  ; Move object to room
0F22: 35 10           PULS    X                   ; Restore script
0F24: 4F              CLRA                        ; Done
0F25: 39              RTS                         ; Out

Com_13_process_phrase_by_room_first_second:
; process_phrase_by_room_first_second()
0F26: 34 10           PSHS    X                   ; Save script
0F28: BE 01 D6        LDX     CUR_ROOM_DATA       ; Current room script
0F2B: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip id and length
0F2E: 30 01           LEAX    1,X                 ; Skip
0F30: C6 04           LDB     #$04                ; Get ...
0F32: BD 0A 68        JSR     $0A68               ; ... phrase script
0F35: 24 08           BCC     $F3F                ; No phrase script ... skip
0F37: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip id and length
0F3A: BD 0C 44        JSR     ProcessCommand      ; Execute
0F3D: 27 3B           BEQ     $F7A                ; Move passed ... OK and out
0F3F: B6 01 C9        LDA     SECOND_NOUN_NUM     ; Is there a 2nd noun?
0F42: 27 17           BEQ     $F5B                ; No ... skip
0F44: BE 01 CC        LDX     SECOND_NOUN_DATA    ; Second noun data
0F47: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ...
0F4A: 30 03           LEAX    3,X                 ; ... object header
0F4C: C6 06           LDB     #$06                ; Get "noun is second" ...
0F4E: BD 0A 68        JSR     $0A68               ; ... phrase script
0F51: 24 08           BCC     $F5B                ; None ... move on
0F53: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip header
0F56: BD 0C 44        JSR     ProcessCommand      ; Execute script
0F59: 27 1F           BEQ     $F7A                ; Script passed ... OK and out
0F5B: B6 01 C3        LDA     FIRST_NOUN_NUM      ; Is there a 1st noun?
0F5E: 26 05           BNE     $F65                ; Yes ... go do it
0F60: 35 10           PULS    X                   ; Restore script
0F62: 8A 01           ORA     #$01                ; Nobody took the phrase ..
0F64: 39              RTS                         ; .. error and and out
0F65: BE 01 C6        LDX     FIRST_NOUN_DATA     ; First noun data
0F68: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip ...
0F6B: 30 03           LEAX    3,X                 ; ... object header
0F6D: C6 07           LDB     #$07                ; Get "noun is first" ...
0F6F: BD 0A 68        JSR     $0A68               ; ... phrase script
0F72: 24 EC           BCC     $F60                ; None ... error and out
0F74: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the id and length
0F77: BD 0C 44        JSR     ProcessCommand      ; Execute script (use return)
0F7A: 35 10           PULS    X                   ; Restore script pointer
0F7C: 39              RTS                         ; Done

Com_16_print_VAR:
; print_VAR()
0F7D: 34 10           PSHS    X                   ; Save script pointer
0F7F: BE 01 C0        LDX     VAR_OBJ_DATA        ; Var noun data
0F82: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Var noun index
0F85: 20 08           BRA     $F8F                ; Print short name

Com_11_print_first_noun:
; print_first_noun()
0F87: 34 10           PSHS    X                   ; Save script pointer
0F89: BE 01 C6        LDX     FIRST_NOUN_DATA     ; 1st noun data
0F8C: B6 01 C3        LDA     FIRST_NOUN_NUM      ; 1st noun index
;
0F8F: 27 E9           BEQ     $F7A                ; Return Z=1 return
0F91: C6 13           LDB     #$13                ; User object
0F93: 34 10           PSHS    X                   ; Hold noun data
0F95: BD 11 7D        JSR     $117D               ; Lookup user object
0F98: BD 08 EB        JSR     $08EB               ; User in current room?
0F9B: 35 10           PULS    X                   ; Restore noun data
0F9D: 26 11           BNE     $FB0                ; Not in current room ... skip print
0F9F: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip object ...
0FA2: 30 03           LEAX    3,X                 ; ... header
0FA4: C6 02           LDB     #$02                ; Get object ...
0FA6: BD 0A 68        JSR     $0A68               ; ... short name
0FA9: 24 05           BCC     $FB0                ; No short name ... out with OK
0FAB: 30 01           LEAX    1,X                 ; Skip the 2
0FAD: BD 11 99        JSR     PrintPackedMessage  ; Print packed message at X
0FB0: 35 10           PULS    X                   ; Restore script
0FB2: 4F              CLRA                        ; Return ...
0FB3: 39              RTS                         ; ... OK

Com_12_print_second_noun:
; print_second_noun()
0FB4: 34 10           PSHS    X                   ; Save script pointer
0FB6: BE 01 CC        LDX     SECOND_NOUN_DATA    ; 2nd noun data
0FB9: B6 01 C9        LDA     SECOND_NOUN_NUM     ; 2nd noun index
0FBC: 20 D1           BRA     $F8F                ; Print short name

Com_15_check_VAR:
; check_VAR(bits)
; Check target bits in an object.
0FBE: 34 10           PSHS    X                   ; Hold script pointer
0FC0: BE 01 C0        LDX     VAR_OBJ_DATA        ; Input object pointer
0FC3: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Var object number
0FC6: 27 0E           BEQ     $FD6                ; No object ... return error
0FC8: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the pointer-to-next object
0FCB: 30 02           LEAX    2,X                 ; Skip to data byte
0FCD: A6 84           LDA     ,X                  ; Get the object data
0FCF: 35 10           PULS    X                   ; Restore the script
0FD1: A4 84           ANDA    ,X                  ; Mask off all but target bits
0FD3: A8 80           EORA    ,X+                 ; Check target bits  (a 1 result in a pass)
0FD5: 39              RTS                         ; Done
;
0FD6: 35 10           PULS    X                   ; Restore script pointer
0FD8: 30 01           LEAX    1,X                 ; Skip data
0FDA: 8A 01           ORA     #$01                ; Set error
0FDC: 39              RTS                         ; Return

Com_29_toggle_open_VAR:
; toggle_open_VAR()
; Toggle open/closed bit on object.
0FDD: 34 10           PSHS    X                   ; Hold script pointer
0FDF: BE 01 C0        LDX     VAR_OBJ_DATA        ; Input object pointer
0FE2: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Var object number
0FE5: 10 27 FF 77     LBEQ    $0F60               ; No object ... return error
0FE9: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the pointer-to-next object
0FEC: 30 02           LEAX    2,X                 ; Skip to data byte
0FEE: A6 84           LDA     ,X                  ; Get the value
0FF0: 88 02           EORA    #$02                ; Flip "open/closed" bit
0FF2: A7 84           STA     ,X                  ; Store the new value
0FF4: 35 10           PULS    X                   ; Restore script
0FF6: 4F              CLRA                        ; OK
0FF7: 39              RTS                         ; Done

Com_2A_toggle_lock_VAR:
; toggle_lock_VAR()
; Toggle locked/unlocked bit on object.
0FF8: 34 10           PSHS    X                   ; Hold script pointer
0FFA: BE 01 C0        LDX     VAR_OBJ_DATA        ; Input object pointer
0FFD: B6 01 BF        LDA     VAR_OBJ_NUMBER      ; Var object number
1000: 10 27 FF 5C     LBEQ    $0F60               ; No object ... return error
1004: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip the pointer-to-next object
1007: 30 02           LEAX    2,X                 ; Skip to data byte
1009: A6 84           LDA     ,X                  ; Get the value
100B: 88 01           EORA    #$01                ; Flip "locked/unlocked" bit
100D: A7 84           STA     ,X                  ; Store the new value
100F: 35 10           PULS    X                   ; Restore script
1011: 4F              CLRA                        ; OK
1012: 39              RTS                         ; Done

Com_14_execute_and_reverse_status:
; execute_and_reverse_status:
1013: BD 0C 44        JSR     ProcessCommand      ; Execute command
1016: 26 03           BNE     $101B               ; Command returned a non-zero ... return zero
1018: 8A 01           ORA     #$01                ; Command returned a zero ... return non-zerio
101A: 39              RTS                         ; Done
101B: 4F              CLRA                        ; Zero
101C: 39              RTS                         ; Done

Com_17_move_to:
; move_to(object,room)
101D: E6 80           LDB     ,X+                 ; Get object number
101F: 34 10           PSHS    X                   ; Hold script
1021: BD 11 7D        JSR     $117D               ; Find object
1024: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip over length
1027: 35 20           PULS    Y                   ; Script to Y
1029: A6 A0           LDA     ,Y+                 ; Get new location
102B: A7 84           STA     ,X                  ; Set object's new location
102D: 1E 12           EXG     X,Y                 ; X now past data
102F: 4F              CLRA                        ; OK
1030: 39              RTS                         ; Done

Com_18_is_VAR_owned_by_ACTIVE:
; is_VAR_owned_by_ACTIVE()
1031: 34 10           PSHS    X                   ; Save script pointer
1033: BE 01 C0        LDX     VAR_OBJ_DATA        ; Var object data
1036: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
1039: E6 84           LDB     ,X                  ; Location
103B: 35 10           PULS    X                   ; Restore script
103D: 10 27 F8 CF     LBEQ    $0910               ; Out-of-game ... error and out
1041: F1 01 D2        CMPB    ACTIVE_OBJ_NUM      ; Is this the active object?
1044: 27 EA           BEQ     $1030               ; Yes ... return OK
1046: C5 80           BITB    #$80                ; Test upper bit
1048: 26 E6           BNE     $1030               ; It is in a room ... error and out
;
104A: 34 10           PSHS    X                   ; Hold script
104C: BD 11 7D        JSR     $117D               ; Look up owner object
104F: 20 E5           BRA     $1036               ; Check again

Every Turn

; Execute any turn-scripts on the objects
EveryTurn:  
1051: 8E 1B 42        LDX     #$1B42              ; Start of object data
1054: 7F 01 D0        CLR     tmp1DO              ; Object number
1057: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
105A: BD 0A 99        JSR     CompareXY           ; End of objects?
105D: 24 D1           BCC     $1030               ; Yes ... out
105F: 7C 01 D0        INC     tmp1DO              ; Next object number
1062: 34 20           PSHS    Y                   ; Hold end-of-objects
1064: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
1067: A6 84           LDA     ,X                  ; Location
1069: B7 01 AB        STA     tmp1AB              ; Hold
106C: 34 20           PSHS    Y                   ; End of object
106E: A6 84           LDA     ,X                  ; Location
1070: 27 42           BEQ     $10B4               ; If it is out-of-game it doesn't get a turn
1072: 30 03           LEAX    3,X                 ; Skip data
1074: C6 08           LDB     #$08                ; Turn-script
1076: BD 0A 68        JSR     $0A68               ; Find turn script
1079: 24 39           BCC     $10B4               ; Nothing to do ... next object
107B: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
107E: 34 10           PSHS    X                   ; Hold pointer
1080: BD 13 19        JSR     Com_2B_generate_random; Generate random number
1083: F6 01 D0        LDB     tmp1DO              ; Current object number ...
1086: F7 01 D2        STB     ACTIVE_OBJ_NUM      ; ... is now the active object
1089: BD 11 7D        JSR     $117D               ; Get its data pointer
108C: BF 01 D3        STX     ACTIVE_OBJ_DATA     ; Hold pointer to active object data
108F: F6 01 AB        LDB     tmp1AB              ; Object's location
1092: 5D              TSTB                        ; Check upper bit
1093: 2B 0E           BMI     $10A3               ; If in a room ... go handle
1095: BD 11 7D        JSR     $117D               ; Get object's owner
1098: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
109B: E6 84           LDB     ,X                  ; Get owner location
109D: 26 F3           BNE     $1092               ; Still in game ... find room location of owner chain
109F: 35 10           PULS    X                   ; Restore pointer
10A1: 20 11           BRA     $10B4               ; Next object
10A3: F7 01 D5        STB     CUR_ROOM            ; Objects location
10A6: 8E 15 A1        LDX     #$15A1              ; Get room ...
10A9: BD 0A 60        JSR     FindSublist         ; ... scripts for object
10AC: BF 01 D6        STX     CUR_ROOM_DATA       ; Hold
10AF: 35 10           PULS    X                   ; Restore turn-script
10B1: BD 0C 44        JSR     ProcessCommand      ; Execute turn-script
10B4: 35 10           PULS    X                   ; Restore
10B6: 35 20           PULS    Y                   ; Restore
10B8: 20 A0           BRA     $105A               ; Next object

Com_05_is_less_equal_last_random:
; is_less_equal_last_random(value)
10BA: B6 13 B8        LDA     $13B8               ; Random value
10BD: A1 80           CMPA    ,X+                 ; Compare random value to script
10BF: 25 05           BCS     $10C6               ; If less than ... OK
10C1: 27 03           BEQ     $10C6               ; If the same ... OK
10C3: 8A 01           ORA     #$01                ; Greater than ... FAIL
10C5: 39              RTS                         ; Done
10C6: 4F              CLRA                        ; Less than or equal ... OK
10C7: 39              RTS                         ; Done

Com_1D_attack_VAR:
; attack_VAR(points)
10C8: A6 80           LDA     ,X+                 ; Get attack value
10CA: B7 01 AB        STA     tmp1AB              ; Hold attack value
10CD: 34 10           PSHS    X                   ; Hold script
10CF: BE 01 C0        LDX     VAR_OBJ_DATA        ; Target object data
10D2: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
10D5: 30 03           LEAX    3,X                 ; Skip object data
10D7: 34 10           PSHS    X                   ; Hold X ...
10D9: 34 20           PSHS    Y                   ; ... and Y
10DB: C6 09           LDB     #$09                ; Get target's ...
10DD: BD 0A 68        JSR     $0A68               ; ... combat info
10E0: 24 29           BCC     $110B               ; Not found. Do nothing (return OK)
10E2: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
10E5: 30 01           LEAX    1,X                 ; Hit points
10E7: A6 84           LDA     ,X                  ; Hit points
10E9: B0 01 AB        SUBA    tmp1AB              ; Subtract attack from hit points
10EC: 24 01           BCC     $10EF               ; Not negative ... keep it
10EE: 4F              CLRA                        ; Floor the hit points
10EF: A7 84           STA     ,X                  ; New hit points
10F1: 35 20           PULS    Y                   ; Restore ...
10F3: 35 10           PULS    X                   ; ... X and Y
10F5: 4D              TSTA                        ; Hit points zero?
10F6: 27 04           BEQ     $10FC               ; Yes ... object dies
10F8: 35 10           PULS    X                   ; Restore list
10FA: 4F              CLRA                        ; Return OK
10FB: 39              RTS                         ; Done

;Handle object being killed
10FC: C6 0A           LDB     #$0A                ; Object being killed script
10FE: BD 0A 68        JSR     $0A68               ; Find a script for handling being killed
1101: 24 F5           BCC     $10F8               ; Not found ... nothing happens (return OK)
1103: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip id and length
1106: BD 0C 44        JSR     ProcessCommand      ; Execute "being killed" script
1109: 20 ED           BRA     $10F8               ; Done (return OK)

110B: 35 20           PULS    Y                   ; Reset ...
110D: 35 10           PULS    X                   ; ... stack
110F: 20 E7           BRA     $10F8               ; Return OK

Com_1E_swap:
; swap(object_a,object_b)
1111: E6 80           LDB     ,X+                 ; 1st object number
1113: A6 80           LDA     ,X+                 ; 2nd object
1115: B7 01 AB        STA     tmp1AB              ; Hold second object
1118: 34 10           PSHS    X                   ; Hold script
111A: BD 11 7D        JSR     $117D               ; Look up object
111D: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
1120: 1F 13           TFR     X,U                 ; 1st object pointer to U
1122: F6 01 AB        LDB     tmp1AB              ; 2nd object
1125: BD 11 7D        JSR     $117D               ; Look up object
1128: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
112B: A6 84           LDA     ,X                  ; Swap ...
112D: E6 C4           LDB     ,U                  ; ... location ...
112F: A7 C4           STA     ,U                  ; ... of ...
1131: E7 84           STB     ,X                  ; ... objects
1133: 35 10           PULS    X                   ; Restore script
1135: 4F              CLRA                        ; OK
1136: 39              RTS                         ; Done

1137: 35 10           PULS    X                   ; Restore script pointer
1139: 4F              CLRA                        ; Z=1 OK
113A: 39              RTS                         ; Done

Com_23_heal_VAR:
; heal_VAR(points)
113B: A6 80           LDA     ,X+                 ; Get healing value
113D: B7 01 AB        STA     tmp1AB              ; Hold it
1140: 34 10           PSHS    X                   ; Hold script
1142: BE 01 C0        LDX     VAR_OBJ_DATA        ; Var object data
1145: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
1148: 30 03           LEAX    3,X                 ; Skip data
114A: C6 09           LDB     #$09                ; Get object ...
114C: BD 0A 68        JSR     $0A68               ; ... hit points
114F: 24 E6           BCC     $1137               ; No entry ... do nothing (but OK)
1151: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip length
1154: EC 84           LDD     ,X                  ; Get HP info
1156: FB 01 AB        ADDB    tmp1AB              ; Add to health
1159: B7 01 AB        STA     tmp1AB              ; Max value
115C: F1 01 AB        CMPB    tmp1AB              ; Over the max?
115F: 25 03           BCS     $1164               ; No ... keep it
1161: F6 01 AB        LDB     tmp1AB              ; Use max value
1164: 30 01           LEAX    1,X                 ; Store ...
1166: E7 84           STB     ,X                  ; ... new health
1168: 20 CD           BRA     $1137               ; OK out

Com_28_save_game:
; save_game()
116A: B6 01 D2        LDA     ACTIVE_OBJ_NUM      ; Active object
116D: 81 13           CMPA    #$13                ; Is this the Player?
116F: 26 08           BNE     $1179               ; No ... ignore
1171: 7A 01 E3        DEC     tillMORE            ; Decrement rows-till-more-prompt
1174: 86 0D           LDA     #$0D                ; Print ...
1176: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR
1179: 4F              CLRA                        ; OK
117A: 39              RTS                         ; Done

Com_24_endless_loop:
; endless_loop()
117B: 20 FE           BRA     Com_24_endless_loop ; Endless loop

; Find object index in B
117D: 8E 1B 42        LDX     #$1B42              ; Start of objects
1180: BD 0A 83        JSR     SkipIDLoadEnd       ; Skip end
1183: 5A              DECB                        ; Found desired object?
1184: 27 F4           BEQ     $117A               ; Yes ... out OK
1186: BD 0A 83        JSR     SkipIDLoadEnd       ; Length of object
1189: 1E 12           EXG     X,Y                 ; Next object
118B: 20 F6           BRA     $1183               ; Keep looking

; Print packed message and CR
118D: BD 11 99        JSR     PrintPackedMessage  ; Print packed message at X
1190: 86 0D           LDA     #$0D                ; Print ...
1192: BD 11 D5        JSR     PrintCharacterAutoWrap; ... CR
1195: 7A 01 E3        DEC     tillMORE            ; Rows till MORE PROMPT
1198: 39              RTS                         ; Done

PrintPackedMessage:
; X points to compressed string. First byte (or two) is the length.
1199: 4F              CLRA                        ; Assume MSB is 0
119A: E6 84           LDB     ,X                  ; Get length
119C: C5 80           BITB    #$80                ; Is it single byte length?
119E: 27 04           BEQ     $11A4               ; Yes ... use D
11A0: A6 80           LDA     ,X+                 ; Get the ...
11A2: 84 7F           ANDA    #$7F                ; ... MSB and ...
11A4: E6 80           LDB     ,X+                 ; ... LSB
11A6: FD 01 AB        STD     tmp1AB              ; Store byte count
11A9: FC 01 AB        LDD     tmp1AB              ; Number of bytes left in message
11AC: 10 83 00 02     CMPD    #$0002              ; Less than 2?
11B0: 25 0E           BCS     $11C0               ; Yes ... these aren't compressed
11B2: BD 12 59        JSR     UnpackBytes         ; Decompress and print two bytes pointed to by X
11B5: FC 01 AB        LDD     tmp1AB              ; Get byte count
11B8: 83 00 02        SUBD    #$0002              ; Handled 2
11BB: FD 01 AB        STD     tmp1AB              ; Store count
11BE: 20 E9           BRA     $11A9               ; Keep decompressing
11C0: 5D              TSTB                        ; Any characters on the end to print?
11C1: 27 0C           BEQ     $11CF               ; No ... skip
11C3: A6 80           LDA     ,X+                 ; Get character
11C5: 34 04           PSHS    B                   ; Hold count
11C7: BD 11 D5        JSR     PrintCharacterAutoWrap; Print character
11CA: 35 04           PULS    B                   ; Restore count
11CC: 5A              DECB                        ; Decrement count
11CD: 20 F1           BRA     $11C0               ; Keep going
11CF: 86 20           LDA     #$20                ; Print ...
11D1: BD 11 D5        JSR     PrintCharacterAutoWrap; ... space on end
11D4: 39              RTS                         ; Done

Print Character

PrintCharacterAutoWrap:
; Print character in A to screen. This handles auto word-wrapping and
; auto MORE prompting.
;
11D5: F6 01 BE        LDB     lastChar            ; Last printed character
11D8: C1 20           CMPB    #$20                ; Last printed a space?
11DA: 26 16           BNE     $11F2               ; No ... skip on
11DC: 81 20           CMPA    #$20                ; Printing a second space now?
11DE: 27 52           BEQ     $1232               ; Yes ... just skip it (MORE and out)
11E0: 81 2E           CMPA    #$2E                ; A '.' ?
11E2: 27 08           BEQ     $11EC               ; Yes. Ignore leading space.
11E4: 81 3F           CMPA    #$3F                ; A '?' ?
11E6: 27 04           BEQ     $11EC               ; Yes. Ignore leading space.
11E8: 81 21           CMPA    #$21                ; A '!' ?
11EA: 26 06           BNE     $11F2               ; Yes. Ignore leading space.
11EC: DE 88           LDU     <printCursor        ; Back screen ...
11EE: 33 5F           LEAU    -1,U                ; ... pointer up ...
11F0: DF 88           STU     <printCursor        ; ... over ignored space
11F2: B7 01 BE        STA     lastChar            ; Store last printed character
11F5: AD 9F A0 02     JSR     [CHROUT]            ; Output a character
11F9: 96 89           LDA     <printCursor+1      ; LSB of screen position (we know MSB is 4 or 5)
11FB: 81 FE           CMPA    #$FE                ; Have we reached the end of the screen?
11FD: 25 33           BCS     $1232               ; No ... handle any MORE and out
11FF: DE 88           LDU     <printCursor        ; Cursor position
1201: 33 C8 DF        LEAU    $-21,U              ; Back up to end of current row (where it will be after CR)
1204: 86 0D           LDA     #$0D                ; CR ...
1206: AD 9F A0 02     JSR     [CHROUT]            ; ... to screen
120A: 7A 01 E3        DEC     tillMORE            ; Rows left until MORE is needed
120D: A6 C4           LDA     ,U                  ; Find the ...
120F: 81 60           CMPA    #$60                ; ... space before ...
1211: 27 04           BEQ     $1217               ; ... the last ...
1213: 33 5F           LEAU    -1,U                ; ... word ...
1215: 20 F6           BRA     $120D               ; ... on the line
1217: 33 41           LEAU    1,U                 ; Now pointing to the last word on the line
1219: A6 C4           LDA     ,U                  ; Get next character in buffer
121B: 81 60           CMPA    #$60                ; Is it a space?
121D: 27 13           BEQ     $1232               ; Yes ... all done
121F: C6 60           LDB     #$60                ; Store a space ...
1221: E7 C4           STB     ,U                  ; ... over this on the screen
1223: 81 60           CMPA    #$60                ; Make sure ...
1225: 25 02           BCS     $1229               ; ... upper ...
1227: 80 40           SUBA    #$40                ; ... case
1229: B7 01 BE        STA     lastChar            ; Store last printed character
122C: AD 9F A0 02     JSR     [CHROUT]            ; Output a character
1230: 20 E5           BRA     $1217               ; Move overhang to next line
1232: 7D 01 E3        TST     tillMORE            ; Time for a MORE prompt?
1235: 2B 01           BMI     MorePrompt          ; Yes ... do it and out
1237: 39              RTS                         ; Done

MorePrompt:
; Print MORE and wait for key
;
1238: B6 01 BE        LDA     lastChar            ; Last printed character
123B: 34 76           PSHS    U,Y,X,B,A           ; Hold
123D: 86 0D           LDA     #$0D                ; Reset MORE ...
123F: B7 01 E3        STA     tillMORE            ; ... row count
1242: 8E 13 DB        LDX     #$13DB              ; " MORE" message
1245: E6 80           LDB     ,X+                 ; Length
1247: BD 11 C0        JSR     $11C0               ; Print message
124A: BD 0B 6C        JSR     GetKey              ; Get a key
124D: 9E 88           LDX     <printCursor        ; back pointer ...
124F: 30 18           LEAX    -8,X                ; ... up 8 over ...
1251: 9F 88           STX     <printCursor        ; ... MORE prompt
1253: 35 76           PULS    A,B,X,Y,U           ; Restore
1255: B7 01 BE        STA     lastChar            ; Restore last printed character
1258: 39              RTS                         ; Done

Unpack Bytes

UnpackBytes:
; Unpack three characters stored in 2 bytes pointed to by X and print to screen.
; Every 2 bytes holds 3 characters. Each character can be from 0 to 39.
; 40*40*40 = 64000 ... totally ingenious.
;
1259: 10 8E 13 15     LDY     #$1315              ;
125D: C6 03           LDB     #$03                ;
125F: F7 13 12        STB     $1312               ; 
1262: A6 80           LDA     ,X+                 ;
1264: B7 01 DE        STA     tmp1DE              ; 
1267: A6 80           LDA     ,X+                 ;
1269: B7 01 DD        STA     tmp1DD              ; 
126C: 31 23           LEAY    3,Y                 ;
126E: CE 00 28        LDU     #$0028              ;
1271: FF 13 13        STU     $1313               ; 
1274: 86 11           LDA     #$11                ;
1276: B7 01 DA        STA     tmp1DA              ; 
1279: 7F 01 DB        CLR     tmp1DB              ; 
127C: 7F 01 DC        CLR     tmp1DC              ; 
127F: 79 01 DE        ROL     tmp1DE              ; 
1282: 79 01 DD        ROL     tmp1DD              ; 
1285: 7A 01 DA        DEC     tmp1DA              ; 
1288: 27 39           BEQ     $12C3               ; 
128A: 86 00           LDA     #$00                ;
128C: 89 00           ADCA    #$00                ; This algorithm is identical to the decompression
128E: 78 01 DC        ASL     tmp1DC              ; used in Pyramid2000. Check the comments there for
1291: 79 01 DB        ROL     tmp1DB              ; more detail.
1294: BB 01 DC        ADDA    tmp1DC              ; 
1297: B0 13 14        SUBA    $1314               ; 
129A: B7 01 E0        STA     tmp1EO              ; 
129D: B6 01 DB        LDA     tmp1DB              ; 
12A0: B2 13 13        SBCA    $1313               ; 
12A3: B7 01 DF        STA     tmp1DF              ; 
12A6: 24 0B           BCC     $12B3               ; 
12A8: FC 01 DF        LDD     tmp1DF              ; 
12AB: F3 13 13        ADDD    $1313               ; 
12AE: FD 01 DB        STD     tmp1DB              ; 
12B1: 20 06           BRA     $12B9               ; 
12B3: FC 01 DF        LDD     tmp1DF              ; 
12B6: FD 01 DB        STD     tmp1DB              ; 
; Compliment C flag and continue
12B9: 25 04           BCS     $12BF               ; 
12BB: 1A 01           ORCC    #$01                ;
12BD: 20 C0           BRA     $127F               ; 
12BF: 1C FE           ANDCC   #$FE                ;
12C1: 20 BC           BRA     $127F               ; 
; Process the result of the division
12C3: FC 01 DB        LDD     tmp1DB              ; 
12C6: C3 12 EA        ADDD    #$12EA              ;
12C9: 1F 03           TFR     D,U                 ;
12CB: A6 C4           LDA     ,U                  ;
12CD: A7 A2           STA     ,-Y                 ;
12CF: 7A 13 12        DEC     $1312               ; 
12D2: 26 9A           BNE     $126E               ; 
12D4: 10 8E 13 15     LDY     #$1315              ;
12D8: C6 03           LDB     #$03                ;
12DA: A6 A0           LDA     ,Y+                 ;
12DC: 34 04           PSHS    B                   ;
12DE: BD 11 D5        JSR     PrintCharacterAutoWrap; Print character
12E1: 35 04           PULS    B                   ;
12E3: 5A              DECB                        ;
12E4: 26 F4           BNE     $12DA               ; 
12E6: FC 01 AB        LDD     tmp1AB              ; 
12E9: 39              RTS                         ;
;
; Character translation table
;     ?  !  2  .  "  '  <  >  /  0  3  A  B  C  D  E
12EA: 3F 21 32 20 22 27 3C 3E 2F 30 33 41 42 43 44 45
;     F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U
12FA: 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55
;     V  W  X  Y  Z  -  ,  .
130A: 56 57 58 59 5A 2D 2C 2E            

1312: 00 00 00 00 00 00 00 ; Temporaries for decompression algorithm above
   
Com_2B_generate_random:
; generate_random()
1319: 34 14           PSHS    X,B                 ; Random number generator. Uses seed at 13B8.
131B: 8E 13 B8        LDX     #$13B8              ;
131E: C6 17           LDB     #$17                ;
1320: A6 84           LDA     ,X                  ;
1322: 30 01           LEAX    1,X                 ;
1324: 1A 01           ORCC    #$01                ;
1326: 84 06           ANDA    #$06                ;
1328: 27 07           BEQ     $1331               ; 
132A: 81 06           CMPA    #$06                ;
132C: 1A 01           ORCC    #$01                ;
132E: 27 01           BEQ     $1331               ; 
1330: 4F              CLRA                        ;
1331: A6 84           LDA     ,X                  ;
1333: 25 03           BCS     $1338               ; 
1335: 44              LSRA                        ;
1336: 20 03           BRA     $133B               ; 
1338: 44              LSRA                        ;
1339: 8A 80           ORA     #$80                ;
133B: A7 84           STA     ,X                  ;
133D: 30 1F           LEAX    -1,X                ;
133F: A6 84           LDA     ,X                  ;
1341: 25 03           BCS     $1346               ; 
1343: 44              LSRA                        ;
1344: 20 03           BRA     $1349               ; 
1346: 44              LSRA                        ;
1347: 8A 80           ORA     #$80                ;
1349: 84 FE           ANDA    #$FE                ;
134B: A7 84           STA     ,X                  ;
134D: 5A              DECB                        ;
134E: 26 D2           BNE     $1322               ; 
1350: 4F              CLRA                        ;
1351: 35 14           PULS    B,X                 ;
1353: 39              RTS                         ;

Data Section

1354: 94 ; Init game
1355: A3 ; Start of game splash (YOU FEEL AS THOUGH ...)
1356: AC ; Script for command-given-to-someone

Command Jump Table

CommandJumpTable: 
1357: 0C C2  ; 00 move_ACTIVE_and_look(room)
1359: 0E 24  ; 01 is_in_pack_or_current_room(object)
135B: 0E 48  ; 02 is_owned_by_ACTIVE(object)
135D: 0E 4D  ; 03 is_located(room,object)
135F: 0E 65  ; 04 print(msg)
1361: 10 BA  ; 05 is_less_equal_last_random(value)
1363: 0E 8F  ; 06 print_inventory()
1365: 0E 8A  ; 07 print_room_description()
1367: 0E CF  ; 08 is_first_noun(object)
1369: 0E ED  ; 09 compare_to_second_noun(object)
136B: 0E FE  ; 0A compare_input_to(phrase)
136D: 0C 99  ; 0B switch:
136F: 0E 62  ; 0C fail()
1371: 0C 68  ; 0D while_pass:
1373: 0C 80  ; 0E while_fail:
1375: 0F 04  ; 0F pick_up_VAR()
1377: 0F 15  ; 10 drop_VAR()
1379: 0F 87  ; 11 print_first_noun()
137B: 0F B4  ; 12 print_second_noun()
137D: 0F 26  ; 13 process_phrase_by_room_first_second()
137F: 10 13  ; 14 execute_and_reverse_status:
1381: 0F BE  ; 15 check_VAR(bits)
1383: 0F 7D  ; 16 print_VAR()
1385: 10 1D  ; 17 move_to(object,room)
1387: 10 31  ; 18 is_VAR_owned_by_ACTIVE()
1389: 0C CE  ; 19 move_ACTIVE(room)
138B: 0C EF  ; 1A set_VAR_to_first_noun()
138D: 0C FD  ; 1B set_VAR_to_second_noun()
138F: 0D 0B  ; 1C set_VAR(object)
1391: 10 C8  ; 1D attack_VAR(points)
1393: 11 11  ; 1E swap(object_a,object_b)
1395: 0E 70  ; 1F print2(msg)
1397: 0E 31  ; 20 is_ACTIVE_this(object)
1399: 0D 1E  ; 21 execute_phrase(phrase,first_noun,second_noun)
139B: 11 6A  ; 22 is_less_equal_health(points)
139D: 11 3B  ; 23 heal_VAR(points)
139F: 11 7B  ; 24 endless_loop()
13A1: 11 6A  ; 25 restart_game()
13A3: 11 6A  ; 26 print_score()
13A5: 11 6A  ; 27 load_game()
13A7: 11 6A  ; 28 save_game()
13A9: 0F DD  ; 29 toggle_open_VAR()
13AB: 0F F8  ; 2A toggle_lock_VAR()
13AD: 13 19  ; 2B generate_random()
13AF: 0E 37  ; 2C set_ACTIVE(object)
13B1: 0E F5  ; 2D is_VAR(object)

; Multi-verb replacement list (code doesn't work that uses this anyway)
13B3: 00  ; List is the length. List is pointed to by 13B2 which is ignored

; Random number seed
13B4: 12 23 44 1D     
13B8: 27 4D 2D 13    

FeedbackPrompts:
; "?VERB?"
13BC: 06 3F 56 45 52 42 3F          
;
; "?WHAT?"
13C3: 06 3F 57 48 41 54 3F              
;
; "?WHICH?"
13CA: 07 3F 57 48 49  43 48 3F               
;
; "?PHRASE?"
13D2: 08 3F 50 48 52 41 53 45 3F       
;
; "-<MORE>"
13DB: 07 2D  3C 4D 4F 52 45 3E                             

Phrase List

In TRS80 but not COCO (TRS80 has everything):

"0C: LOOK * UNDER u......."
"1A: ?? * * *"
"1B: LOOK * AROUND u......."
"1C: LOOK * BEHIND u......."
"1D: LOOK * OUT *"
"36: CLIMB * IN *"
"36: GO * IN u......."
"36: CLIMB * IN u......."
"36: JUMP * IN u......."
"37: CLIMB * OUT *"
"37: CLIMB * OUT u......."
"37: GO * OUT u......."
"37: JUMP * OUT u......."
"38: CLIMB * UNDER u......."
"38: GO * UNDER u......."
"39: THROW u....... IN u......."
PhraseList: 
13E3: 05 00 00 00 01  ; 01: NORTH   *         *       *
13E8: 06 00 00 00 02  ; 02: SOUTH   *         *       *
13ED: 07 00 00 00 03  ; 03: EAST    *         *       *
13F2: 08 00 00 00 04  ; 04: WEST    *         *       *
13F7: 09 00 20 00 05  ; 05: GET     ..C.....  *       *
13FC: 09 02 20 20 43  ; 43: GET     ..C.....  WITH    ..C.....
1401: 34 07 00 80 05  ; 05: PICK    *         UP      u.......
1406: 34 07 80 00 05  ; 05: PICK    u.......  UP      *
140B: 0A 00 20 00 06  ; 06: DROP    ..C.....  *       *
1410: 0A 05 80 80 0F  ; 0F: DROP    u.......  IN      u.......
1415: 0B 00 00 00 07  ; 07: INVENT  *         *       *
141A: 04 02 10 40 09  ; 09: ATTACK  ...P....  WITH    .v......
141F: 04 00 10 00 09  ; 09: ATTACK  ...P....  *       *
1424: 0C 00 00 00 0A  ; 0A: LOOK    *         *       *
1429: 0C 03 00 80 0B  ; 0B: LOOK    *         AT      u.......
142E: 0C 05 00 80 10  ; 10: LOOK    *         IN      u.......
1433: 03 03 40 10 0D  ; 0D: THROW   .v......  AT      ...P....
1438: 03 08 00 20 06  ; 06: THROW   *         DOWN    ..C.....
143D: 03 01 80 10 0E  ; 0E: THROW   u.......  TO      ...P....
1442: 0D 01 80 10 0E  ; 0E: GIVE    u.......  TO      ...P....
1447: 0E 00 80 00 0B  ; 0B: EXAMIN  u.......  *       *
144C: 0E 05 00 80 0B  ; 0B: EXAMIN  *         IN      u.......
1451: 0F 00 02 00 11  ; 11: OPEN    ......O.  *       *
1456: 0F 02 02 80 3A  ; 3A: OPEN    ......O.  WITH    u.......
145B: 38 00 08 00 40  ; 40: CLOSE   ....A...  *       *
1460: 39 02 08 80 41  ; 41: LOCK    ....A...  WITH    u.......
1465: 3A 02 01 80 42  ; 42: UNLOCK  .......L  WITH    u.......
146A: 10 00 80 00 12  ; 12: PULL    u.......  *       *
146F: 10 08 80 00 12  ; 12: PULL    u.......  DOWN    *
1474: 10 08 00 80 12  ; 12: PULL    *         DOWN    u.......
1479: 10 06 00 80 05  ; 05: PULL    *         OUT     u.......
147E: 10 06 80 00 05  ; 05: PULL    u.......  OUT     *
1483: 10 07 00 80 2D  ; 2D: PULL    *         UP      u.......
1488: 10 07 80 00 2D  ; 2D: PULL    u.......  UP      *
148D: 12 00 80 00 15  ; 15: EAT     u.......  *       *
1492: 15 00 80 00 17  ; 17: CLIMB   u.......  *       *
1497: 15 07 00 80 17  ; 17: CLIMB   *         UP      u.......
149C: 15 08 00 80 17  ; 17: CLIMB   *         DOWN    u.......
14A1: 15 09 00 80 17  ; 17: CLIMB   *         OVER    u.......
14A6: 15 0C 00 80 17  ; 17: CLIMB   *         ON      u.......
14AB: 05 01 00 00 01  ; 01: NORTH   *         TO      *
14B0: 06 01 00 00 02  ; 02: SOUTH   *         TO      *
14B5: 07 01 00 00 03  ; 03: EAST    *         TO      *
14BA: 08 01 00 00 04  ; 04: WEST    *         TO      *
14BF: 0A 08 00 20 06  ; 06: DROP    *         DOWN    ..C.....
14C4: 0A 08 20 00 06  ; 06: DROP    ..C.....  DOWN    *
14C9: 0A 0A 20 80 06  ; 06: DROP    ..C.....  BEHIND  u.......
14CE: 0A 04 20 80 06  ; 06: DROP    ..C.....  UNDER   u.......
14D3: 0A 0C 20 80 06  ; 06: DROP    ..C.....  ON      u.......
14D8: 0C 07 00 00 0A  ; 0A: LOOK    *         UP      *
14DD: 0C 08 00 00 0A  ; 0A: LOOK    *         DOWN    *
14E2: 0C 09 80 00 0B  ; 0B: LOOK    u.......  OVER    *
14E7: 0C 09 00 80 0A  ; 0A: LOOK    *         OVER    u.......
14EC: 0C 0B 00 00 0A  ; 0A: LOOK    *         AROUND  *
14F1: 0C 0A 00 00 0A  ; 0A: LOOK    *         BEHIND  *
14F6: 32 00 00 00 21  ; 21: PLUGH   *         *       *
14FB: 2B 00 00 00 22  ; 22: SCREAM  *         *       *
1500: 2D 00 00 00 23  ; 23: QUIT    *         *       *
1505: 3B 00 00 00 44  ; 44: HELLO   *         *       *
150A: 3B 00 10 00 45  ; 45: HELLO   ...P....  *       *
150F: 3B 01 00 00 44  ; 44: HELLO   *         TO      *
1514: 3B 01 00 10 45  ; 45: HELLO   *         TO      ...P....
1519: 3C 00 00 00 46  ; 46: WHAT    *         *       *
151E: 3C 00 80 00 47  ; 47: WHAT    u.......  *       *
1523: 3B 01 10 00 45  ; 45: HELLO   ...P....  TO      *
1528: 21 00 00 00 25  ; 25: GO      *         *       *
152D: 21 01 00 80 3D  ; 3D: GO      *         TO      u.......
1532: 21 07 00 80 17  ; 17: GO      *         UP      u.......
1537: 21 08 00 80 17  ; 17: GO      *         DOWN    u.......
153C: 21 0B 00 80 26  ; 26: GO      *         AROUND  u.......
1541: 23 00 80 00 27  ; 27: KICK    u.......  *       *
1546: 23 08 00 80 27  ; 27: KICK    *         DOWN    u.......
154B: 23 05 00 80 27  ; 27: KICK    *         IN      u.......
1550: 24 02 10 80 28  ; 28: FEED    ...P....  WITH    u.......
1555: 24 01 80 10 29  ; 29: FEED    u.......  TO      ...P....
155A: 1C 00 80 00 2D  ; 2D: LIFT    u.......  *       *
155F: 1F 00 00 00 2F  ; 2F: WAIT    *         *       *
1564: 1F 0B 00 00 2F  ; 2F: WAIT    *         AROUND  *
1569: 09 07 00 00 2F  ; 2F: GET     *         UP      *
156E: 20 09 00 80 34  ; 34: JUMP    *         OVER    u.......
1573: 3D 00 80 00 48  ; 48: LOWER   u.......  *       *
1578: 3E 08 80 00 48  ; 48: LET     u.......  DOWN    *
157D: 3E 08 00 80 48  ; 48: LET     *         DOWN    u.......
1582: 09 08 00 80 48  ; 48: GET     *         DOWN    u.......
1587: 09 08 80 00 48  ; 48: GET     u.......  DOWN    *
158C: 3F 00 00 00 4A  ; 4A: COME    *         *       *
1591: 3F 02 00 00 4A  ; 4A: COME    *         WITH    *
1596: 40 00 80 00 49  ; 49: MEET    u.......  *       *
159B: 40 01 80 80 49  ; 49: MEET    u.......  TO      u.......
15A0: 00

Room Descriptions

RoomDescriptions: 
15A1: 00 85 9E                                                         ;
;
; Maintenance room
15A4: 81 3A 00                                                         ; roomNumber=81(Maintenance room) size=003A data=00
15A7:   03 2A                                                          ;   03 DESCRIPTION
15A9:     04 28                                                        ;     print(msg) size=0028
15AB:       5F BE 63 16 9E 7A 8B 61 17 98 39 17 FE 9F 7B 14            ;       THE MAINTENANCE ROOM, A LARGE ROOM WITH
15BB:       54 8B 9B 6C 01 B3 59 90 82 7B 3A 15 8D 7B 23 15            ;       EXITS EAST AND WEST.
15CB:       F3 B9 8E 48 F7 17 17 BA                                    ;       ~
15D3:   04 0B                                                          ;   04 COMMAND
15D5:     0B 09 0A                                                     ;     switch(compare_input_to(phrase)): size=0009
15D8:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
15D9:       02                                                         ;       IF_NOT_GOTO address=15DC
15DA:         00 95                                                    ;         move_ACTIVE_and_look(room) room=95(Office)
15DC:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
15DD:       02                                                         ;       IF_NOT_GOTO address=15E0
15DE:         00 82                                                    ;         move_ACTIVE_and_look(room) room=82(Dispensary)
;
; Dispensary
15E0: 82 49 00                                                         ; roomNumber=82(Dispensary) size=0049 data=00
15E3:   03 35                                                          ;   03 DESCRIPTION
15E5:     04 33                                                        ;     print(msg) size=0033
15E7:       5F BE 03 15 5F B9 93 9A 9E B4 7B 14 E3 B8 F3 8C            ;       THE DISPENSARY, A SMALL SQUARE ROOM WITH
15F7:       97 B9 2F 49 39 17 DB 9F 56 D1 07 71 96 D7 D6 B5            ;       EXITS TO THE EAST, WEST, AND SOUTH.
1607:       D6 9C DB 72 95 5F 73 C1 B5 D0 73 C1 8E 48 61 17            ;       ~
1617:       82 C6 2E                                                   ;       ~
161A:   04 0F                                                          ;   04 COMMAND
161C:     0B 0D 0A                                                     ;     switch(compare_input_to(phrase)): size=000D
161F:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1620:       02                                                         ;       IF_NOT_GOTO address=1623
1621:         00 81                                                    ;         move_ACTIVE_and_look(room) room=81(Maintenance room)
1623:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
1624:       02                                                         ;       IF_NOT_GOTO address=1627
1625:         00 83                                                    ;         move_ACTIVE_and_look(room) room=83(Examination room)
1627:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
1628:       02                                                         ;       IF_NOT_GOTO address=162B
1629:         00 84                                                    ;         move_ACTIVE_and_look(room) room=84(West end east-west hall)
;
; Examination room
162B: 83 46 00                                                         ; roomNumber=83(Examination room) size=0046 data=00
162E:   03 3A                                                          ;   03 DESCRIPTION
1630:     04 38                                                        ;     print(msg) size=0038
1632:       5F BE 3A 15 6B 48 D6 97 C0 7A 39 17 DB 9F 1F D1            ;       THE EXAMINATION ROOM WHERE THE DOCTOR TR
1642:       5B B1 5F BE 09 15 09 56 96 AF 63 B1 0B C0 56 A4            ;       EATS PATIENTS. THERE IS A SINGLE EXIT NO
1652:       30 79 2F C0 82 17 2F 62 D5 15 7B 14 50 B8 BF 6D            ;       RTH.
1662:       3A 15 73 7B 04 9A 77 BE                                    ;       ~
166A:   04 07                                                          ;   04 COMMAND
166C:     0B 05 0A                                                     ;     switch(compare_input_to(phrase)): size=0005
166F:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
1670:       02                                                         ;       IF_NOT_GOTO address=1673
1671:         00 82                                                    ;         move_ACTIVE_and_look(room) room=82(Dispensary)
;
; West end east-west hall
1673: 84 5B 00                                                         ; roomNumber=84(West end east-west hall) size=005B data=00
1676:   03 37                                                          ;   03 DESCRIPTION
1678:     04 35                                                        ;     print(msg) size=0035
167A:       5F BE F7 17 F3 B9 8E 61 B8 16 7B 14 74 CA 4E DB            ;       THE WEST END OF A VERY LONG EAST-WEST HA
168A:       11 A0 23 15 15 BA B5 D0 0A BC 46 48 1B D0 56 F4            ;       LLWAY. THERE IS AN OPENING TO THE WEST.
169A:       F4 72 4B 5E C3 B5 91 96 F0 A4 91 7A 89 17 82 17            ;       ~
16AA:       59 5E 66 62 2E                                             ;       ~
16AF:   04 1F                                                          ;   04 COMMAND
16B1:     0B 1D 0A                                                     ;     switch(compare_input_to(phrase)): size=001D
16B4:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
16B5:       02                                                         ;       IF_NOT_GOTO address=16B8
16B6:         00 82                                                    ;         move_ACTIVE_and_look(room) room=82(Dispensary)
16B8:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
16B9:       02                                                         ;       IF_NOT_GOTO address=16BC
16BA:         00 87                                                    ;         move_ACTIVE_and_look(room) room=87(East-west hall A)
16BC:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
16BD:       08                                                         ;       IF_NOT_GOTO address=16C6
16BE:         0E 06                                                    ;         while_fail: size=0006
16C0:           14                                                     ;           execute_and_reverse_status:
16C1:           1C 02                                                  ;           set_VAR(object) object=02(GreenDoorB)
16C3:           8D                                                     ;           8D(PrintObjectIsClosed)
16C4:           00 85                                                  ;           move_ACTIVE_and_look(room) room=85(Padded room A)
16C6:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
16C7:       08                                                         ;       IF_NOT_GOTO address=16D0
16C8:         0E 06                                                    ;         while_fail: size=0006
16CA:           14                                                     ;           execute_and_reverse_status:
16CB:           1C 03                                                  ;           set_VAR(object) object=03(RedDoorA)
16CD:           8D                                                     ;           8D(PrintObjectIsClosed)
16CE:           00 86                                                  ;           move_ACTIVE_and_look(room) room=86(Padded room B)
;
; Padded room A
16D0: 85 13 00                                                         ; roomNumber=85(Padded room A) size=0013 data=00
16D3:   03 01                                                          ;   03 DESCRIPTION
16D5:     81                                                           ;     81(PrintAnotherPaddedRoom)
16D6:   04 0D                                                          ;   04 COMMAND
16D8:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
16DB:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
16DC:       08                                                         ;       IF_NOT_GOTO address=16E5
16DD:         0E 06                                                    ;         while_fail: size=0006
16DF:           14                                                     ;           execute_and_reverse_status:
16E0:           1C 01                                                  ;           set_VAR(object) object=01(GreenDoorA)
16E2:           8D                                                     ;           8D(PrintObjectIsClosed)
16E3:           00 84                                                  ;           move_ACTIVE_and_look(room) room=84(West end east-west hall)
;
; Padded room B
16E5: 86 13 00                                                         ; roomNumber=86(Padded room B) size=0013 data=00
16E8:   03 01                                                          ;   03 DESCRIPTION
16EA:     81                                                           ;     81(PrintAnotherPaddedRoom)
16EB:   04 0D                                                          ;   04 COMMAND
16ED:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
16F0:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
16F1:       08                                                         ;       IF_NOT_GOTO address=16FA
16F2:         0E 06                                                    ;         while_fail: size=0006
16F4:           14                                                     ;           execute_and_reverse_status:
16F5:           1C 04                                                  ;           set_VAR(object) object=04(RedDoorB)
16F7:           8D                                                     ;           8D(PrintObjectIsClosed)
16F8:           00 84                                                  ;           move_ACTIVE_and_look(room) room=84(West end east-west hall)
;
; East-west hall A
16FA: 87 25 00                                                         ; roomNumber=87(East-west hall A) size=0025 data=00
16FD:   03 01                                                          ;   03 DESCRIPTION
16FF:     82                                                           ;     82(PrintEastWestHall)
1700:   04 1F                                                          ;   04 COMMAND
1702:     0B 1D 0A                                                     ;     switch(compare_input_to(phrase)): size=001D
1705:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
1706:       02                                                         ;       IF_NOT_GOTO address=1709
1707:         00 8A                                                    ;         move_ACTIVE_and_look(room) room=8A(East-west hall B)
1709:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
170A:       02                                                         ;       IF_NOT_GOTO address=170D
170B:         00 84                                                    ;         move_ACTIVE_and_look(room) room=84(West end east-west hall)
170D:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
170E:       08                                                         ;       IF_NOT_GOTO address=1717
170F:         0E 06                                                    ;         while_fail: size=0006
1711:           14                                                     ;           execute_and_reverse_status:
1712:           1C 06                                                  ;           set_VAR(object) object=06(GreedDoorD)
1714:           8D                                                     ;           8D(PrintObjectIsClosed)
1715:           00 88                                                  ;           move_ACTIVE_and_look(room) room=88(Small square room)
1717:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
1718:       08                                                         ;       IF_NOT_GOTO address=1721
1719:         0E 06                                                    ;         while_fail: size=0006
171B:           14                                                     ;           execute_and_reverse_status:
171C:           1C 07                                                  ;           set_VAR(object) object=07(RedDoorC)
171E:           8D                                                     ;           8D(PrintObjectIsClosed)
171F:           00 89                                                  ;           move_ACTIVE_and_look(room) room=89(Padded room C)
;
; Small square room
1721: 88 42 00                                                         ; roomNumber=88(Small square room) size=0042 data=00
1724:   03 30                                                          ;   03 DESCRIPTION
1726:     04 2E                                                        ;     print(msg) size=002E
1728:       55 45 8E 91 15 8A A3 AD 5B B1 01 B3 DB 95 46 48            ;       A SMALL SQUARE ROOM. ALL FOUR WALLS ARE
1738:       59 15 23 C6 0E D0 0B 8E 2F 49 E1 14 74 CA F3 5F            ;       COVERED WITH A THICK PADDING.
1748:       56 D1 03 71 82 17 DD 78 DB 16 C3 59 CF 98                  ;       ~
1756:   04 0D                                                          ;   04 COMMAND
1758:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
175B:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
175C:       08                                                         ;       IF_NOT_GOTO address=1765
175D:         0E 06                                                    ;         while_fail: size=0006
175F:           14                                                     ;           execute_and_reverse_status:
1760:           1C 05                                                  ;           set_VAR(object) object=05(GreenDoorC)
1762:           8D                                                     ;           8D(PrintObjectIsClosed)
1763:           00 87                                                  ;           move_ACTIVE_and_look(room) room=87(East-west hall A)
;
; Padded room C
1765: 89 13 00                                                         ; roomNumber=89(Padded room C) size=0013 data=00
1768:   03 01                                                          ;   03 DESCRIPTION
176A:     81                                                           ;     81(PrintAnotherPaddedRoom)
176B:   04 0D                                                          ;   04 COMMAND
176D:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
1770:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
1771:       08                                                         ;       IF_NOT_GOTO address=177A
1772:         0E 06                                                    ;         while_fail: size=0006
1774:           14                                                     ;           execute_and_reverse_status:
1775:           1C 08                                                  ;           set_VAR(object) object=08(RedDoorD)
1777:           8D                                                     ;           8D(PrintObjectIsClosed)
1778:           00 87                                                  ;           move_ACTIVE_and_look(room) room=87(East-west hall A)
;
; East-west hall B
177A: 8A 25 00                                                         ; roomNumber=8A(East-west hall B) size=0025 data=00
177D:   03 01                                                          ;   03 DESCRIPTION
177F:     82                                                           ;     82(PrintEastWestHall)
1780:   04 1F                                                          ;   04 COMMAND
1782:     0B 1D 0A                                                     ;     switch(compare_input_to(phrase)): size=001D
1785:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1786:       02                                                         ;       IF_NOT_GOTO address=1789
1787:         00 87                                                    ;         move_ACTIVE_and_look(room) room=87(East-west hall A)
1789:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
178A:       02                                                         ;       IF_NOT_GOTO address=178D
178B:         00 8C                                                    ;         move_ACTIVE_and_look(room) room=8C(East end east-west hall)
178D:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
178E:       08                                                         ;       IF_NOT_GOTO address=1797
178F:         0E 06                                                    ;         while_fail: size=0006
1791:           14                                                     ;           execute_and_reverse_status:
1792:           1C 0A                                                  ;           set_VAR(object) object=0A(GreenDoorF)
1794:           8D                                                     ;           8D(PrintObjectIsClosed)
1795:           00 8B                                                  ;           move_ACTIVE_and_look(room) room=8B(Padded room D)
1797:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
1798:       08                                                         ;       IF_NOT_GOTO address=17A1
1799:         0E 06                                                    ;         while_fail: size=0006
179B:           14                                                     ;           execute_and_reverse_status:
179C:           1C 0B                                                  ;           set_VAR(object) object=0B(RedDoorE)
179E:           8D                                                     ;           8D(PrintObjectIsClosed)
179F:           00 8F                                                  ;           move_ACTIVE_and_look(room) room=8F(North end of north-south hall)
;
; Padded room D
17A1: 8B 13 00                                                         ; roomNumber=8B(Padded room D) size=0013 data=00
17A4:   03 01                                                          ;   03 DESCRIPTION
17A6:     81                                                           ;     81(PrintAnotherPaddedRoom)
17A7:   04 0D                                                          ;   04 COMMAND
17A9:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
17AC:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
17AD:       08                                                         ;       IF_NOT_GOTO address=17B6
17AE:         0E 06                                                    ;         while_fail: size=0006
17B0:           14                                                     ;           execute_and_reverse_status:
17B1:           1C 09                                                  ;           set_VAR(object) object=09(GreenDoorE)
17B3:           8D                                                     ;           8D(PrintObjectIsClosed)
17B4:           00 8A                                                  ;           move_ACTIVE_and_look(room) room=8A(East-west hall B)
;
; East end east-west hall
17B6: 8C 41 00                                                         ; roomNumber=8C(East end east-west hall) size=0041 data=00
17B9:   03 27                                                          ;   03 DESCRIPTION
17BB:     0D 25                                                        ;     while_pass: size=0025
17BD:       04 0A                                                      ;       print(msg) size=000A
17BF:         5F BE 23 15 F3 B9 8E 61 B8 16                            ;         THE EAST END OF
17C9:       82                                                         ;       82(PrintEastWestHall)
17CA:       04 16                                                      ;       print(msg) size=0016
17CC:         5F BE 5B B1 4B 7B 83 48 5F A0 10 99 D6 6A D6 9C          ;         THERE IS AN OPENING TO THE EAST.
17DC:         DB 72 95 5F 9B C1                                        ;         ~
17E2:   04 15                                                          ;   04 COMMAND
17E4:     0B 13 0A                                                     ;     switch(compare_input_to(phrase)): size=0013
17E7:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
17E8:       02                                                         ;       IF_NOT_GOTO address=17EB
17E9:         00 8E                                                    ;         move_ACTIVE_and_look(room) room=8E(Electroshock room)
17EB:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
17EC:       02                                                         ;       IF_NOT_GOTO address=17EF
17ED:         00 8A                                                    ;         move_ACTIVE_and_look(room) room=8A(East-west hall B)
17EF:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
17F0:       08                                                         ;       IF_NOT_GOTO address=17F9
17F1:         0E 06                                                    ;         while_fail: size=0006
17F3:           14                                                     ;           execute_and_reverse_status:
17F4:           1C 0D                                                  ;           set_VAR(object) object=0D(GreenDoorH)
17F6:           8D                                                     ;           8D(PrintObjectIsClosed)
17F7:           00 8D                                                  ;           move_ACTIVE_and_look(room) room=8D(Padded room E)
;
; Padded room E
17F9: 8D 13 00                                                         ; roomNumber=8D(Padded room E) size=0013 data=00
17FC:   03 01                                                          ;   03 DESCRIPTION
17FE:     81                                                           ;     81(PrintAnotherPaddedRoom)
17FF:   04 0D                                                          ;   04 COMMAND
1801:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
1804:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
1805:       08                                                         ;       IF_NOT_GOTO address=180E
1806:         0E 06                                                    ;         while_fail: size=0006
1808:           14                                                     ;           execute_and_reverse_status:
1809:           1C 0C                                                  ;           set_VAR(object) object=0C(GreenDoorG)
180B:           8D                                                     ;           8D(PrintObjectIsClosed)
180C:           00 8C                                                  ;           move_ACTIVE_and_look(room) room=8C(East end east-west hall)
;
; Electroshock room
180E: 8E 36 00                                                         ; roomNumber=8E(Electroshock room) size=0036 data=00
1811:   03 2A                                                          ;   03 DESCRIPTION
1813:     04 28                                                        ;     print(msg) size=0028
1815:       5F BE 2E 15 E6 5F 05 B3 75 74 D6 83 F4 72 F3 48            ;       THE ELECTROSHOCK THERAPY ROOM. THERE IS
1825:       39 17 FF 9F 82 17 2F 62 D5 15 7B 14 50 B8 BF 6D            ;       A SINGLE EXIT WEST.
1835:       3A 15 73 7B B5 D0 9B C1                                    ;       ~
183D:   04 07                                                          ;   04 COMMAND
183F:     0B 05 0A                                                     ;     switch(compare_input_to(phrase)): size=0005
1842:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1843:       02                                                         ;       IF_NOT_GOTO address=1846
1844:         00 8C                                                    ;         move_ACTIVE_and_look(room) room=8C(East end east-west hall)
;
; North end of north-south hall
1846: 8F 30 00                                                         ; roomNumber=8F(North end of north-south hall) size=0030 data=00
1849:   03 10                                                          ;   03 DESCRIPTION
184B:     0D 0E                                                        ;     while_pass: size=000E
184D:       04 0B                                                      ;       print(msg) size=000B
184F:         5F BE 99 16 C2 B3 30 15 11 58 46                         ;         THE NORTH END OF
185A:       83                                                         ;       83(PrintNorthSouthHall)
185B:   04 1B                                                          ;   04 COMMAND
185D:     0B 19 0A                                                     ;     switch(compare_input_to(phrase)): size=0019
1860:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
1861:       08                                                         ;       IF_NOT_GOTO address=186A
1862:         0E 06                                                    ;         while_fail: size=0006
1864:           14                                                     ;           execute_and_reverse_status:
1865:           1C 0E                                                  ;           set_VAR(object) object=0E(RedDoorF)
1867:           8D                                                     ;           8D(PrintObjectIsClosed)
1868:           00 8A                                                  ;           move_ACTIVE_and_look(room) room=8A(East-west hall B)
186A:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
186B:       02                                                         ;       IF_NOT_GOTO address=186E
186C:         00 91                                                    ;         move_ACTIVE_and_look(room) room=91(North-south hall)
186E:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
186F:       08                                                         ;       IF_NOT_GOTO address=1878
1870:         0E 06                                                    ;         while_fail: size=0006
1872:           14                                                     ;           execute_and_reverse_status:
1873:           1C 0F                                                  ;           set_VAR(object) object=0F(BlueDoorA)
1875:           8D                                                     ;           8D(PrintObjectIsClosed)
1876:           00 90                                                  ;           move_ACTIVE_and_look(room) room=90(Padded room F)
;
; Padded room F
1878: 90 13 00                                                         ; roomNumber=90(Padded room F) size=0013 data=00
187B:   03 01                                                          ;   03 DESCRIPTION
187D:     81                                                           ;     81(PrintAnotherPaddedRoom)
187E:   04 0D                                                          ;   04 COMMAND
1880:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
1883:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1884:       08                                                         ;       IF_NOT_GOTO address=188D
1885:         0E 06                                                    ;         while_fail: size=0006
1887:           14                                                     ;           execute_and_reverse_status:
1888:           1C 10                                                  ;           set_VAR(object) object=10(BlueDoorB)
188A:           8D                                                     ;           8D(PrintObjectIsClosed)
188B:           00 8F                                                  ;           move_ACTIVE_and_look(room) room=8F(North end of north-south hall)
;
; North-south hall
188D: 91 32 00                                                         ; roomNumber=91(North-south hall) size=0032 data=00
1890:   03 14                                                          ;   03 DESCRIPTION
1892:     0D 12                                                        ;     while_pass: size=0012
1894:       83                                                         ;       83(PrintNorthSouthHall)
1895:       04 0F                                                      ;       print(msg) size=000F
1897:         5F BE 5B B1 4B 7B 83 48 23 63 07 BC 66 49 2E             ;         THERE IS AN EXIT EAST.
18A6:   04 19                                                          ;   04 COMMAND
18A8:     0B 17 0A                                                     ;     switch(compare_input_to(phrase)): size=0017
18AB:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
18AC:       02                                                         ;       IF_NOT_GOTO address=18AF
18AD:         00 8F                                                    ;         move_ACTIVE_and_look(room) room=8F(North end of north-south hall)
18AF:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
18B0:       02                                                         ;       IF_NOT_GOTO address=18B3
18B1:         00 96                                                    ;         move_ACTIVE_and_look(room) room=96(South end north-south hall)
18B3:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
18B4:       02                                                         ;       IF_NOT_GOTO address=18B7
18B5:         00 92                                                    ;         move_ACTIVE_and_look(room) room=92(Kitchen)
18B7:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
18B8:       08                                                         ;       IF_NOT_GOTO address=18C1
18B9:         0E 06                                                    ;         while_fail: size=0006
18BB:           14                                                     ;           execute_and_reverse_status:
18BC:           1C 11                                                  ;           set_VAR(object) object=11(BlueDoorC)
18BE:           8D                                                     ;           8D(PrintObjectIsClosed)
18BF:           00 94                                                  ;           move_ACTIVE_and_look(room) room=94(Padded room G)
;
; Kitchen
18C1: 92 38 00                                                         ; roomNumber=92(Kitchen) size=0038 data=00
18C4:   03 24                                                          ;   03 DESCRIPTION
18C6:     04 22                                                        ;     print(msg) size=0022
18C8:       5F BE 1B 16 9A BD 83 61 23 D1 13 54 55 72 3A 15            ;       THE KITCHEN WHICH HAS EXITS EAST, WEST,
18D8:       8D 7B 23 15 16 BA F7 17 16 BA 90 14 15 58 36 A1            ;       AND SOUTH.
18E8:       9B 76                                                      ;       ~
18EA:   04 0F                                                          ;   04 COMMAND
18EC:     0B 0D 0A                                                     ;     switch(compare_input_to(phrase)): size=000D
18EF:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
18F0:       02                                                         ;       IF_NOT_GOTO address=18F3
18F1:         00 93                                                    ;         move_ACTIVE_and_look(room) room=93(Kennel)
18F3:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
18F4:       02                                                         ;       IF_NOT_GOTO address=18F7
18F5:         00 97                                                    ;         move_ACTIVE_and_look(room) room=97(Dining room)
18F7:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
18F8:       02                                                         ;       IF_NOT_GOTO address=18FB
18F9:         00 91                                                    ;         move_ACTIVE_and_look(room) room=91(North-south hall)
;
; Kennel
18FB: 93 81 0F 00                                                      ; roomNumber=93(Kennel) size=010F data=00
18FF:   03 2B                                                          ;   03 DESCRIPTION
1901:     04 29                                                        ;     print(msg) size=0029
1903:       5F BE 17 16 CF 99 9B 8F 5F BE 5B B1 4B 7B 59 45            ;       THE KENNEL. THERE IS A WEST EXIT AND AN
1913:       66 62 3A 15 73 7B 8E 48 90 14 C2 16 93 61 AB 98            ;       OPENING TO THE SOUTH.
1923:       6B BF 5F BE 61 17 82 C6 2E                                 ;       ~
192C:   04 80 DE                                                       ;   04 COMMAND
192F:     0B 80 DB 0A                                                  ;     switch(compare_input_to(phrase)): size=00DB
1933:       02                                                         ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
1934:       80 D3                                                      ;       IF_NOT_GOTO address=1A08
1936:         0E 80 D0                                                 ;         while_fail: size=00D0
1939:           0D 18                                                  ;           while_pass: size=0018
193B:             01 1A                                                ;             is_in_pack_or_current_room(object) object=1A(GuardDog)
193D:             04 14                                                ;             print(msg) size=0014
193F:               5F BE 09 15 D9 6A 46 7A 99 16 0E BC 73 62 C7 DE    ;               THE DOG WILL NOT LET YOU PASS!
194F:               DB 16 C9 B9                                        ;               ~
1953:           0D 80 B3                                               ;           while_pass: size=00B3
1956:             0E 80 B0                                             ;             while_fail: size=00B0
1959:               0D 19                                              ;               while_pass: size=0019
195B:                 20 38                                            ;                 is_ACTIVE_this(object) object=38(SYSTEM)
195D:                 04 15                                            ;                 print(msg) size=0015
195F:                   C7 DE 9B 15 5B CA 07 68 33 98 85 A6 44 B8 DB 8B;                   YOU HAVE FOUND POSSIBLE ESCAPE!
196F:                   55 62 DF 48 21                                 ;                   ~
1974:               0D 80 92                                           ;               while_pass: size=0092
1977:                 20 13                                            ;                 is_ACTIVE_this(object) object=13(PLAYER)
1979:                 04 26                                            ;                 print(msg) size=0026
197B:                   4B 49 C7 DE 3F 16 CF 49 15 EE CF 62 CE B0 87 15;                   AS YOU LEAVE, SEVERAL GUARDS POSTED OUTS
198B:                   2E 49 D2 B5 E6 A0 F3 5F 36 A1 46 B8 49 5E C4 B0;                   IDE GRAB YOU AND
199B:                   51 18 43 C2 33 98                              ;                   ~
19A1:                 0E 15                                            ;                 while_fail: size=0015
19A3:                   14                                             ;                   execute_and_reverse_status:
19A4:                   0D 05                                          ;                   while_pass: size=0005
19A6:                     01 3C                                        ;                     is_in_pack_or_current_room(object) object=3C(DeadDog)
19A8:                     17 3C 99                                     ;                     move_to(object,room) object=3C(DeadDog) room=99(Storage shed)
19AB:                   04 0B                                          ;                   print(msg) size=000B
19AD:                     5F BE FF 14 F3 46 79 5B 90 14 44             ;                     THE DEAD DOG AND
19B8:                 04 40                                            ;                 print(msg) size=0040
19BA:                   6C BE 6B A1 C7 DE D0 15 7B 14 E3 B8 F3 8C 09 BA;                   THROW YOU IN A SMALL STORAGE SHED BEHIND
19CA:                   C9 B0 55 5E E6 72 AF 14 90 73 16 58 DB 72 EB 4F;                   THE BUILDING. YOU HEAR THEM LOCK THE DO
19DA:                   C3 8B CF 98 51 18 4A C2 94 5F 82 17 5B 61 75 8D;                   OR AND GO AWAY.
19EA:                   D6 83 DB 72 81 5B 83 AF 33 98 2B 6E F3 49 DB E0;                   ~
19FA:                 1C 40                                            ;                 set_VAR(object) object=40(GreenDoorI)
19FC:                 0E 03                                            ;                 while_fail: size=0003
19FE:                   15 02                                          ;                   check_VAR(bits) bits=02(......O.)
1A00:                   29                                             ;                   print_open_VAR()
1A01:                 0E 03                                            ;                 while_fail: size=0003
1A03:                   15 01                                          ;                   check_VAR(bits) bits=01(.......L)
1A05:                   2A                                             ;                   toggle_lock_VAR()
1A06:                 17 13 99                                         ;                 move_to(object,room) object=13(PLAYER) room=99(Storage shed)
1A09:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1A0A:       02                                                         ;       IF_NOT_GOTO address=1A0D
1A0B:         00 92                                                    ;         move_ACTIVE_and_look(room) room=92(Kitchen)
;
; Padded room G
1A0D: 94 13 00                                                         ; roomNumber=94(Padded room G) size=0013 data=00
1A10:   03 01                                                          ;   03 DESCRIPTION
1A12:     81                                                           ;     81(PrintAnotherPaddedRoom)
1A13:   04 0D                                                          ;   04 COMMAND
1A15:     0B 0B 0A                                                     ;     switch(compare_input_to(phrase)): size=000B
1A18:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
1A19:       08                                                         ;       IF_NOT_GOTO address=1A22
1A1A:         0E 06                                                    ;         while_fail: size=0006
1A1C:           14                                                     ;           execute_and_reverse_status:
1A1D:           1C 12                                                  ;           set_VAR(object) object=12(BlueDoorD)
1A1F:           8D                                                     ;           8D(PrintObjectIsClosed)
1A20:           00 91                                                  ;           move_ACTIVE_and_look(room) room=91(North-south hall)
;
; Office
1A22: 95 29 00                                                         ; roomNumber=95(Office) size=0029 data=00
1A25:   03 1D                                                          ;   03 DESCRIPTION
1A27:     04 1B                                                        ;     print(msg) size=001B
1A29:       5F BE B8 16 05 67 DB 63 5F BE 5B B1 4B 7B 55 45            ;       THE OFFICE. THERE IS A SINGLE EXIT EAST.
1A39:       91 7A DB 8B 23 63 07 BC 66 49 2E                           ;       ~
1A44:   04 07                                                          ;   04 COMMAND
1A46:     0B 05 0A                                                     ;     switch(compare_input_to(phrase)): size=0005
1A49:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
1A4A:       02                                                         ;       IF_NOT_GOTO address=1A4D
1A4B:         00 81                                                    ;         move_ACTIVE_and_look(room) room=81(Maintenance room)
;
; South end north-south hall
1A4D: 96 46 00                                                         ; roomNumber=96(South end north-south hall) size=0046 data=00
1A50:   03 32                                                          ;   03 DESCRIPTION
1A52:     04 30                                                        ;     print(msg) size=0030
1A54:       5F BE 61 17 82 C6 30 15 11 58 96 64 DB 72 04 9A            ;       THE SOUTH END OF THE NORTH-SOUTH HALLWAY
1A64:       75 BE 47 B9 53 BE 4E 72 B3 8E DB E0 5F BE 5B B1            ;       . THERE ARE EAST AND WEST EXITS.
1A74:       2F 49 23 15 F3 B9 8E 48 F7 17 F3 B9 23 63 2F C0            ;       ~
1A84:   04 0F                                                          ;   04 COMMAND
1A86:     0B 0D 0A                                                     ;     switch(compare_input_to(phrase)): size=000D
1A89:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
1A8A:       02                                                         ;       IF_NOT_GOTO address=1A8D
1A8B:         00 91                                                    ;         move_ACTIVE_and_look(room) room=91(North-south hall)
1A8D:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1A8E:       02                                                         ;       IF_NOT_GOTO address=1A91
1A8F:         00 98                                                    ;         move_ACTIVE_and_look(room) room=98(Recreation room)
1A91:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
1A92:       02                                                         ;       IF_NOT_GOTO address=1A95
1A93:         00 97                                                    ;         move_ACTIVE_and_look(room) room=97(Dining room)
;
; Dining room
1A95: 97 32 00                                                         ; roomNumber=97(Dining room) size=0032 data=00
1A98:   03 22                                                          ;   03 DESCRIPTION
1A9A:     04 20                                                        ;     print(msg) size=0020
1A9C:       5F BE 03 15 10 99 D4 6A 3F A0 56 F4 F4 72 43 5E            ;       THE DINING ROOM. THERE ARE EXITS NORTH A
1AAC:       5B B1 23 63 0B C0 04 9A 53 BE 8E 48 F7 17 17 BA            ;       ND WEST.
1ABC:   04 0B                                                          ;   04 COMMAND
1ABE:     0B 09 0A                                                     ;     switch(compare_input_to(phrase)): size=0009
1AC1:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
1AC2:       02                                                         ;       IF_NOT_GOTO address=1AC5
1AC3:         00 92                                                    ;         move_ACTIVE_and_look(room) room=92(Kitchen)
1AC5:       04                                                         ;       compare_input_to(phrase) phrase="04: WEST * * *"
1AC6:       02                                                         ;       IF_NOT_GOTO address=1AC9
1AC7:         00 96                                                    ;         move_ACTIVE_and_look(room) room=96(South end north-south hall)
;
; Recreation room
1AC9: 98 37 00                                                         ; roomNumber=98(Recreation room) size=0037 data=00
1ACC:   03 2B                                                          ;   03 DESCRIPTION
1ACE:     04 29                                                        ;     print(msg) size=0029
1AD0:       5F BE 2F 17 AF 55 83 49 03 A0 01 B3 DB 95 5F BE            ;       THE RECREATION ROOM. THERE IS ONLY ONE E
1AE0:       5B B1 4B 7B 16 A0 51 DB 5B 98 23 63 19 BC 85 73            ;       XIT WHICH LEADS EAST.
1AF0:       0E 71 86 5F C7 B5 66 49 2E                                 ;       ~
1AF9:   04 07                                                          ;   04 COMMAND
1AFB:     0B 05 0A                                                     ;     switch(compare_input_to(phrase)): size=0005
1AFE:       03                                                         ;       compare_input_to(phrase) phrase="03: EAST * * *"
1AFF:       02                                                         ;       IF_NOT_GOTO address=1B02
1B00:         00 96                                                    ;         move_ACTIVE_and_look(room) room=96(South end north-south hall)
;
; Storage shed
1B02: 99 3E 00                                                         ; roomNumber=99(Storage shed) size=003E data=00
1B05:   03 0E                                                          ;   03 DESCRIPTION
1B07:     04 0C                                                        ;     print(msg) size=000C
1B09:       5F BE 66 17 AB A0 9B 6C 1F B8 9B 5D                        ;       THE STORAGE SHED.
1B15:   04 2B                                                          ;   04 COMMAND
1B17:     0B 29 0A                                                     ;     switch(compare_input_to(phrase)): size=0029
1B1A:       01                                                         ;       compare_input_to(phrase) phrase="01: NORTH * * *"
1B1B:       26                                                         ;       IF_NOT_GOTO address=1B42
1B1C:         0E 24                                                    ;         while_fail: size=0024
1B1E:           14                                                     ;           execute_and_reverse_status:
1B1F:           1C 40                                                  ;           set_VAR(object) object=40(GreenDoorI)
1B21:           8D                                                     ;           8D(PrintObjectIsClosed)
1B22:           0D 1E                                                  ;           while_pass: size=001E
1B24:             04 1B                                                ;             print(msg) size=001B
1B26:               C7 DE 3A 15 73 7B 5F BE 5A 17 F3 5F 8E 48 35 15    ;               YOU EXIT THE SHED AND ESCAPE TO FREEDOM!
1B36:               12 53 56 5E C8 9C 67 B1 7F 5B 21                   ;               ~
1B41:             24                                                   ;             endless_loop()
; ENDOF 15A1

Object Data

ObjectData:
; Objects are referenced by index in this list with the first object being "Object 1".
; The first three data bytes are as follows AA BB CC:
;   AA = location. If >80 then it is a room. If <80 then it is held by an object.
;   BB = score points (not used in BEDLAM)
;   CC = --CPAXOL
;    C=1 if object can be carried
;    P=1 if object is a person;
;    A=1 if open/close-able
;    X=1 if lock/unlock-able
;    O=1 if closed
;    L=1 if locked
;
; Objects can have various fields tagged as follows:
;   01 = list of adjectives (size+bytes)
;   02 = short name (packed string)
;   03 = long description (packed string)
;   04 (never used)
;   05 (never used)
;   06 = command handling if object is second noun (script)
;   07 = command handling if object is first noun (script)
;   08 = turn-script executed for objects turn in game (script)
;   09 = hitpoint information (2 bytess) AA BB. AA=max hit points  BB=current hit points
;   0A = script executed with killed (script)
;   0B = script executed if command is given to object (script)
;

1B42: 00 93 DF                                                         ; size=13DF
;
; Object_01 "GreenDoorA"
1B45: 0B 12                                                            ; word=0B size=0012
1B47: 85 00 88                                                         ; room=85 scorePoints=00 bits=88
1B4A:   03 01                                                          ;   03 DESCRIPTION
1B4C:     84                                                           ;     84(PrintSouthWallGreenDoor)
1B4D:   01 01                                                          ;   01 ADJECTIVES
1B4F:   14                                                             ;   TODO WORD
1B50:   02 07                                                          ;   02 SHORT_NAME
1B52:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_02 "GreenDoorB"
1B59: 0B 12                                                            ; word=0B size=0012
1B5B: 84 00 8A                                                         ; room=84 scorePoints=00 bits=8A
1B5E:   03 01                                                          ;   03 DESCRIPTION
1B60:     86                                                           ;     86(PrintNorthWallGreedDoor)
1B61:   01 01                                                          ;   01 ADJECTIVES
1B63:   14                                                             ;   TODO WORD
1B64:   02 07                                                          ;   02 SHORT_NAME
1B66:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_03 "RedDoorA"
1B6D: 0B 11                                                            ; word=0B size=0011
1B6F: 84 00 8B                                                         ; room=84 scorePoints=00 bits=8B
1B72:   03 01                                                          ;   03 DESCRIPTION
1B74:     87                                                           ;     87(PrintSouthWallRedDOor)
1B75:   01 01                                                          ;   01 ADJECTIVES
1B77:   13                                                             ;   TODO WORD
1B78:   02 06                                                          ;   02 SHORT_NAME
1B7A:     66 B1 09 15 A3 A0                                            ;     RED DOOR
;
; Object_04 "RedDoorB"
1B80: 0B 11                                                            ; word=0B size=0011
1B82: 86 00 88                                                         ; room=86 scorePoints=00 bits=88
1B85:   03 01                                                          ;   03 DESCRIPTION
1B87:     85                                                           ;     85(PrintNorthWallRedDoor)
1B88:   01 01                                                          ;   01 ADJECTIVES
1B8A:   13                                                             ;   TODO WORD
1B8B:   02 06                                                          ;   02 SHORT_NAME
1B8D:     66 B1 09 15 A3 A0                                            ;     RED DOOR
;
; Object_05 "GreenDoorC"
1B93: 0B 12                                                            ; word=0B size=0012
1B95: 88 00 8A                                                         ; room=88 scorePoints=00 bits=8A
1B98:   03 01                                                          ;   03 DESCRIPTION
1B9A:     84                                                           ;     84(PrintSouthWallGreenDoor)
1B9B:   01 01                                                          ;   01 ADJECTIVES
1B9D:   14                                                             ;   TODO WORD
1B9E:   02 07                                                          ;   02 SHORT_NAME
1BA0:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_06 "GreedDoorD"
1BA7: 0B 12                                                            ; word=0B size=0012
1BA9: 87 00 88                                                         ; room=87 scorePoints=00 bits=88
1BAC:   03 01                                                          ;   03 DESCRIPTION
1BAE:     86                                                           ;     86(PrintNorthWallGreedDoor)
1BAF:   01 01                                                          ;   01 ADJECTIVES
1BB1:   14                                                             ;   TODO WORD
1BB2:   02 07                                                          ;   02 SHORT_NAME
1BB4:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_07 "RedDoorC"
1BBB: 0B 11                                                            ; word=0B size=0011
1BBD: 87 00 8B                                                         ; room=87 scorePoints=00 bits=8B
1BC0:   03 01                                                          ;   03 DESCRIPTION
1BC2:     87                                                           ;     87(PrintSouthWallRedDOor)
1BC3:   01 01                                                          ;   01 ADJECTIVES
1BC5:   13                                                             ;   TODO WORD
1BC6:   02 06                                                          ;   02 SHORT_NAME
1BC8:     66 B1 09 15 A3 A0                                            ;     RED DOOR
;
; Object_08 "RedDoorD"
1BCE: 0B 11                                                            ; word=0B size=0011
1BD0: 89 00 88                                                         ; room=89 scorePoints=00 bits=88
1BD3:   03 01                                                          ;   03 DESCRIPTION
1BD5:     85                                                           ;     85(PrintNorthWallRedDoor)
1BD6:   01 01                                                          ;   01 ADJECTIVES
1BD8:   13                                                             ;   TODO WORD
1BD9:   02 06                                                          ;   02 SHORT_NAME
1BDB:     66 B1 09 15 A3 A0                                            ;     RED DOOR
;
; Object_09 "GreenDoorE"
1BE1: 0B 12                                                            ; word=0B size=0012
1BE3: 8B 00 88                                                         ; room=8B scorePoints=00 bits=88
1BE6:   03 01                                                          ;   03 DESCRIPTION
1BE8:     84                                                           ;     84(PrintSouthWallGreenDoor)
1BE9:   01 01                                                          ;   01 ADJECTIVES
1BEB:   14                                                             ;   TODO WORD
1BEC:   02 07                                                          ;   02 SHORT_NAME
1BEE:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_0A "GreenDoorF"
1BF5: 0B 12                                                            ; word=0B size=0012
1BF7: 8A 00 8A                                                         ; room=8A scorePoints=00 bits=8A
1BFA:   03 01                                                          ;   03 DESCRIPTION
1BFC:     86                                                           ;     86(PrintNorthWallGreedDoor)
1BFD:   01 01                                                          ;   01 ADJECTIVES
1BFF:   14                                                             ;   TODO WORD
1C00:   02 07                                                          ;   02 SHORT_NAME
1C02:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_0B "RedDoorE"
1C09: 0B 11                                                            ; word=0B size=0011
1C0B: 8A 00 8B                                                         ; room=8A scorePoints=00 bits=8B
1C0E:   03 01                                                          ;   03 DESCRIPTION
1C10:     87                                                           ;     87(PrintSouthWallRedDOor)
1C11:   01 01                                                          ;   01 ADJECTIVES
1C13:   13                                                             ;   TODO WORD
1C14:   02 06                                                          ;   02 SHORT_NAME
1C16:     66 B1 09 15 A3 A0                                            ;     RED DOOR
;
; Object_0C "GreenDoorG"
1C1C: 0B 12                                                            ; word=0B size=0012
1C1E: 8D 00 88                                                         ; room=8D scorePoints=00 bits=88
1C21:   03 01                                                          ;   03 DESCRIPTION
1C23:     84                                                           ;     84(PrintSouthWallGreenDoor)
1C24:   01 01                                                          ;   01 ADJECTIVES
1C26:   14                                                             ;   TODO WORD
1C27:   02 07                                                          ;   02 SHORT_NAME
1C29:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_0D "GreenDoorH"
1C30: 0B 12                                                            ; word=0B size=0012
1C32: 8C 00 8A                                                         ; room=8C scorePoints=00 bits=8A
1C35:   03 01                                                          ;   03 DESCRIPTION
1C37:     86                                                           ;     86(PrintNorthWallGreedDoor)
1C38:   01 01                                                          ;   01 ADJECTIVES
1C3A:   14                                                             ;   TODO WORD
1C3B:   02 07                                                          ;   02 SHORT_NAME
1C3D:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_0E "RedDoorF"
1C44: 0B 11                                                            ; word=0B size=0011
1C46: 8F 00 88                                                         ; room=8F scorePoints=00 bits=88
1C49:   03 01                                                          ;   03 DESCRIPTION
1C4B:     85                                                           ;     85(PrintNorthWallRedDoor)
1C4C:   01 01                                                          ;   01 ADJECTIVES
1C4E:   13                                                             ;   TODO WORD
1C4F:   02 06                                                          ;   02 SHORT_NAME
1C51:     66 B1 09 15 A3 A0                                            ;     RED DOOR
;
; Object_0F "BlueDoorA"
1C57: 0B 11                                                            ; word=0B size=0011
1C59: 8F 00 8A                                                         ; room=8F scorePoints=00 bits=8A
1C5C:   02 06                                                          ;   02 SHORT_NAME
1C5E:     8F 4E 46 5E 44 A0                                            ;     BLUE DOOR
1C64:   01 01                                                          ;   01 ADJECTIVES
1C66:   15                                                             ;   TODO WORD
1C67:   03 01                                                          ;   03 DESCRIPTION
1C69:     88                                                           ;     88(PrintEastWallBlueDoor)
;
; Object_10 "BlueDoorB"
1C6A: 0B 11                                                            ; word=0B size=0011
1C6C: 90 00 88                                                         ; room=90 scorePoints=00 bits=88
1C6F:   03 01                                                          ;   03 DESCRIPTION
1C71:     89                                                           ;     89(PrintWestWallBlueDoor)
1C72:   01 01                                                          ;   01 ADJECTIVES
1C74:   15                                                             ;   TODO WORD
1C75:   02 06                                                          ;   02 SHORT_NAME
1C77:     8F 4E 46 5E 44 A0                                            ;     BLUE DOOR
;
; Object_11 "BlueDoorC"
1C7D: 0B 11                                                            ; word=0B size=0011
1C7F: 91 00 8A                                                         ; room=91 scorePoints=00 bits=8A
1C82:   03 01                                                          ;   03 DESCRIPTION
1C84:     89                                                           ;     89(PrintWestWallBlueDoor)
1C85:   01 01                                                          ;   01 ADJECTIVES
1C87:   15                                                             ;   TODO WORD
1C88:   02 06                                                          ;   02 SHORT_NAME
1C8A:     8F 4E 46 5E 44 A0                                            ;     BLUE DOOR
;
; Object_12 "BlueDoorD"
1C90: 0B 11                                                            ; word=0B size=0011
1C92: 94 00 88                                                         ; room=94 scorePoints=00 bits=88
1C95:   03 01                                                          ;   03 DESCRIPTION
1C97:     88                                                           ;     88(PrintEastWallBlueDoor)
1C98:   01 01                                                          ;   01 ADJECTIVES
1C9A:   15                                                             ;   TODO WORD
1C9B:   02 06                                                          ;   02 SHORT_NAME
1C9D:     8F 4E 46 5E 44 A0                                            ;     BLUE DOOR
;
; Object_13 "PLAYER"
1CA3: FF 42                                                            ; word=FF size=0042
1CA5: 88 00 80                                                         ; room=88 scorePoints=00 bits=80
1CA8:   08 06                                                          ;   08 TURN SCRIPT
1CAA:     0D 04                                                        ;     while_pass: size=0004
1CAC:       03 13 3A                                                   ;       is_located(room,object) room=13(Room_13) object=3A(Object3A)
1CAF:       9B                                                         ;       9B(??PrintDirs)
1CB0:   0A 31                                                          ;   0A UPON DEATH SCRIPT
1CB2:     0D 2F                                                        ;     while_pass: size=002F
1CB4:       1F 29                                                      ;       print2(msg) size=0029
1CB6:         C7 DE DB 16 CB B9 36 A1 B0 17 F4 59 82 17 73 49          ;         YOU PASS OUT UNDER THAT LAST ATTACK. YOU
1CC6:         55 8B 03 BC 3B C0 AF 54 51 18 43 C2 0D D0 83 61          ;         AWAKEN IN YOUR CELL.
1CD6:         83 7A C7 DE 85 AF 46 61 2E                               ;         ~
1CDF:       2C 13                                                      ;       set_ACTIVE(object) object=13(PLAYER)
1CE1:       19 88                                                      ;       move_ACTIVE(room) room=88(Small square room)
1CE3:   09 02                                                          ;   HIT POINTS
1CE5:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_14 "RedKeyA"
1CE7: 16 21                                                            ; word=16 size=0021
1CE9: 00 00 A0                                                         ; room=00 scorePoints=00 bits=A0
1CEC:   03 12                                                          ;   03 DESCRIPTION
1CEE:     04 10                                                        ;     print(msg) size=0010
1CF0:       5F BE 5B B1 4B 7B 54 45 F3 5F BB 85 9F 15 7F B1            ;       THERE IS A RED KEY HERE.
1D00:   01 01                                                          ;   01 ADJECTIVES
1D02:   13                                                             ;   TODO WORD
1D03:   02 05                                                          ;   02 SHORT_NAME
1D05:     66 B1 17 16 59                                               ;     RED KEY
;
; Object_15 "BluePillA"
1D0A: 17 11                                                            ; word=17 size=0011
1D0C: 82 00 A0                                                         ; room=82 scorePoints=00 bits=A0
1D0F:   03 01                                                          ;   03 DESCRIPTION
1D11:     9D                                                           ;     9D(PrintBluePill)
1D12:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
1D14:     B0                                                           ;     B0(PrintTastesAweful)
1D15:   02 06                                                          ;   02 SHORT_NAME
1D17:     8F 4E 52 5E 46 7A                                            ;     BLUE PILL
;
; Object_16 "WindowHook"
1D1D: 18 2C                                                            ; word=18 size=002C
1D1F: 81 00 A0                                                         ; room=81 scorePoints=00 bits=A0
1D22:   03 1D                                                          ;   03 DESCRIPTION
1D24:     04 1B                                                        ;     print(msg) size=001B
1D26:       5F BE 5B B1 4B 7B 4E 45 11 A0 9B 15 46 98 59 5E            ;       THERE IS A LONG HANDLE WINDOW HOOK HERE.
1D36:       8E 7A 6B A1 81 74 CA 83 2F 62 2E                           ;       ~
1D41:   02 08                                                          ;   02 SHORT_NAME
1D43:     50 D1 89 5B A9 15 8B 9F                                      ;     WINDOW HOOK
;
; Object_17 "Cabinet"
1D4B: 19 80 9C                                                         ; word=19 size=009C
1D4E: 82 00 83                                                         ; room=82 scorePoints=00 bits=83
1D51:   03 2A                                                          ;   03 DESCRIPTION
1D53:     04 28                                                        ;     print(msg) size=0028
1D55:       03 A0 0F A0 F3 17 F3 8C 4B 7B 45 45 B3 46 76 98            ;       ON ONE WALL IS A CABINET. THE CABINET HA
1D65:       56 F4 DB 72 04 53 8F 7A 0A BC 4B 49 56 45 A3 7A            ;       S A TINY HOLE IN IT.
1D75:       A9 15 DB 8B 83 7A 97 7B                                    ;       ~
1D7D:   07 64                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
1D7F:     0E 62                                                        ;     while_fail: size=0062
1D81:       0D 23                                                      ;       while_pass: size=0023
1D83:         0E 06                                                    ;         while_fail: size=0006
1D85:           0A 42                                                  ;           compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
1D87:           0A 3A                                                  ;           compare_input_to(phrase) phrase="3A: OPEN ......O. WITH u......."
1D89:           0A 11                                                  ;           compare_input_to(phrase) phrase="11: OPEN ......O. * *"
1D8B:         04 19                                                    ;         print(msg) size=0019
1D8D:           C7 DE D3 14 E6 96 57 17 5B 61 6B BF 96 C5 5D 9E        ;           YOU CAN'T SEEM TO UNLOCK THE CABINET.
1D9D:           82 17 45 5E B3 46 76 98 2E                             ;           ~
1DA6:       0D 3B                                                      ;       while_pass: size=003B
1DA8:         0E 04                                                    ;         while_fail: size=0004
1DAA:           0A 10                                                  ;           compare_input_to(phrase) phrase="10: LOOK * IN u......."
1DAC:           0A 0B                                                  ;           compare_input_to(phrase) phrase="0B: LOOK * AT u......."
1DAE:         03 82 3B                                                 ;         is_located(room,object) room=82(Dispensary) object=3B(RedKeyB)
1DB1:         04 30                                                    ;         print(msg) size=0030
1DB3:           0C BA D0 47 91 7A 89 17 57 17 56 5E F9 74 7A C4        ;           STRAINING TO SEE THROUGH THE TINY HOLE,
1DC3:           82 17 56 5E A3 7A A9 15 FE 8B 51 18 45 C2 83 48        ;           YOU CAN JUST MAKE OUT A RED KEY.
1DD3:           F5 81 0F BC 17 48 C7 16 03 BC 2F 17 0D 58 5F 63        ;           ~
1DE3:   02 05                                                          ;   02 SHORT_NAME
1DE5:     04 53 8F 7A 54                                               ;     CABINET
;
; Object_18 "Refrigerator"
1DEA: 1A 80 C9                                                         ; word=1A size=00C9
1DED: 92 00 8A                                                         ; room=92 scorePoints=00 bits=8A
1DF0:   03 2E                                                          ;   03 DESCRIPTION
1DF2:     04 2C                                                        ;     print(msg) size=002C
1DF4:       83 7A 5F BE 99 16 C2 B3 95 5F 05 BC B8 A0 23 62            ;       IN THE NORTHEAST CORNER OF THE ROOM THER
1E04:       C3 9E 5F BE 39 17 DB 9F 5F BE 5B B1 4B 7B 4E 45            ;       E IS A LARGE REFRIGERATOR
1E14:       31 49 54 5E 5C 60 77 79 D6 B0 A3 A0                        ;       ~
1E20:   06 3D                                                          ;   06 COMMAND HANDLING IF SECOND NOUN
1E22:     0D 3B                                                        ;     while_pass: size=003B
1E24:       0A 0F                                                      ;       compare_input_to(phrase) phrase="0F: DROP u....... IN u......."
1E26:       1B                                                         ;       set_VAR_to_second_noun()
1E27:       0D 0C                                                      ;       while_pass: size=000C
1E29:         15 02                                                    ;         check_VAR(bits) bits=02(......O.)
1E2B:         A9                                                       ;         A9(PrintTheSecondNoun)
1E2C:         04 07                                                    ;         print(msg) size=0007
1E2E:           4B 7B C9 54 A6 B7 2E                                   ;           IS CLOSED.
1E35:       A8                                                         ;       A8(PrintTheFirstNoun)
1E36:       04 08                                                      ;       print(msg) size=0008
1E38:         CE 65 0B 8E 36 A1 B8 16                                  ;         FALLS OUT OF
1E40:       A9                                                         ;       A9(PrintTheSecondNoun)
1E41:       04 1A                                                      ;       print(msg) size=001A
1E43:         1E A0 D6 9C DB 72 89 67 A3 A0 68 4D AF A0 C7 DE          ;         ONTO THE FLOOR BEFOREYOU CAN CLOSE IT.
1E53:         D3 14 85 96 85 8D 4B 5E 9B C1                            ;         ~
1E5D:       1A                                                         ;       set_VAR_to_first_noun()
1E5E:       10                                                         ;       drop_VAR()
1E5F:   07 4B                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
1E61:     0D 49                                                        ;     while_pass: size=0049
1E63:       0A 11                                                      ;       compare_input_to(phrase) phrase="11: OPEN ......O. * *"
1E65:       1A                                                         ;       set_VAR_to_first_noun()
1E66:       15 02                                                      ;       check_VAR(bits) bits=02(......O.)
1E68:       03 18 42                                                   ;       is_located(room,object) room=18(Room_18) object=42(Object42)
1E6B:       29                                                         ;       print_open_VAR()
1E6C:       17 19 92                                                   ;       move_to(object,room) object=19(HamburgerMeat) room=92(Kitchen)
1E6F:       17 42 00                                                   ;       move_to(object,room) object=42(Object42) room=00(Room_00)
1E72:       04 38                                                      ;       print(msg) size=0038
1E74:         1F D1 9B 96 1B A1 5F A0 96 96 DB 72 68 B1 09 B2          ;         WHEN YOU OPEN THE REFRIGERATOR, SOME HAM
1E84:         2B 62 84 BF 15 EE E7 9F 9B 15 BF 91 B7 B1 8F AF          ;         BURGER MEAT FALLS OUT OF IT ONTO THE FLO
1E94:         96 5F 4B 15 0D 8D C7 16 11 BC 8B 64 11 BC C9 9A          ;         OR.
1EA4:         82 17 48 5E 81 8D 1B B5                                  ;         ~
1EAC:   02 08                                                          ;   02 SHORT_NAME
1EAE:     68 B1 09 B2 2B 62 84 BF                                      ;     REFRIGERATOR
;
; Object_19 "HamburgerMeat"
1EB6: 1B 6E                                                            ; word=1B size=006E
1EB8: 00 00 A0                                                         ; room=00 scorePoints=00 bits=A0
1EBB:   03 19                                                          ;   03 DESCRIPTION
1EBD:     04 17                                                        ;     print(msg) size=0017
1EBF:       5F BE 5B B1 4B 7B 3F B9 4A 5E 64 48 31 C6 23 62            ;       THERE IS SOME HAMBURGER MEAT HERE.
1ECF:       23 92 0A BC 2F 62 2E                                       ;       ~
1ED6:   06 16                                                          ;   06 COMMAND HANDLING IF SECOND NOUN
1ED8:     0D 14                                                        ;     while_pass: size=0014
1EDA:       0A 0F                                                      ;       compare_input_to(phrase) phrase="0F: DROP u....... IN u......."
1EDC:       0E 10                                                      ;       while_fail: size=0010
1EDE:         0D 06                                                    ;         while_pass: size=0006
1EE0:           08 15                                                  ;           is_first_noun(object) object=15(BluePillA)
1EE2:           17 15 19                                               ;           move_to(object,room) object=15(BluePillA) room=19(Room_19)
1EE5:           A0                                                     ;           A0(PrintPillInHamburger)
1EE6:         0D 06                                                    ;         while_pass: size=0006
1EE8:           08 39                                                  ;           is_first_noun(object) object=39(BluePillB)
1EEA:           17 39 19                                               ;           move_to(object,room) object=39(BluePillB) room=19(Room_19)
1EED:           A0                                                     ;           A0(PrintPillInHamburger)
1EEE:   07 2A                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
1EF0:     0D 28                                                        ;     while_pass: size=0028
1EF2:       0A 15                                                      ;       compare_input_to(phrase) phrase="15: EAT u....... * *"
1EF4:       04 21                                                      ;       print(msg) size=0021
1EF6:         F4 4F AB A2 AB AD DB BD 41 6E 73 5D F6 4F 7B 14          ;         BURP! QUITE GOOD, BUT A LITTLE RARE FOR
1F06:         96 8C FF BE 2B 17 5B B1 04 68 7B 16 7B 17 FF B9          ;         MY TASTE.
1F16:         2E                                                       ;         ~
1F17:       17 19 00                                                   ;       move_to(object,room) object=19(HamburgerMeat) room=00(Room_00)
1F1A:   02 0A                                                          ;   02 SHORT_NAME
1F1C:     4F 72 F4 4F B4 6C 67 16 73 49                                ;     HAMBURGER MEAT
;
; Object_1A "GuardDog"
1F26: 08 81 03                                                         ; word=08 size=0103
1F29: 93 00 90                                                         ; room=93 scorePoints=00 bits=90
1F2C:   03 33                                                          ;   03 DESCRIPTION
1F2E:     04 31                                                        ;     print(msg) size=0031
1F30:       58 45 DB 78 35 A1 87 15 2E 49 09 15 CB 6A C5 B5            ;       A VICIOUS GUARD DOG IS CHAINED TO THE SO
1F40:       4B 72 66 98 89 17 82 17 55 5E 36 A1 19 71 46 48            ;       UTH WALL BLOCKING THE SOUTH EXIT.
1F50:       B6 14 5D 9E 91 7A 82 17 55 5E 36 A1 07 71 96 D7            ;       ~
1F60:       2E                                                         ;       ~
1F61:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
1F63:     A1                                                           ;     A1(FeedDogMeat)
1F64:   06 01                                                          ;   06 COMMAND HANDLING IF SECOND NOUN
1F66:     A1                                                           ;     A1(FeedDogMeat)
1F67:   0A 1C                                                          ;   0A UPON DEATH SCRIPT
1F69:     0D 1A                                                        ;     while_pass: size=001A
1F6B:       1F 15                                                      ;       print2(msg) size=0015
1F6D:         C7 DE 4F 24 63 16 C9 97 F3 5F 6B BF 4E 86 16 8A          ;         YOU'VE MANAGED TO KILL THE DOG.
1F7D:         DB 72 79 5B 2E                                           ;         ~
1F82:       1E 1A 3C                                                   ;       swap(object_a,object_b) object_a=(GuardDog)1A object_b=3C(DeadDog)
1F85:   08 80 94                                                       ;   08 TURN SCRIPT
1F88:     0E 80 91                                                     ;     while_fail: size=0091
1F8B:       0D 7D                                                      ;       while_pass: size=007D
1F8D:         0A 09                                                    ;         compare_input_to(phrase) phrase="09: ATTACK ...P.... WITH .v......"
1F8F:         1C 13                                                    ;         set_VAR(object) object=13(PLAYER)
1F91:         0B 77 05                                                 ;         switch(is_less_equal_last_random(value)): size=0077
1F94:           55                                                     ;           is_less_equal_last_random(value) value=55
1F95:           22                                                     ;           IF_NOT_GOTO address=1FB8
1F96:             0D 20                                                ;             while_pass: size=0020
1F98:               1F 1C                                              ;               print2(msg) size=001C
1F9A:                 5F BE 09 15 D6 6A 94 5F C3 B5 1B BC 34 A1 3F 16  ;                 THE DOG TEARS AT YOUR LEG AND DRAWS BLOO
1FAA:                 C3 6A 33 98 EB 5B CB D2 89 4E 71 9E              ;                 D!
1FB6:               1D 06                                              ;               attack_VAR(points) points=06
1FB8:           AF                                                     ;           is_less_equal_last_random(value) value=AF
1FB9:           26                                                     ;           IF_NOT_GOTO address=1FE0
1FBA:             0D 24                                                ;             while_pass: size=0024
1FBC:               1F 20                                              ;               print2(msg) size=0020
1FBE:                 5F BE 09 15 C4 6A 7F 7B DB B5 34 A1 94 14 43 90  ;                 THE DOG BITES YOUR ARM AND YOU CRINGE WI
1FCE:                 33 98 C7 DE E4 14 91 7A 59 5E 82 7B DB 16 81 7A  ;                 TH PAIN!
1FDE:               1D 07                                              ;               attack_VAR(points) points=07
1FE0:           FF                                                     ;           is_less_equal_last_random(value) value=FF
1FE1:           28                                                     ;           IF_NOT_GOTO address=200A
1FE2:             1F 26                                                ;             print2(msg) size=0026
1FE4:               5F BE 09 15 CE 6A 91 C5 4B 62 04 68 51 18 23 C6    ;               THE DOG LUNGES FOR YOUR NECK, BUT YOU PU
1FF4:               65 98 33 89 F6 4F 51 18 52 C2 46 C5 AB 14 8B 54    ;               LL BACK IN TIME!
2004:               83 7A 8F BE EB 5D                                  ;               ~
200A:       1F 10                                                      ;       print2(msg) size=0010
200C:         41 1E C3 9E B9 6E B3 D1 41 D2 99 64 38 A0 E3 06          ;         "WOOF GROWL WOOF WOOF!"
201C:   09 02                                                          ;   HIT POINTS
201E:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
2020:   02 0A                                                          ;   02 SHORT_NAME
2022:     5F BE D3 17 51 54 4B C6 79 5B                                ;     THE VICIOUS DOG
;
; Object_1B "GreenKeyA"
202C: 16 24                                                            ; word=16 size=0024
202E: 8E 00 A0                                                         ; room=8E scorePoints=00 bits=A0
2031:   03 14                                                          ;   03 DESCRIPTION
2033:     04 12                                                        ;     print(msg) size=0012
2035:       5F BE 5B B1 4B 7B 49 45 67 B1 8D 96 3B 63 F4 72            ;       THERE IS A GREEN KEY HERE.
2045:       DB 63                                                      ;       ~
2047:   01 01                                                          ;   01 ADJECTIVES
2049:   14                                                             ;   TODO WORD
204A:   02 06                                                          ;   02 SHORT_NAME
204C:     AF 6E 83 61 BB 85                                            ;     GREEN KEY
;
; Object_1C "RayA"
2052: 03 81 60                                                         ; word=03 size=0160
2055: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
2058:   03 18                                                          ;   03 DESCRIPTION
205A:     04 16                                                        ;     print(msg) size=0016
205C:       DB B0 57 17 75 61 89 17 AF 14 3B 15 D0 60 D6 6A            ;       RAY SEEMS TO BE EYEING THE WALLS.
206C:       DB 72 0E D0 2F 8E                                          ;       ~
2072:   09 02                                                          ;   HIT POINTS
2074:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
2076:   0B 81 2D                                                       ;   0B COMMAND HANDLING IF GIVEN COMMAND
2079:     0E 81 2A                                                     ;     while_fail: size=012A
207C:       0D 80 DF                                                   ;       while_pass: size=00DF
207F:         0E 0A                                                    ;         while_fail: size=000A
2081:           0A 01                                                  ;           compare_input_to(phrase) phrase="01: NORTH * * *"
2083:           0A 02                                                  ;           compare_input_to(phrase) phrase="02: SOUTH * * *"
2085:           0A 03                                                  ;           compare_input_to(phrase) phrase="03: EAST * * *"
2087:           0A 04                                                  ;           compare_input_to(phrase) phrase="04: WEST * * *"
2089:           0A 0A                                                  ;           compare_input_to(phrase) phrase="0A: LOOK * * *"
208B:         1F 0F                                                    ;         print2(msg) size=000F
208D:           DB B0 2F 17 84 A6 0B C0 DB 72 10 53 57 17 45           ;           RAY REPORTS HE CAN SEE
209C:         1C 38                                                    ;         set_VAR(object) object=38(SYSTEM)
209E:         10                                                       ;         drop_VAR()
209F:         2C 38                                                    ;         set_ACTIVE(object) object=38(SYSTEM)
20A1:         0E 80 B8                                                 ;         while_fail: size=00B8
20A4:           0D 33                                                  ;           while_pass: size=0033
20A6:             01 3D                                                ;             is_in_pack_or_current_room(object) object=3D(SecretDoor)
20A8:             1F 2E                                                ;             print2(msg) size=002E
20AA:               55 45 E4 5F 73 62 81 5B 8A AF 2F 62 19 EE 85 73    ;               A SECRET DOOR HERE, WHICH MAY LEAD TO ES
20BA:               0F 71 3B 4A E3 8B 16 58 C7 9C 53 B7 FF A4 AF 14    ;               CAPE. BESIDES THAT, THERE IS
20CA:               46 B8 4B 62 5B BE 73 C1 5F BE 5B B1 4B 7B          ;               ~
20D8:             0C                                                   ;             fail()
20D9:           0D 3D                                                  ;           while_pass: size=003D
20DB:             03 00 22                                             ;             is_located(room,object) room=00(Room_00) object=22(PicassoA)
20DE:             03 88 1C                                             ;             is_located(room,object) room=88(Small square room) object=1C(RayA)
20E1:             1F 34                                                ;             print2(msg) size=0034
20E3:               5B BE 04 BC 51 63 33 98 5F BE 99 16 C2 B3 F3 17    ;               THAT BEYOND THE NORTH WALL IS A POSSIBLE
20F3:               F3 8C 4B 7B 52 45 E5 A0 B6 78 47 5E 53 B7 DB A4    ;               ESCAPE ROUTE. BESIDES THAT, THERE IS
2103:               07 B3 FF BD AF 14 46 B8 4B 62 5B BE 73 C1 5F BE    ;               ~
2113:               5B B1 4B 7B                                        ;               ~
2117:             0C                                                   ;             fail()
2118:           0D 06                                                  ;           while_pass: size=0006
211A:             0A 03                                                ;             compare_input_to(phrase) phrase="03: EAST * * *"
211C:             21 03 00 00                                          ;             execute_phrase(phrase,first_noun,second_noun) phrase="03: EAST * * *" firstNoun=00 secondNoun=00
2120:           0D 06                                                  ;           while_pass: size=0006
2122:             0A 04                                                ;             compare_input_to(phrase) phrase="04: WEST * * *"
2124:             21 04 00 00                                          ;             execute_phrase(phrase,first_noun,second_noun) phrase="04: WEST * * *" firstNoun=00 secondNoun=00
2128:           0D 06                                                  ;           while_pass: size=0006
212A:             0A 01                                                ;             compare_input_to(phrase) phrase="01: NORTH * * *"
212C:             21 01 00 00                                          ;             execute_phrase(phrase,first_noun,second_noun) phrase="01: NORTH * * *" firstNoun=00 secondNoun=00
2130:           0D 06                                                  ;           while_pass: size=0006
2132:             0A 02                                                ;             compare_input_to(phrase) phrase="02: SOUTH * * *"
2134:             21 02 00 00                                          ;             execute_phrase(phrase,first_noun,second_noun) phrase="02: SOUTH * * *" firstNoun=00 secondNoun=00
2138:           1F 22                                                  ;           print2(msg) size=0022
213A:             06 9A 90 73 5B 70 B7 1C F3 B9 5B 4D 3F B9 4E 5E      ;             NOTHING. "MUST BE SOME LEAD-LINED WALLS!
214A:             86 5F C3 EA 66 98 F3 17 0D 8D E3 06 DB 72 1B B7      ;             " HE SAYS.
215A:             5B BB                                                ;             ~
215C:         2C 1C                                                    ;         set_ACTIVE(object) object=1C(RayA)
215E:       0D 45                                                      ;       while_pass: size=0045
2160:         0E 06                                                    ;         while_fail: size=0006
2162:           0A 11                                                  ;           compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2164:           0A 42                                                  ;           compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
2166:           0A 09                                                  ;           compare_input_to(phrase) phrase="09: ATTACK ...P.... WITH .v......"
2168:         1F 3B                                                    ;         print2(msg) size=003B
216A:           DB B0 63 16 B5 85 7B 14 67 66 7F 4E 96 14 EF BD        ;           RAY MAKES A FEEBLE ATTEMPT AND THEN DRAW
217A:           33 A7 8E 48 82 17 83 61 EB 5B CB D2 C5 4C 5B 89        ;           S BACK. "SORRY, I'VE BEEN RATHER ANEMIC
218A:           A1 1D 83 B3 0B EE 4F 24 AF 14 83 61 D6 B0 F4 72        ;           LATELY!"
219A:           90 14 6B 61 CE 51 7F 49 F9 8E 22                       ;           ~
21A5:       9A                                                         ;       9A(??CommandResponse)
21A6:   08 06                                                          ;   08 TURN SCRIPT
21A8:     0D 04                                                        ;     while_pass: size=0004
21AA:       9C                                                         ;       9C(??MoveHoudiniC)
21AB:       1C 1C                                                      ;       set_VAR(object) object=1C(RayA)
21AD:       9E                                                         ;       9E(PrintObjectEntersRoom)
21AE:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
21B0:     AB                                                           ;     AB(AttackPerson)
21B1:   02 02                                                          ;   02 SHORT_NAME
21B3:     DB B0                                                        ;     RAY
;
; Object_1D "RayB"
21B5: 03 80 AE                                                         ; word=03 size=00AE
21B8: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
21BB:   03 80 A8                                                       ;   03 DESCRIPTION
21BE:     0D 80 A5                                                     ;     while_pass: size=00A5
21C1:       04 80 9F                                                   ;       print(msg) size=009F
21C4:         4F 45 83 48 83 7A 94 5A FB C0 4F A1 CE B0 0B 8E          ;         A MAN IN DIRTY OVERALLS AND WEARING GOGG
21D4:         8E 48 F7 17 33 49 AB 98 39 6E BF 6D C3 B5 AC A6          ;         LES APPROACHES YOU AND INTRODUCES HIMSEL
21E4:         05 9E F5 72 51 18 43 C2 33 98 9E 7A F6 B2 D7 C3          ;         F. "HI! MY NAME IS XRAY JOHNSON, BUT YOU
21F4:         CA B5 75 7A 40 61 3C F4 79 73 7B 16 8B 16 1B 92          ;         CAN CALL ME RAY. I HAVE XRAY VISION, YO
2204:         4B 7B EB D8 4C DB 28 9F 40 B9 04 EE 73 C6 C7 DE          ;         U KNOW. SAY, YOU BETTER HAVE THAT SPOT O
2214:         D3 14 85 96 46 48 67 16 2B 17 DB E0 4A 77 CF 49          ;         N YOUR LEFT LUNG CHECKED BY A DOCTOR!"
2224:         2C 18 3B 4A 15 CB C0 7A 1B EE 1B A1 19 87 5B D4          ;         ~
2234:         1B B7 1B EE 1B A1 76 4D F4 BD 9B 15 5B CA 5B BE          ;         ~
2244:         15 BC 86 A6 C0 16 51 18 23 C6 E8 8B 0E BC 91 C5          ;         ~
2254:         DA 14 DD 5F F3 5F 7B 50 46 45 66 9E A1 A0 22             ;         ~
2263:       1E 1C 1D                                                   ;       swap(object_a,object_b) object_a=(RayA)1C object_b=1D(RayB)
;
; Object_1E "NapoleanA"
2266: 02 77                                                            ; word=02 size=0077
2268: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
226B:   03 01                                                          ;   03 DESCRIPTION
226D:     97                                                           ;     97(PrintNapolean)
226E:   02 06                                                          ;   02 SHORT_NAME
2270:     D2 97 BF 9F 03 A0                                            ;     NAPOLEON
2276:   0B 58                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
2278:     0E 56                                                        ;     while_fail: size=0056
227A:       0D 53                                                      ;       while_pass: size=0053
227C:         0E 06                                                    ;         while_fail: size=0006
227E:           0A 11                                                  ;           compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2280:           0A 42                                                  ;           compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
2282:           0A 09                                                  ;           compare_input_to(phrase) phrase="09: ATTACK ...P.... WITH .v......"
2284:         1A                                                       ;         set_VAR_to_first_noun()
2285:         15 08                                                    ;         check_VAR(bits) bits=08(....A...)
2287:         1F 46                                                    ;         print2(msg) size=0046
2289:           D2 97 BF 9F 03 A0 AB 6E 8B 4F 96 7B BF 14 0A BC        ;           NAPOLEON GRABS IT, BUT HE CAN'T BUDGE IT
2299:           45 5E 85 48 04 BC 01 C4 4B 5E AB BB DB 72 74 C0        ;           ! HE TURNS TO YOU AND MUMBLES SOMETHING
22A9:           8B 9A 6B BF C7 DE 90 14 0F 58 64 C5 F5 8B 61 17        ;           ABOUT BEING RATHER TIRED.
22B9:           36 92 90 73 C3 6A 07 4F 04 BC D0 60 D4 6A 82 49        ;           ~
22C9:           23 62 94 BE 17 60                                      ;           ~
22CF:       9A                                                         ;       9A(??CommandResponse)
22D0:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
22D2:     AB                                                           ;     AB(AttackPerson)
22D3:   08 06                                                          ;   08 TURN SCRIPT
22D5:     0D 04                                                        ;     while_pass: size=0004
22D7:       9C                                                         ;       9C(??MoveHoudiniC)
22D8:       1C 1E                                                      ;       set_VAR(object) object=1E(NapoleanA)
22DA:       9E                                                         ;       9E(PrintObjectEntersRoom)
22DB:   09 02                                                          ;   HIT POINTS
22DD:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_1F "Object1F"
22DF: 02 0B                                                            ; word=02 size=000B
22E1: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
22E4:   03 06                                                          ;   03 DESCRIPTION
22E6:     0D 04                                                        ;     while_pass: size=0004
22E8:       96                                                         ;       96(PrintNapoleanIntro)
22E9:       1E 1E 1F                                                   ;       swap(object_a,object_b) object_a=(NapoleanA)1E object_b=1F(Object1F)
;
; Object_20 "NapoleanB"
22EC: 02 80 97                                                         ; word=02 size=0097
22EF: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
22F2:   03 01                                                          ;   03 DESCRIPTION
22F4:     97                                                           ;     97(PrintNapolean)
22F5:   02 06                                                          ;   02 SHORT_NAME
22F7:     D2 97 BF 9F 03 A0                                            ;     NAPOLEON
22FD:   0B 78                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
22FF:     0E 76                                                        ;     while_fail: size=0076
2301:       0D 73                                                      ;       while_pass: size=0073
2303:         0E 06                                                    ;         while_fail: size=0006
2305:           0A 11                                                  ;           compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2307:           0A 42                                                  ;           compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
2309:           0A 09                                                  ;           compare_input_to(phrase) phrase="09: ATTACK ...P.... WITH .v......"
230B:         1A                                                       ;         set_VAR_to_first_noun()
230C:         15 08                                                    ;         check_VAR(bits) bits=08(....A...)
230E:         0E 66                                                    ;         while_fail: size=0066
2310:           0D 49                                                  ;           while_pass: size=0049
2312:             15 02                                                ;             check_VAR(bits) bits=02(......O.)
2314:             1F 0A                                                ;             print2(msg) size=000A
2316:               D2 97 BF 9F 03 A0 AB 6E 8B 4F                      ;               NAPOLEON GRABS
2320:             A8                                                   ;             A8(PrintTheFirstNoun)
2321:             1F 0C                                                ;             print2(msg) size=000C
2323:               8E 48 BF 14 0D BA D6 15 C2 16 81 61                ;               AND BUSTS IT OPEN!
232F:             29                                                   ;             print_open_VAR()
2330:             0E 29                                                ;             while_fail: size=0029
2332:               0D 25                                              ;               while_pass: size=0025
2334:                 08 3D                                            ;                 is_first_noun(object) object=3D(SecretDoor)
2336:                 1F 20                                            ;                 print2(msg) size=0020
2338:                   5F BE 57 17 AF 55 06 BC 44 A0 3F 16 0D 47 89 17;                   THE SECRET DOOR LEADS TO ESCAPE! YOU'VE
2348:                   35 15 12 53 EB 5D C7 DE 4F 24 63 16 DB 59 71 7B;                   MADE IT!
2358:                 24                                               ;                 endless_loop()
2359:               14                                                 ;               execute_and_reverse_status:
235A:               0C                                                 ;               fail()
235B:           0D 19                                                  ;           while_pass: size=0019
235D:             1F 0E                                                ;             print2(msg) size=000E
235F:               D2 97 BF 9F 03 A0 72 B1 BE A0 D6 B5 56 72          ;               NAPOLEON REPORTS THAT
236D:             A8                                                   ;             A8(PrintTheFirstNoun)
236E:             1F 06                                                ;             print2(msg) size=0006
2370:               4B 7B 5F A0 1B 9C                                  ;               IS OPEN.
2376:       9A                                                         ;       9A(??CommandResponse)
2377:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2379:     AB                                                           ;     AB(AttackPerson)
237A:   08 06                                                          ;   08 TURN SCRIPT
237C:     0D 04                                                        ;     while_pass: size=0004
237E:       9C                                                         ;       9C(??MoveHoudiniC)
237F:       1C 20                                                      ;       set_VAR(object) object=20(NapoleanB)
2381:       9E                                                         ;       9E(PrintObjectEntersRoom)
2382:   09 02                                                          ;   HIT POINTS
2384:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_21 "Object21"
2386: 02 0B                                                            ; word=02 size=000B
2388: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
238B:   03 06                                                          ;   03 DESCRIPTION
238D:     0D 04                                                        ;     while_pass: size=0004
238F:       96                                                         ;       96(PrintNapoleanIntro)
2390:       1E 20 21                                                   ;       swap(object_a,object_b) object_a=(NapoleanB)20 object_b=21(Object21)
;
; Object_22 "PicassoA"
2393: 05 25                                                            ; word=05 size=0025
2395: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
2398:   03 01                                                          ;   03 DESCRIPTION
239A:     99                                                           ;     99(PrintPicasso)
239B:   02 05                                                          ;   02 SHORT_NAME
239D:     85 A5 65 49 4F                                               ;     PICASSO
23A2:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
23A4:     9A                                                           ;     9A(??CommandResponse)
23A5:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
23A7:     AB                                                           ;     AB(AttackPerson)
23A8:   08 0C                                                          ;   08 TURN SCRIPT
23AA:     0E 0A                                                        ;     while_fail: size=000A
23AC:       0D 04                                                      ;       while_pass: size=0004
23AE:         9C                                                       ;         9C(??MoveHoudiniC)
23AF:         1C 22                                                    ;         set_VAR(object) object=22(PicassoA)
23B1:         9E                                                       ;         9E(PrintObjectEntersRoom)
23B2:       14                                                         ;       execute_and_reverse_status:
23B3:       1C 3F                                                      ;       set_VAR(object) object=3F(PaintedDoorB)
23B5:       10                                                         ;       drop_VAR()
23B6:   09 02                                                          ;   HIT POINTS
23B8:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_23 "Object23"
23BA: 05 0B                                                            ; word=05 size=000B
23BC: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
23BF:   03 06                                                          ;   03 DESCRIPTION
23C1:     0D 04                                                        ;     while_pass: size=0004
23C3:       98                                                         ;       98(PrintPicassoIntro)
23C4:       1E 22 23                                                   ;       swap(object_a,object_b) object_a=(PicassoA)22 object_b=23(Object23)
;
; Object_24 "PicassoB"
23C7: 05 34                                                            ; word=05 size=0034
23C9: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
23CC:   03 01                                                          ;   03 DESCRIPTION
23CE:     99                                                           ;     99(PrintPicasso)
23CF:   02 05                                                          ;   02 SHORT_NAME
23D1:     85 A5 65 49 4F                                               ;     PICASSO
23D6:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
23D8:     AB                                                           ;     AB(AttackPerson)
23D9:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
23DB:     9A                                                           ;     9A(??CommandResponse)
23DC:   08 1B                                                          ;   08 TURN SCRIPT
23DE:     0E 19                                                        ;     while_fail: size=0019
23E0:       0D 08                                                      ;       while_pass: size=0008
23E2:         14                                                       ;         execute_and_reverse_status:
23E3:         03 88 24                                                 ;         is_located(room,object) room=88(Small square room) object=24(PicassoB)
23E6:         1C 3F                                                    ;         set_VAR(object) object=3F(PaintedDoorB)
23E8:         10                                                       ;         drop_VAR()
23E9:         0C                                                       ;         fail()
23EA:       0D 07                                                      ;       while_pass: size=0007
23EC:         03 88 24                                                 ;         is_located(room,object) room=88(Small square room) object=24(PicassoB)
23EF:         17 3E 88                                                 ;         move_to(object,room) object=3E(PaintedDoorA) room=88(Small square room)
23F2:         0C                                                       ;         fail()
23F3:       0D 04                                                      ;       while_pass: size=0004
23F5:         9C                                                       ;         9C(??MoveHoudiniC)
23F6:         1C 24                                                    ;         set_VAR(object) object=24(PicassoB)
23F8:         9E                                                       ;         9E(PrintObjectEntersRoom)
23F9:   09 02                                                          ;   HIT POINTS
23FB:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_25 "Object25"
23FD: 05 0B                                                            ; word=05 size=000B
23FF: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
2402:   03 06                                                          ;   03 DESCRIPTION
2404:     0D 04                                                        ;     while_pass: size=0004
2406:       98                                                         ;       98(PrintPicassoIntro)
2407:       1E 24 25                                                   ;       swap(object_a,object_b) object_a=(PicassoB)24 object_b=25(Object25)
;
; Object_26 "MerlinA"
240A: 06 80 FD                                                         ; word=06 size=00FD
240D: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
2410:   03 25                                                          ;   03 DESCRIPTION
2412:     04 23                                                        ;     print(msg) size=0023
2414:       34 92 90 8C D5 15 8F 16 2C 49 B3 E0 1B 54 C3 9A            ;       MERLIN IS NEARBY, CHANTING AND GESTICULA
2424:       AB 98 8E 48 77 15 03 BA 2E 56 83 49 AB 98 73 49            ;       TING AT YOU.
2434:       C7 DE 2E                                                   ;       ~
2437:   02 04                                                          ;   02 SHORT_NAME
2439:     34 92 90 8C                                                  ;     MERLIN
243D:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
243F:     9A                                                           ;     9A(??CommandResponse)
2440:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2442:     AB                                                           ;     AB(AttackPerson)
2443:   08 80 C0                                                       ;   08 TURN SCRIPT
2446:     0E 80 BD                                                     ;     while_fail: size=00BD
2449:       0D 04                                                      ;       while_pass: size=0004
244B:         9C                                                       ;         9C(??MoveHoudiniC)
244C:         1C 26                                                    ;         set_VAR(object) object=26(MerlinA)
244E:         9E                                                       ;         9E(PrintObjectEntersRoom)
244F:       0B 80 B4 05                                                ;       switch(is_less_equal_last_random(value)): size=00B4
2453:         08                                                       ;         is_less_equal_last_random(value) value=08
2454:         30                                                       ;         IF_NOT_GOTO address=2485
2455:           1F 2E                                                  ;           print2(msg) size=002E
2457:             34 92 90 8C 53 17 6E DF 6E 13 71 61 F3 9B 45 77      ;             MERLIN SAYS, "DEMON, I COMMAND YOU! REVE
2467:             EF 9F 8E 48 51 18 EB C1 78 B1 8E 5F 89 17 67 16      ;             AL TO ME THE DOOR OF ESCAPE!"
2477:             82 17 46 5E 44 A0 B8 16 35 15 12 53 EC 5D            ;             ~
2485:         10                                                       ;         is_less_equal_last_random(value) value=10
2486:         42                                                       ;         IF_NOT_GOTO address=24C9
2487:           1F 40                                                  ;           print2(msg) size=0040
2489:             34 92 90 8C 77 15 0F BA 75 B1 96 14 51 18 43 C2      ;             MERLIN GESTURES AT YOU AND SAYS, "I CAN'
2499:             33 98 1B B7 33 BB FB 1B 10 53 F3 23 8E C5 3D 62      ;             T UNDERSTAND IT. I MUST HAVE CONJURED TH
24A9:             50 BD 0B 58 9B C1 4F 77 66 C6 9B 15 5B CA 40 55      ;             E WRONG DEMON."
24B9:             F4 81 F3 5F 5F BE 04 18 11 A0 FF 14 C0 93 63 F4      ;             ~
24C9:         18                                                       ;         is_less_equal_last_random(value) value=18
24CA:         3B                                                       ;         IF_NOT_GOTO address=2506
24CB:           1F 39                                                  ;           print2(msg) size=0039
24CD:             34 92 90 8C E9 16 9E 7A C3 B5 1B BC 3E A1 6F 13      ;             MERLIN POINTS AT YOU, "EYE OF NEUTRON, W
24DD:             1B DD C3 9E 77 98 F9 BF F3 9B 14 D0 11 BC 8A 64      ;             ART OF HOG, DEMON DO THY WILL, THEN BE G
24ED:             0E 9F FF 14 C0 93 09 15 82 17 59 DB 46 7A 16 EE      ;             ONE!"
24FD:             F0 72 AF 14 81 15 59 98 22                           ;             ~
2506:   09 02                                                          ;   HIT POINTS
2508:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_27 "MerlinB"
250A: 06 6E                                                            ; word=06 size=006E
250C: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
250F:   03 69                                                          ;   03 DESCRIPTION
2511:     0D 67                                                        ;     while_pass: size=0067
2513:       04 62                                                      ;       print(msg) size=0062
2515:         83 48 8D 48 30 79 0F BC 83 48 83 7A 44 45 45 8B          ;         AN ANCIENT MAN IN A BLACK CLOAK AND POIN
2525:         C5 83 73 8D C3 83 33 98 7B A6 BF 9A 0A 58 73 49          ;         TED HAT GESTURES AT YOU, "DEMON! I HAVE
2535:         B5 6C 74 C0 4B 62 73 49 C7 DE FC ED EF 59 01 A0          ;         SUMMONED YOU! I AM YOUR MASTER, MERLIN!
2545:         BB 15 58 72 55 5E 6F C5 0F A0 1B 58 19 A1 BB 15          ;         YOU MUST OBEY MY COMMAND!"
2555:         5B 48 C7 DE 8F AF 66 49 46 62 67 16 83 B2 2B 96          ;         ~
2565:         C7 DE 77 16 F3 B9 2F 9E 4F DB 45 DB EF 9F 8E 48          ;         ~
2575:         E3 06                                                    ;         ~
2577:       1E 26 27                                                   ;       swap(object_a,object_b) object_a=(MerlinA)26 object_b=27(MerlinB)
;
; Object_28 "UnconsciousDoctorA"
257A: 07 54                                                            ; word=07 size=0054
257C: 00 00 80                                                         ; room=00 scorePoints=00 bits=80
257F:   03 27                                                          ;   03 DESCRIPTION
2581:     04 25                                                        ;     print(msg) size=0025
2583:       5F BE 7C 13 8E 5F 86 19 66 9E A3 A0 03 BA F3 8C            ;       THE "REAL" DOCTOR STILL LIES UNCONSCIOUS
2593:       87 8C D7 B5 21 98 95 9A C7 7A CB B5 96 96 DB 72            ;       IN THE CORNER.
25A3:       44 55 74 98 2E                                             ;       ~
25A8:   02 0C                                                          ;   02 SHORT_NAME
25AA:     8D C5 0D A0 C7 7A C6 B5 66 9E A3 A0                          ;     UNCONCIOUS DOCTOR
25B6:   0B 14                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
25B8:     1F 12                                                        ;     print2(msg) size=0012
25BA:       5F BE 09 15 09 56 8B AF D7 B5 21 98 95 9A C7 7A            ;       THE DOCTOR IS UNCONSCIOUS.
25CA:       5B BB                                                      ;       ~
25CC:   09 02                                                          ;   HIT POINTS
25CE:   46 01                                                          ;   maxHitPoints=46 currentHitPoints=01
;
; Object_29 "UnconsciousDoctorB"
25D0: 07 80 F5                                                         ; word=07 size=00F5
25D3: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
25D6:   03 80 EF                                                       ;   03 DESCRIPTION
25D9:     0D 80 EC                                                     ;     while_pass: size=00EC
25DC:       04 80 E6                                                   ;       print(msg) size=00E6
25DF:         5F BE 5B B1 4B 7B 4F 45 83 48 83 7A 55 45 EB BF          ;         THERE IS A MAN IN A STRAIT JACKET IN THE
25EF:         73 7B C5 7E B6 85 D0 15 82 17 45 5E B8 A0 47 62          ;         CORNER. HE LOOKS UP AT YOU AND MUMBLES,
25FF:         9F 15 49 16 A5 9F B2 17 96 14 51 18 43 C2 33 98          ;         "OH...IT IS TERRIBLE...THE DOCTOR HAS B
260F:         AF 94 7F 4E 33 BB FA 1C FF F9 73 7B 4B 7B F4 BD          ;         ECOME THE PATIENT AND THE PATIENT THE DO
261F:         04 B2 FF 8B F6 F9 DB 72 75 5B 84 BF 9B 15 C4 B5          ;         CTOR...LISTEN TO ME...I AM THE DOCTOR...
262F:         E1 5F 1B 92 5F BE DB 16 87 BE B3 9A 8E 48 82 17          ;         YOU MUST GO TO THE AUTHORITIES AND TELL
263F:         52 5E 83 49 9E 61 82 17 46 5E 66 9E C7 A0 EE F9          ;         THEM OF THIS TRAVESTY! HURRY, BEFORE IT
264F:         66 7B 83 61 6B BF 3F 92 EB F9 8F 14 82 17 46 5E          ;         IS TOO LATE." HIS EYES ROLL BACK INTO HI
265F:         66 9E C7 A0 FB F9 1B A1 B5 94 09 BC D6 9C D6 9C          ;         S HEAD AND HE PASSES OUT.
266F:         DB 72 B6 49 84 74 83 7B 4B 62 8E 48 7F 17 F3 8C          ;         ~
267F:         5F BE 51 90 96 64 95 73 8C 17 CF 49 13 BA CA 06          ;         ~
268F:         3C C6 B3 E0 68 4D AF A0 D6 15 D5 15 89 17 CE 9C          ;         ~
269F:         7F 49 63 F4 95 73 3B 15 4B 62 FE B2 04 8A DD 46          ;         ~
26AF:         D0 15 6B BF 95 73 9F 15 F3 46 8E 48 9F 15 DB 16          ;         ~
26BF:         D7 B9 D1 B5 97 C6                                        ;         ~
26C5:       1E 28 29                                                   ;       swap(object_a,object_b) object_a=(UnconsciousDoctorA)28 object_b=29(UnconsciousDoctorB)
;
; Object_2A "HoudiniA"
26C8: 04 81 0A                                                         ; word=04 size=010A
26CB: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
26CE:   03 29                                                          ;   03 DESCRIPTION
26D0:     04 27                                                        ;     print(msg) size=0027
26D2:       87 74 90 5A 4B 77 D9 B5 16 B2 90 73 5B 70 FD 1B            ;       HOUDINI IS WRITHING. "I'LL BE DOWN FROM
26E2:       F3 8C 5B 4D 89 5B 88 96 FF B2 9F 15 5B B1 83 7A            ;       HERE IN A MINUTE!"
26F2:       4F 45 9F 7A D9 BD 22                                       ;       ~
26F9:   02 05                                                          ;   02 SHORT_NAME
26FB:     87 74 90 5A 49                                               ;     HOUDINI
2700:   07 80 CB                                                       ;   07 COMMAND HANDLING IF FIRST NOUN
2703:     0D 80 C8                                                     ;     while_pass: size=00C8
2706:       0E 04                                                      ;       while_fail: size=0004
2708:         0A 48                                                    ;         compare_input_to(phrase) phrase="48: LOWER u....... * *"
270A:         0A 12                                                    ;         compare_input_to(phrase) phrase="12: PULL u....... * *"
270C:       04 80 BC                                                   ;       print(msg) size=00BC
270F:         C7 DE 3F 16 0A BC 26 A1 93 7A 09 15 26 D2 BF 14          ;         YOU LET HOUDINI DOWN, BUT YOU ARE UNABLE
271F:         1B BC 1B A1 2F 49 B0 17 B6 46 56 5E D4 9C 71 61          ;         TO REMOVE HIS STRAIT JACKET. HOUDINI SA
272F:         5B CA 95 73 66 17 CB B0 0C BC DD 46 97 62 A9 15          ;         YS, "YOU DIDN'T HAVE TO DO THAT! I WOULD
273F:         03 C4 FB 98 1B B7 33 BB 91 1E 46 C2 08 79 F3 23          ;         HAVE BEEN DOWN IN A MINUTE. BUT I'LL ST
274F:         58 72 56 5E C6 9C D6 9C 56 72 CB 06 01 18 3E C5          ;         ILL TAKE YOU WITH ME WHEN I ESCAPE, JUST
275F:         9B 15 5B CA 67 4D 86 96 80 A1 D0 15 7B 14 D0 92          ;         AS SOON AS I GET OUT OF THIS THING!" HE
276F:         7F C6 44 F4 73 C6 9E 77 15 8A 8E BE 16 8A 17 48          ;         BEGINS WRESTLING WITH HIS STRAIT JACKET
277F:         51 18 59 C2 82 7B 67 16 FA 17 83 61 47 77 53 B7          ;         .
278F:         FE A4 FF 15 F3 B9 4B 49 41 B9 83 96 CB B5 77 15          ;         ~
279F:         11 BC 73 C6 C3 9E 63 BE D6 B5 90 73 6C 6A 9F 15          ;         ~
27AF:         AF 14 50 6D D9 B5 75 B1 03 BF AB 98 56 D1 0A 71          ;         ~
27BF:         4B 7B 0C BA D6 47 EB 15 97 54 9B C1                      ;         ~
27CB:       1E 2A 2C                                                   ;       swap(object_a,object_b) object_a=(HoudiniA)2A object_b=2C(HoudiniC)
27CE:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
27D0:     9A                                                           ;     9A(??CommandResponse)
27D1:   09 02                                                          ;   HIT POINTS
27D3:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_2B "HoudiniB"
27D5: 04 80 D9                                                         ; word=04 size=00D9
27D8: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
27DB:   03 80 D3                                                       ;   03 DESCRIPTION
27DE:     0D 80 D0                                                     ;     while_pass: size=00D0
27E1:       04 80 CA                                                   ;       print(msg) size=00CA
27E4:         5F BE 5B B1 4B 7B 48 45 98 C5 4E DB 3D A0 91 7A          ;         THERE IS A FUNNY LOOKING MAN HANGING TIE
27F4:         63 16 8A 96 91 48 91 7A 83 17 F3 5F 56 D1 03 71          ;         D WITH A ROPE BY HIS FEET TO THE CEILING
2804:         39 17 DB A4 7B 50 95 73 4F 15 73 62 6B BF 5F BE          ;         . HE IS WEARING A STRAIT JACKET. HE TURN
2814:         D7 14 43 7A CF 98 9F 15 D5 15 F7 17 33 49 AB 98          ;         S HIS HEAD TOWARD YOU, "HELLO! I AM THE
2824:         55 45 EB BF 73 7B C5 7E B6 85 4A F4 56 5E 38 C6          ;         GREAT HOUDINI! NO BONDS CAN HOLD ME, NO
2834:         CA B5 4B 7B E3 72 16 58 73 A1 33 B1 C7 DE FC ED          ;         LOCKS CAN RESIST ME! WAIT, LET ME SHOW Y
2844:         EE 72 69 8D BB 15 5B 48 5F BE 84 15 96 5F A9 15          ;         OU! I CAN GET US BOTH OUT OF THIS PLACE!
2854:         03 C4 F9 98 99 16 B9 14 4D 98 D3 14 8A 96 BE 9F          ;         " HE BEGINS WRIGGLING.
2864:         67 16 10 EE CE 9C 5D 9E C5 B5 83 48 75 B1 66 7B          ;         ~
2874:         67 16 D9 06 D6 47 0E EE 73 62 1B 92 29 B8 DB CE          ;         ~
2884:         19 A1 BB 15 10 53 77 15 17 BC C4 B5 02 A1 C7 16          ;         ~
2894:         11 BC 96 64 95 73 E6 16 D7 46 E3 06 DB 72 69 4D          ;         ~
28A4:         9D 7A 04 18 79 79 90 8C 5B 70                            ;         ~
28AE:       1E 2A 2B                                                   ;       swap(object_a,object_b) object_a=(HoudiniA)2A object_b=2B(HoudiniB)
;
; Object_2C "HoudiniC"
28B1: 04 80 93                                                         ; word=04 size=0093
28B4: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
28B7:   03 36                                                          ;   03 DESCRIPTION
28B9:     04 34                                                        ;     print(msg) size=0034
28BB:       87 74 90 5A 4B 77 D9 B5 75 B1 03 BF AB 98 56 D1            ;       HOUDINI IS WRESTLING WITH HIS STRAIT JAC
28CB:       0A 71 4B 7B 0C BA D6 47 EB 15 97 54 9B C1 FD 1B            ;       KET. "I'LL BE OUT OF THIS IN NO TIME!"
28DB:       F3 8C 5B 4D 36 A1 B8 16 82 17 4B 7B 83 7A EB 99            ;       ~
28EB:       8F BE EC 5D                                                ;       ~
28EF:   02 05                                                          ;   02 SHORT_NAME
28F1:     87 74 90 5A 49                                               ;     HOUDINI
28F6:   08 45                                                          ;   08 TURN SCRIPT
28F8:     0E 43                                                        ;     while_fail: size=0043
28FA:       0D 04                                                      ;       while_pass: size=0004
28FC:         9C                                                       ;         9C(??MoveHoudiniC)
28FD:         1C 2C                                                    ;         set_VAR(object) object=2C(HoudiniC)
28FF:         9E                                                       ;         9E(PrintObjectEntersRoom)
2900:       0B 3B 05                                                   ;       switch(is_less_equal_last_random(value)): size=003B
2903:         08                                                       ;         is_less_equal_last_random(value) value=08
2904:         1A                                                       ;         IF_NOT_GOTO address=291F
2905:           1F 18                                                  ;           print2(msg) size=0018
2907:             87 74 90 5A 4F 77 64 C5 F5 8B FC ED A3 48 6B 16      ;             HOUDINI MUMBLES, "ANY MINUTE NOW..."
2917:             F6 9A 50 5E 8F A1 DC F9                              ;             ~
291F:         10                                                       ;         is_less_equal_last_random(value) value=10
2920:         1C                                                       ;         IF_NOT_GOTO address=293D
2921:           1F 1A                                                  ;           print2(msg) size=001A
2923:             87 74 90 5A 46 77 DE 5F 2F 49 33 BB FD 1B 5B CA      ;             HOUDINI DECLARES, "I'VE ALMOST GOT IT!"
2933:             47 48 E6 A0 81 15 0B BC AC BB                        ;             ~
293D:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
293F:     AB                                                           ;     AB(AttackPerson)
2940:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
2942:     9A                                                           ;     9A(??CommandResponse)
2943:   09 02                                                          ;   HIT POINTS
2945:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_2D "Woman"
2947: 01 81 CA                                                         ; word=01 size=01CA
294A: 8E 00 90                                                         ; room=8E scorePoints=00 bits=90
294D:   03 60                                                          ;   03 DESCRIPTION
294F:     04 5E                                                        ;     print(msg) size=005E
2951:       5F BE 5B B1 4B 7B 58 45 43 62 3B 16 B7 B1 01 18            ;       THERE IS A VERY LARGE WOMAN DRESSED IN A
2961:       90 91 0C 15 65 62 F3 5F 83 7A 57 45 08 99 B7 A0            ;       UNIFORM HERE. SHE LOOKS LIKE THE ROLLER
2971:       9F 15 7F B1 5A 17 4E 5E 3D A0 CE B5 17 7A 82 17            ;       DERBY QUEEN. SHE HAS A JAGGED SCAR JUST
2981:       54 5E C6 9F 23 62 F4 59 7B 50 A7 AD A7 61 5A 17            ;       BELOW HER HAIRLINE.
2991:       4A 5E 4B 49 4C 45 79 47 F3 5F 53 B7 8C AF 66 C6            ;       ~
29A1:       AF 14 89 8D 9F 15 8A AF D4 47 90 8C DB 63                  ;       ~
29AF:   02 06                                                          ;   02 SHORT_NAME
29B1:     5F BE 9F 16 97 B3                                            ;     THE NURSE
29B7:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
29B9:     9A                                                           ;     9A(??CommandResponse)
29BA:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
29BC:     AB                                                           ;     AB(AttackPerson)
29BD:   08 81 50                                                       ;   08 TURN SCRIPT
29C0:     0D 81 4D                                                     ;     while_pass: size=014D
29C3:       01 13                                                      ;       is_in_pack_or_current_room(object) object=13(PLAYER)
29C5:       0E 81 48                                                   ;       while_fail: size=0148
29C8:         0D 71                                                    ;         while_pass: size=0071
29CA:           0A 03                                                  ;           compare_input_to(phrase) phrase="03: EAST * * *"
29CC:           1F 6D                                                  ;           print2(msg) size=006D
29CE:             1F B8 8F 17 DD B2 89 17 14 D0 1B 58 1B A1 8E 48      ;             SHE TURNS TOWARD YOU AND SAYS, "OH! YOU
29DE:             53 17 6E DF 79 13 AB 70 C7 DE 77 16 F3 B9 5B 4D      ;             MUST BE HERE FOR TREATMENT. JUST COME RI
29EE:             F4 72 48 5E A3 A0 EF BF 87 49 9E 61 4C F4 66 C6      ;             GHT OVER HERE..." SHE GESTURES TOWARD SO
29FE:             E1 14 1B 92 09 B2 33 75 4F A1 8A AF 2F 62 FF F9      ;             METHING WHICH LOOKS LIKE AN ELECTRIC COU
2A0E:             95 19 DB 72 B5 6C 74 C0 4B 62 89 BF 2E 49 61 17      ;             CH.
2A1E:             36 92 90 73 D9 6A 85 73 0E 71 3D A0 CE B5 17 7A      ;             ~
2A2E:             90 14 2E 15 E6 5F 05 B2 E1 14 DA C3 2E               ;             ~
2A3B:         0D 80 D2                                                 ;         while_pass: size=00D2
2A3E:           1F 73                                                  ;           print2(msg) size=0073
2A40:             91 1E A4 C2 50 5E F3 A0 41 55 F4 A4 83 49 CF 98      ;             "YOU'RE NOT COOPERATING...", SAYS THE NU
2A50:             DC F9 15 EE 55 4A 82 17 50 5E 3D C6 43 5E D5 B5      ;             RSE AS SHE LUNGES ACROSS THE ROOM AND TA
2A60:             DB 72 70 8E B5 6C 85 14 05 B3 D6 B5 DB 72 01 B3      ;             CKLES YOU. SHE DRAGS YOU TO THE COUCH AN
2A70:             43 90 33 98 45 BD BF 86 DB B5 3F A1 5A 17 46 5E      ;             D STRAPS YOU IN. THEN SHE PULLS AN OMINO
2A80:             C9 B0 DB B5 1B A1 6B BF 5F BE E1 14 DA C3 90 14      ;             US LEVER AND
2A90:             15 58 EB BF 0B A7 C7 DE D0 15 56 F4 F0 72 5A 17      ;             ~
2AA0:             52 5E 46 C5 C3 B5 91 96 D0 92 35 A1 3F 16 74 CA      ;             ~
2AB0:             90 14 44                                             ;             ~
2AB3:           0E 24                                                  ;           while_fail: size=0024
2AB5:             03 13 3A                                             ;             is_located(room,object) room=13(Room_13) object=3A(Object3A)
2AB8:             1F 1F                                                ;             print2(msg) size=001F
2ABA:               C7 DE 3A 15 F4 A4 30 79 9B 53 5F BE AE 17 8F BE    ;               YOU EXPERIENCE THE ULTIMATE AGONY! MERCI
2ACA:               7F 49 89 14 23 A0 CF 06 2D 62 5F 79 13 8D 2C       ;               FULLY,
2AD9:           1F 0A                                                  ;           print2(msg) size=000A
2ADB:             C7 DE DB 16 CB B9 36 A1 FF F9                        ;             YOU PASS OUT...
2AE5:           2C 13                                                  ;           set_ACTIVE(object) object=13(PLAYER)
2AE7:           19 88                                                  ;           move_ACTIVE(room) room=88(Small square room)
2AE9:           17 1B 8E                                               ;           move_to(object,room) object=1B(GreenKeyA) room=8E(Electroshock room)
2AEC:           17 41 8C                                               ;           move_to(object,room) object=41(GreenKeyB) room=8C(East end east-west hall)
2AEF:           1C 05                                                  ;           set_VAR(object) object=05(GreenDoorC)
2AF1:           0E 03                                                  ;           while_fail: size=0003
2AF3:             15 02                                                ;             check_VAR(bits) bits=02(......O.)
2AF5:             29                                                   ;             print_open_VAR()
2AF6:           1C 06                                                  ;           set_VAR(object) object=06(GreedDoorD)
2AF8:           0E 04                                                  ;           while_fail: size=0004
2AFA:             14                                                   ;             execute_and_reverse_status:
2AFB:             15 02                                                ;             check_VAR(bits) bits=02(......O.)
2AFD:             29                                                   ;             print_open_VAR()
2AFE:           1F 10                                                  ;           print2(msg) size=0010
2B00:             C7 DE 99 14 17 48 8B 96 9B 96 34 A1 D7 14 17 8D      ;             YOU AWAKEN IN YOUR CELL.
2B10:   09 02                                                          ;   HIT POINTS
2B12:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_2E "Doctor"
2B14: 07 81 AE                                                         ; word=07 size=01AE
2B17: 00 00 90                                                         ; room=00 scorePoints=00 bits=90
2B1A:   03 01                                                          ;   03 DESCRIPTION
2B1C:     9F                                                           ;     9F(PrintUnshavenMan)
2B1D:   02 07                                                          ;   02 SHORT_NAME
2B1F:     5F BE 09 15 09 56 52                                         ;     THE DOCTOR
2B26:   08 81 95                                                       ;   08 TURN SCRIPT
2B29:     0E 81 92                                                     ;     while_fail: size=0192
2B2C:       0D 1C                                                      ;       while_pass: size=001C
2B2E:         14                                                       ;         execute_and_reverse_status:
2B2F:         01 13                                                    ;         is_in_pack_or_current_room(object) object=13(PLAYER)
2B31:         9B                                                       ;         9B(??PrintDirs)
2B32:         1F 15                                                    ;         print2(msg) size=0015
2B34:           C7 DE 9F 15 23 49 50 45 55 9F 43 5E 33 98 C7 DE        ;           YOU HEAR A NOISE AND YOU NOTICE
2B44:           99 16 85 BE 45                                         ;           ~
2B49:         9F                                                       ;         9F(PrintUnshavenMan)
2B4A:       0D 81 71                                                   ;       while_pass: size=0171
2B4D:         01 13                                                    ;         is_in_pack_or_current_room(object) object=13(PLAYER)
2B4F:         1F 0C                                                    ;         print2(msg) size=000C
2B51:           5F BE 09 15 09 56 95 AF 55 4A FB ED                    ;           THE DOCTOR SAYS,
2B5D:         0B 81 5E 05                                              ;         switch(is_less_equal_last_random(value)): size=015E
2B61:           33                                                     ;           is_less_equal_last_random(value) value=33
2B62:           42                                                     ;           IF_NOT_GOTO address=2BA5
2B63:             1F 40                                                ;             print2(msg) size=0040
2B65:               91 1E 43 C2 5B B1 06 9A AF 14 91 7A 7B 14 41 6E    ;               "YOU ARE NOT BEING A GOOD LITTLE PATIENT
2B75:               0E 58 8E 7B DB 8B 56 A4 30 79 AB BB 09 9A 2F 17    ;               ! NOW RETURN TO YOUR CELL, OR YOU WILL N
2B85:               74 C0 96 96 DB 9C 34 A1 D7 14 16 8D C4 16 51 18    ;               EED A LOBOTOMY!"
2B95:               59 C2 46 7A 8F 16 F3 5F 4E 45 39 9E 7F BF EC DA    ;               ~
2BA5:           66                                                     ;           is_less_equal_last_random(value) value=66
2BA6:           20                                                     ;           IF_NOT_GOTO address=2BC7
2BA7:             1F 1E                                                ;             print2(msg) size=001E
2BA9:               FB 1B B9 6E D6 CE 2F 7B 11 58 86 64 8E 5F 91 7A    ;               "I GROW TIRED OF DEALING WITH YOU INFERI
2BB9:               FB 17 53 BE C7 DE D0 15 74 66 C4 7A 6C B5          ;               ORS!"
2BC7:           99                                                     ;           is_less_equal_last_random(value) value=99
2BC8:           22                                                     ;           IF_NOT_GOTO address=2BEB
2BC9:             1F 20                                                ;             print2(msg) size=0020
2BCB:               3A 1E 73 49 2F 49 51 18 46 C2 50 9F CA 6A 2F 62    ;               "WHAT ARE YOU DOING HERE? GO WHERE YOU B
2BDB:               89 00 D9 9C F4 72 5B 5E 1B A1 6E 4D 11 A0 E3 06    ;               ELONG!"
2BEB:           FF                                                     ;           is_less_equal_last_random(value) value=FF
2BEC:           80 D0                                                  ;           IF_NOT_GOTO address=2CBD
2BEE:             0D 80 CD                                             ;             while_pass: size=00CD
2BF1:               1F 80 B4                                           ;               print2(msg) size=00B4
2BF4:                 FD 1B 43 90 6B 68 F3 78 9F 77 81 15 91 7A 89 17  ;                 "I'M AFRAID I'M GOING TO HAVE TO GIVE YO
2C04:                 9B 15 5B CA 6B BF 58 6D 5B 5E 1B A1 48 45 00 B3  ;                 U A FRONTAL LOBOTOMY!" HE STICKS YOU WIT
2C14:                 4E BD 49 16 06 4F FB 9F E3 06 DB 72 03 BA A5 54  ;                 H HIS HYPO AND YOU PASS OUT. WHEN YOU AW
2C24:                 51 18 59 C2 82 7B A3 15 CA B5 E9 DE 90 14 1B 58  ;                 AKEN, YOU FEEL SOMEWHAT INDIFFERENT TO Y
2C34:                 1B A1 55 A4 D1 B5 97 C6 FA 17 83 61 C7 DE 99 14  ;                 OUR SURROUNDINGS. YOU NOTICE BLOOD ON YO
2C44:                 17 48 F3 9B C7 DE 4F 15 33 61 3F B9 FA 62 73 49  ;                 UR GOWN, BUT IT DOESN'T SEEM TO BOTHER Y
2C54:                 8E 7A 50 79 2F 62 B3 9A 6B BF C7 DE 95 AF 3C C6  ;                 OU. YOU FEEL LIKE WANDERING...
2C64:                 30 A1 90 5A EF 6E 51 18 50 C2 03 A1 9B 53 89 4E  ;                 ~
2C74:                 73 9E 03 A0 C7 DE 89 AF 80 A1 04 EE 73 C6 73 7B  ;                 ~
2C84:                 77 5B 05 B9 15 BC 2F 60 89 17 B9 14 5F BE 9B AF  ;                 ~
2C94:                 3F A1 51 18 48 C2 2E 60 43 16 9B 85 10 D0 F4 59  ;                 ~
2CA4:                 91 7A FF F9                                      ;                 ~
2CA8:               1C 05                                              ;               set_VAR(object) object=05(GreenDoorC)
2CAA:               0E 03                                              ;               while_fail: size=0003
2CAC:                 15 02                                            ;                 check_VAR(bits) bits=02(......O.)
2CAE:                 29                                               ;                 print_open_VAR()
2CAF:               1C 06                                              ;               set_VAR(object) object=06(GreedDoorD)
2CB1:               0E 04                                              ;               while_fail: size=0004
2CB3:                 14                                               ;                 execute_and_reverse_status:
2CB4:                 15 02                                            ;                 check_VAR(bits) bits=02(......O.)
2CB6:                 29                                               ;                 print_open_VAR()
2CB7:               2C 13                                              ;               set_ACTIVE(object) object=13(PLAYER)
2CB9:               17 3A 13                                           ;               move_to(object,room) object=3A(Object3A) room=13(Room_13)
2CBC:               19 88                                              ;               move_ACTIVE(room) room=88(Small square room)
2CBE:   0B 01                                                          ;   0B COMMAND HANDLING IF GIVEN COMMAND
2CC0:     9A                                                           ;     9A(??CommandResponse)
2CC1:   09 02                                                          ;   HIT POINTS
2CC3:   46 46                                                          ;   maxHitPoints=46 currentHitPoints=46
;
; Object_2F "Walls"
2CC5: 25 0C                                                            ; word=25 size=000C
2CC7: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2CCA:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2CCC:     A4                                                           ;     A4(PrintPicassoDoor)
2CCD:   02 04                                                          ;   02 SHORT_NAME
2CCF:     0E D0 0B 8E                                                  ;     WALLS
;
; Object_30 "Room"
2CD3: 2A 0B                                                            ; word=2A size=000B
2CD5: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2CD8:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2CDA:     A4                                                           ;     A4(PrintPicassoDoor)
2CDB:   02 03                                                          ;   02 SHORT_NAME
2CDD:     01 B3 4D                                                     ;     ROOM
;
; Object_31 "Floor"
2CE0: 2B 09                                                            ; word=2B size=0009
2CE2: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2CE5:   02 04                                                          ;   02 SHORT_NAME
2CE7:     89 67 A3 A0                                                  ;     FLOOR
;
; Object_32 "Exit"
2CEB: 2C 08                                                            ; word=2C size=0008
2CED: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2CF0:   02 03                                                          ;   02 SHORT_NAME
2CF2:     23 63 54                                                     ;     EXIT
;
; Object_33 "Corner"
2CF5: 30 0C                                                            ; word=30 size=000C
2CF7: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2CFA:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2CFC:     A4                                                           ;     A4(PrintPicassoDoor)
2CFD:   02 04                                                          ;   02 SHORT_NAME
2CFF:     44 55 74 98                                                  ;     CORNER
;
; Object_34 "Hallway"
2D03: 33 0D                                                            ; word=33 size=000D
2D05: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2D08:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2D0A:     A4                                                           ;     A4(PrintPicassoDoor)
2D0B:   02 05                                                          ;   02 SHORT_NAME
2D0D:     4E 72 B3 8E 59                                               ;     HALLWAY
;
; Object_35 "Entrance"
2D12: 36 0B                                                            ; word=36 size=000B
2D14: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2D17:   02 06                                                          ;   02 SHORT_NAME
2D19:     9E 61 D0 B0 9B 53                                            ;     ENTRANCE
;
; Object_36 "Ceiling"
2D1F: 3B 0A                                                            ; word=3B size=000A
2D21: FF 00 80                                                         ; room=FF scorePoints=00 bits=80
2D24:   02 05                                                          ;   02 SHORT_NAME
2D26:     AB 53 90 8C 47                                               ;     CEILING
;
; Object_37 "Hands"
2D2B: 1F 09                                                            ; word=1F size=0009
2D2D: 13 00 C0                                                         ; room=13 scorePoints=00 bits=C0
2D30:   02 04                                                          ;   02 SHORT_NAME
2D32:     50 72 0B 5C                                                  ;     HANDS
;
; Object_38 "SYSTEM"
2D36: 20 03                                                            ; word=20 size=0003
2D38: 00 00 80                                                         ; room=00 scorePoints=00 bits=80
;
; Object_39 "BluePillB"
2D3B: 17 11                                                            ; word=17 size=0011
2D3D: 82 00 A0                                                         ; room=82 scorePoints=00 bits=A0
2D40:   03 01                                                          ;   03 DESCRIPTION
2D42:     9D                                                           ;     9D(PrintBluePill)
2D43:   07 01                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2D45:     B0                                                           ;     B0(PrintTastesAweful)
2D46:   02 06                                                          ;   02 SHORT_NAME
2D48:     8F 4E 52 5E 46 7A                                            ;     BLUE PILL
;
; Object_3A "Object3A"
2D4E: 3C 03                                                            ; word=3C size=0003
2D50: 00 00 00                                                         ; room=00 scorePoints=00 bits=00
;
; Object_3B "RedKeyB"
2D53: 16 4B                                                            ; word=16 size=004B
2D55: 82 00 80                                                         ; room=82 scorePoints=00 bits=80
2D58:   02 05                                                          ;   02 SHORT_NAME
2D5A:     66 B1 17 16 59                                               ;     RED KEY
2D5F:   01 01                                                          ;   01 ADJECTIVES
2D61:   13                                                             ;   TODO WORD
2D62:   07 3C                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2D64:     0E 3A                                                        ;     while_fail: size=003A
2D66:       0D 11                                                      ;       while_pass: size=0011
2D68:         0A 43                                                    ;         compare_input_to(phrase) phrase="43: GET ..C..... WITH ..C....."
2D6A:         09 16                                                    ;         compare_to_second_noun(object) object=16(WindowHook)
2D6C:         03 82 3B                                                 ;         is_located(room,object) room=82(Dispensary) object=3B(RedKeyB)
2D6F:         03 00 14                                                 ;         is_located(room,object) room=00(Room_00) object=14(RedKeyA)
2D72:         17 3B 00                                                 ;         move_to(object,room) object=3B(RedKeyB) room=00(Room_00)
2D75:         17 14 13                                                 ;         move_to(object,room) object=14(RedKeyA) room=13(Room_13)
2D78:         B1                                                       ;         B1(PrintYouGetObjectWithObject)
2D79:       0D 24                                                      ;       while_pass: size=0024
2D7B:         0A 05                                                    ;         compare_input_to(phrase) phrase="05: GET ..C..... * *"
2D7D:         04 20                                                    ;         print(msg) size=0020
2D7F:           C7 DE D3 14 90 96 F3 A0 85 A6 44 B8 FB 8E 63 B1        ;           YOU CAN NOT POSSIBLY REACH INTO THAT TIN
2D8F:           13 54 9E 7A D6 9C 56 72 83 17 7B 9B 7E 74 EB 5D        ;           Y HOLE!
2D9F:       B2                                                         ;       B2(PrintCantGetObjectWithObject)
;
; Object_3C "DeadDog"
2DA0: 08 20                                                            ; word=08 size=0020
2DA2: 00 00 A0                                                         ; room=00 scorePoints=00 bits=A0
2DA5:   02 06                                                          ;   02 SHORT_NAME
2DA7:     E3 59 06 58 EB 9E                                            ;     DEAD DOG
2DAD:   03 13                                                          ;   03 DESCRIPTION
2DAF:     04 11                                                        ;     print(msg) size=0011
2DB1:       5F BE 5B B1 4B 7B 46 45 86 5F 09 15 CA 6A 2F 62            ;       THERE IS A DEAD DOG HERE.
2DC1:       2E                                                         ;       ~
;
; Object_3D "SecretDoor"
2DC2: 0B 42                                                            ; word=0B size=0042
2DC4: 00 00 8A                                                         ; room=00 scorePoints=00 bits=8A
2DC7:   07 30                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2DC9:     0D 2E                                                        ;     while_pass: size=002E
2DCB:       0A 11                                                      ;       compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2DCD:       04 2A                                                      ;       print(msg) size=002A
2DCF:         5F BE 57 17 AF 55 06 BC 44 A0 D5 15 66 17 DD C3          ;         THE SECRET DOOR IS STUCK. YOU ARE NOT ST
2DDF:         5B F4 1B A1 2F 49 99 16 15 BC F9 BF AB 98 99 61          ;         RONG ENOUGH TO OPEN IT.
2DEF:         7A C4 89 17 C2 16 83 61 97 7B                            ;         ~
2DF9:   02 08                                                          ;   02 SHORT_NAME
2DFB:     A5 B7 76 B1 09 15 A3 A0                                      ;     SECRET DOOR
2E03:   01 01                                                          ;   01 ADJECTIVES
2E05:   3D                                                             ;   TODO WORD
;
; Object_3E "PaintedDoorA"
2E06: 0B 76                                                            ; word=0B size=0076
2E08: 00 00 8A                                                         ; room=00 scorePoints=00 bits=8A
2E0B:   02 08                                                          ;   02 SHORT_NAME
2E0D:     4B A4 BF 9A 06 58 44 A0                                      ;     PAINTED DOOR
2E15:   03 24                                                          ;   03 DESCRIPTION
2E17:     04 22                                                        ;     print(msg) size=0022
2E19:       03 A0 5F BE 99 16 C2 B3 F3 17 F3 8C 4B 7B 0F A0            ;       ON THE NORTH WALL IS ONE OF PICASSO'S PA
2E29:       B8 16 E3 16 15 53 2D B9 D2 B5 D0 47 E6 BD 09 15            ;       INTED DOORS
2E39:       BD A0                                                      ;       ~
2E3B:   07 3E                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2E3D:     0D 3C                                                        ;     while_pass: size=003C
2E3F:       0E 0A                                                      ;       while_fail: size=000A
2E41:         0A 11                                                    ;         compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2E43:         0A 3A                                                    ;         compare_input_to(phrase) phrase="3A: OPEN ......O. WITH u......."
2E45:         0A 41                                                    ;         compare_input_to(phrase) phrase="41: LOCK ....A... WITH u......."
2E47:         0A 42                                                    ;         compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
2E49:         0A 40                                                    ;         compare_input_to(phrase) phrase="40: CLOSE ....A... * *"
2E4B:       04 2D                                                      ;       print(msg) size=002D
2E4D:         5F BE DB 16 9E 7A F3 5F 81 5B 91 AF F0 A4 D6 B5          ;         THE PAINTED DOOR OPENS TO REVEAL AN ESCA
2E5D:         D4 9C CF 62 33 48 83 48 55 62 DF 48 39 17 7F C6          ;         PE ROUTE! YOU HAVE ESCAPED!
2E6D:         DB 06 1B A1 58 72 47 5E 53 B7 E6 A4 21                   ;         ~
2E7A:       24                                                         ;       endless_loop()
2E7B:   01 01                                                          ;   01 ADJECTIVES
2E7D:   3E                                                             ;   TODO WORD
;
; Object_3F "PaintedDoorB"
2E7E: 0B 3E                                                            ; word=0B size=003E
2E80: 00 00 80                                                         ; room=00 scorePoints=00 bits=80
2E83:   02 08                                                          ;   02 SHORT_NAME
2E85:     4B A4 BF 9A 06 58 44 A0                                      ;     PAINTED DOOR
2E8D:   07 2C                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2E8F:     0D 2A                                                        ;     while_pass: size=002A
2E91:       0E 0A                                                      ;       while_fail: size=000A
2E93:         0A 11                                                    ;         compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2E95:         0A 3A                                                    ;         compare_input_to(phrase) phrase="3A: OPEN ......O. WITH u......."
2E97:         0A 40                                                    ;         compare_input_to(phrase) phrase="40: CLOSE ....A... * *"
2E99:         0A 41                                                    ;         compare_input_to(phrase) phrase="41: LOCK ....A... WITH u......."
2E9B:         0A 42                                                    ;         compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
2E9D:       04 1C                                                      ;       print(msg) size=001C
2E9F:         2F 49 51 18 45 C2 DC B0 C3 DA 73 7B 4B 7B F5 81          ;         ARE YOU CRAZY? IT IS JUST A PAINTED DOOR
2EAF:         03 BC DB 16 9E 7A F3 5F 81 5B 2B AF                      ;         !
2EBB:   01 01                                                          ;   01 ADJECTIVES
2EBD:   3E                                                             ;   TODO WORD
;
; Object_40 "GreenDoorI"
2EBE: 0B 12                                                            ; word=0B size=0012
2EC0: 99 00 8B                                                         ; room=99 scorePoints=00 bits=8B
2EC3:   03 01                                                          ;   03 DESCRIPTION
2EC5:     86                                                           ;     86(PrintNorthWallGreedDoor)
2EC6:   01 01                                                          ;   01 ADJECTIVES
2EC8:   14                                                             ;   TODO WORD
2EC9:   02 07                                                          ;   02 SHORT_NAME
2ECB:     AF 6E 83 61 81 5B 52                                         ;     GREEN DOOR
;
; Object_41 "GreenKeyB"
2ED2: 16 4B                                                            ; word=16 size=004B
2ED4: 8C 00 80                                                         ; room=8C scorePoints=00 bits=80
2ED7:   02 06                                                          ;   02 SHORT_NAME
2ED9:     AF 6E 83 61 BB 85                                            ;     GREEN KEY
2EDF:   01 01                                                          ;   01 ADJECTIVES
2EE1:   14                                                             ;   TODO WORD
2EE2:   07 3B                                                          ;   07 COMMAND HANDLING IF FIRST NOUN
2EE4:     0E 39                                                        ;     while_fail: size=0039
2EE6:       0D 11                                                      ;       while_pass: size=0011
2EE8:         0A 43                                                    ;         compare_input_to(phrase) phrase="43: GET ..C..... WITH ..C....."
2EEA:         09 16                                                    ;         compare_to_second_noun(object) object=16(WindowHook)
2EEC:         03 8C 41                                                 ;         is_located(room,object) room=8C(East end east-west hall) object=41(GreenKeyB)
2EEF:         03 8E 1B                                                 ;         is_located(room,object) room=8E(Electroshock room) object=1B(GreenKeyA)
2EF2:         17 41 00                                                 ;         move_to(object,room) object=41(GreenKeyB) room=00(Room_00)
2EF5:         17 1B 13                                                 ;         move_to(object,room) object=1B(GreenKeyA) room=13(Room_13)
2EF8:         B1                                                       ;         B1(PrintYouGetObjectWithObject)
2EF9:       0D 23                                                      ;       while_pass: size=0023
2EFB:         0A 05                                                    ;         compare_input_to(phrase) phrase="05: GET ..C..... * *"
2EFD:         04 1F                                                    ;         print(msg) size=001F
2EFF:           C7 DE D3 14 90 96 F3 A0 63 B1 13 54 5F BE 84 15        ;           YOU CAN NOT REACH THE GREEN KEY FROM OUT
2F0F:           30 60 17 16 48 DB FF B2 C7 16 0A BC 2F 62 2E           ;           HERE.
2F1E:       B2                                                         ;       B2(PrintCantGetObjectWithObject)
;
; Object_42 "Object42"
2F1F: 42 03                                                            ; word=42 size=0003
2F21: 18 00 00                                                         ; room=18 scorePoints=00 bits=00
; ENDOF 1B42

General Commands

GeneralCommands:
2F24: 00 84 75                                                         ; size=0475
2F27: 0E 84 72                                                         ; while_fail: size=0472
2F2A:   0D 28                                                          ;   while_pass: size=0028
2F2C:     0E 08                                                        ;     while_fail: size=0008
2F2E:       0A 01                                                      ;       compare_input_to(phrase) phrase="01: NORTH * * *"
2F30:       0A 02                                                      ;       compare_input_to(phrase) phrase="02: SOUTH * * *"
2F32:       0A 03                                                      ;       compare_input_to(phrase) phrase="03: EAST * * *"
2F34:       0A 04                                                      ;       compare_input_to(phrase) phrase="04: WEST * * *"
2F36:     0E 1C                                                        ;     while_fail: size=001C
2F38:       13                                                         ;       process_phrase_by_room_first_second()
2F39:       0D 19                                                      ;       while_pass: size=0019
2F3B:         20 13                                                    ;         is_ACTIVE_this(object) object=13(PLAYER)
2F3D:         04 15                                                    ;         print(msg) size=0015
2F3F:           C7 DE F3 17 CB 8C CF 47 F5 8B D3 B8 D0 15 6B BF        ;           YOU WALK AIMLESSLY INTO A WALL.
2F4F:           59 45 46 48 2E                                         ;           ~
2F54:   0B 84 45 0A                                                    ;   switch(compare_input_to(phrase)): size=0445
2F58:     05                                                           ;     compare_input_to(phrase) phrase="05: GET ..C..... * *"
2F59:     07                                                           ;     IF_NOT_GOTO address=2F61
2F5A:       0E 05                                                      ;       while_fail: size=0005
2F5C:         A2                                                       ;         A2(PrintAlreadyHaveObject)
2F5D:         13                                                       ;         process_phrase_by_room_first_second()
2F5E:         8F                                                       ;         8F(??GetObject)
2F5F:         14                                                       ;         execute_and_reverse_status:
2F60:         0C                                                       ;         fail()
2F61:     43                                                           ;     compare_input_to(phrase) phrase="43: GET ..C..... WITH ..C....."
2F62:     0D                                                           ;     IF_NOT_GOTO address=2F70
2F63:       0E 0B                                                      ;       while_fail: size=000B
2F65:         A2                                                       ;         A2(PrintAlreadyHaveObject)
2F66:         13                                                       ;         process_phrase_by_room_first_second()
2F67:         0D 03                                                    ;         while_pass: size=0003
2F69:           1B                                                     ;           set_VAR_to_second_noun()
2F6A:           14                                                     ;           execute_and_reverse_status:
2F6B:           8F                                                     ;           8F(??GetObject)
2F6C:         0D 02                                                    ;         while_pass: size=0002
2F6E:           1A                                                     ;           set_VAR_to_first_noun()
2F6F:           8F                                                     ;           8F(??GetObject)
2F70:     06                                                           ;     compare_input_to(phrase) phrase="06: DROP ..C..... * *"
2F71:     34                                                           ;     IF_NOT_GOTO address=2FA6
2F72:       0E 32                                                      ;       while_fail: size=0032
2F74:         0D 0E                                                    ;         while_pass: size=000E
2F76:           1A                                                     ;           set_VAR_to_first_noun()
2F77:           18                                                     ;           is_VAR_owned_by_ACTIVE()
2F78:           14                                                     ;           execute_and_reverse_status:
2F79:           08 37                                                  ;           is_first_noun(object) object=37(Hands)
2F7B:           10                                                     ;           drop_VAR()
2F7C:           04 06                                                  ;           print(msg) size=0006
2F7E:             F9 5B 9F A6 9B 5D                                    ;             DROPPED.
2F84:         0D 11                                                    ;         while_pass: size=0011
2F86:           14                                                     ;           execute_and_reverse_status:
2F87:           08 37                                                  ;           is_first_noun(object) object=37(Hands)
2F89:           04 0C                                                  ;           print(msg) size=000C
2F8B:             C7 DE 09 15 E6 96 9B 15 5B CA 71 7B                  ;             YOU DON'T HAVE IT!
2F97:         04 0D                                                    ;         print(msg) size=000D
2F99:           C7 DE 57 17 5B 61 95 5A 35 6F E6 BD 2E                 ;           YOU SEEM DISGUSTED.
2FA6:     11                                                           ;     compare_input_to(phrase) phrase="11: OPEN ......O. * *"
2FA7:     15                                                           ;     IF_NOT_GOTO address=2FBD
2FA8:       0E 13                                                      ;       while_fail: size=0013
2FAA:         13                                                       ;         process_phrase_by_room_first_second()
2FAB:         92                                                       ;         92(??YouCantDoThatTo)
2FAC:         0D 0D                                                    ;         while_pass: size=000D
2FAE:           1A                                                     ;           set_VAR_to_first_noun()
2FAF:           15 01                                                  ;           check_VAR(bits) bits=01(.......L)
2FB1:           A8                                                     ;           A8(PrintTheFirstNoun)
2FB2:           04 07                                                  ;           print(msg) size=0007
2FB4:             4B 7B 75 8D A6 85 2E                                 ;             IS LOCKED.
2FBB:         A5                                                       ;         A5(AttemptClose)
2FBC:         A6                                                       ;         A6(AttemptOpen)
2FBD:     3A                                                           ;     compare_input_to(phrase) phrase="3A: OPEN ......O. WITH u......."
2FBE:     12                                                           ;     IF_NOT_GOTO address=2FD1
2FBF:       0E 10                                                      ;       while_fail: size=0010
2FC1:         0D 03                                                    ;         while_pass: size=0003
2FC3:           1B                                                     ;           set_VAR_to_second_noun()
2FC4:           14                                                     ;           execute_and_reverse_status:
2FC5:           8F                                                     ;           8F(??GetObject)
2FC6:         13                                                       ;         process_phrase_by_room_first_second()
2FC7:         92                                                       ;         92(??YouCantDoThatTo)
2FC8:         A5                                                       ;         A5(AttemptClose)
2FC9:         A7                                                       ;         A7(AttemptUnlock)
2FCA:         0D 04                                                    ;         while_pass: size=0004
2FCC:           15 01                                                  ;           check_VAR(bits) bits=01(.......L)
2FCE:           2A                                                     ;           toggle_lock_VAR()
2FCF:           0C                                                     ;           fail()
2FD0:         A6                                                       ;         A6(AttemptOpen)
2FD1:     40                                                           ;     compare_input_to(phrase) phrase="40: CLOSE ....A... * *"
2FD2:     24                                                           ;     IF_NOT_GOTO address=2FF7
2FD3:       0E 22                                                      ;       while_fail: size=0022
2FD5:         13                                                       ;         process_phrase_by_room_first_second()
2FD6:         92                                                       ;         92(??YouCantDoThatTo)
2FD7:         0D 0E                                                    ;         while_pass: size=000E
2FD9:           1A                                                     ;           set_VAR_to_first_noun()
2FDA:           15 02                                                  ;           check_VAR(bits) bits=02(......O.)
2FDC:           A8                                                     ;           A8(PrintTheFirstNoun)
2FDD:           04 08                                                  ;           print(msg) size=0008
2FDF:             4B 7B 06 9A C2 16 A7 61                              ;             IS NOT OPEN.
2FE7:         0D 0E                                                    ;         while_pass: size=000E
2FE9:           29                                                     ;           print_open_VAR()
2FEA:           A8                                                     ;           A8(PrintTheFirstNoun)
2FEB:           04 0A                                                  ;           print(msg) size=000A
2FED:             4B 7B 09 9A DE 14 D7 A0 9B 5D                        ;             IS NOW CLOSED.
2FF7:     42                                                           ;     compare_input_to(phrase) phrase="42: UNLOCK .......L WITH u......."
2FF8:     2F                                                           ;     IF_NOT_GOTO address=3028
2FF9:       0E 2D                                                      ;       while_fail: size=002D
2FFB:         0D 03                                                    ;         while_pass: size=0003
2FFD:           1B                                                     ;           set_VAR_to_second_noun()
2FFE:           14                                                     ;           execute_and_reverse_status:
2FFF:           8F                                                     ;           8F(??GetObject)
3000:         13                                                       ;         process_phrase_by_room_first_second()
3001:         92                                                       ;         92(??YouCantDoThatTo)
3002:         0D 11                                                    ;         while_pass: size=0011
3004:           1A                                                     ;           set_VAR_to_first_noun()
3005:           14                                                     ;           execute_and_reverse_status:
3006:           15 01                                                  ;           check_VAR(bits) bits=01(.......L)
3008:           A8                                                     ;           A8(PrintTheFirstNoun)
3009:           04 0A                                                  ;           print(msg) size=000A
300B:             4B 7B 06 9A 49 16 97 54 9B 5D                        ;             IS NOT LOCKED.
3015:         A5                                                       ;         A5(AttemptClose)
3016:         A7                                                       ;         A7(AttemptUnlock)
3017:         0D 0F                                                    ;         while_pass: size=000F
3019:           2A                                                     ;           toggle_lock_VAR()
301A:           A8                                                     ;           A8(PrintTheFirstNoun)
301B:           04 0B                                                  ;           print(msg) size=000B
301D:             4B 7B 09 9A B0 17 75 8D A6 85 2E                     ;             IS NOW UNLOCKED.
3028:     41                                                           ;     compare_input_to(phrase) phrase="41: LOCK ....A... WITH u......."
3029:     46                                                           ;     IF_NOT_GOTO address=3070
302A:       0E 44                                                      ;       while_fail: size=0044
302C:         0D 03                                                    ;         while_pass: size=0003
302E:           1B                                                     ;           set_VAR_to_second_noun()
302F:           14                                                     ;           execute_and_reverse_status:
3030:           8F                                                     ;           8F(??GetObject)
3031:         13                                                       ;         process_phrase_by_room_first_second()
3032:         92                                                       ;         92(??YouCantDoThatTo)
3033:         A5                                                       ;         A5(AttemptClose)
3034:         0D 17                                                    ;         while_pass: size=0017
3036:           14                                                     ;           execute_and_reverse_status:
3037:           09 14                                                  ;           compare_to_second_noun(object) object=14(RedKeyA)
3039:           04 0A                                                  ;           print(msg) size=000A
303B:             C7 DE D3 14 E6 96 49 16 8B 54                        ;             YOU CAN'T LOCK
3045:           A8                                                     ;           A8(PrintTheFirstNoun)
3046:           04 03                                                  ;           print(msg) size=0003
3048:             56 D1 48                                             ;             WITH
304B:           A9                                                     ;           A9(PrintTheSecondNoun)
304C:           8B                                                     ;           8B(PrintPeriod)
304D:         0D 11                                                    ;         while_pass: size=0011
304F:           1A                                                     ;           set_VAR_to_first_noun()
3050:           15 01                                                  ;           check_VAR(bits) bits=01(.......L)
3052:           A8                                                     ;           A8(PrintTheFirstNoun)
3053:           04 0B                                                  ;           print(msg) size=000B
3055:             4B 7B 06 9A B0 17 75 8D A6 85 2E                     ;             IS NOT UNLOCKED.
3060:         0D 0E                                                    ;         while_pass: size=000E
3062:           2A                                                     ;           toggle_lock_VAR()
3063:           A8                                                     ;           A8(PrintTheFirstNoun)
3064:           04 0A                                                  ;           print(msg) size=000A
3066:             4B 7B 09 9A 49 16 97 54 9B 5D                        ;             IS NOW LOCKED.
3070:     12                                                           ;     compare_input_to(phrase) phrase="12: PULL u....... * *"
3071:     21                                                           ;     IF_NOT_GOTO address=3093
3072:       0E 1F                                                      ;       while_fail: size=001F
3074:         13                                                       ;         process_phrase_by_room_first_second()
3075:         0D 1C                                                    ;         while_pass: size=001C
3077:           04 13                                                  ;           print(msg) size=0013
3079:             33 D1 09 15 E6 96 51 18 4E C2 98 5F 56 5E DB 72      ;             WHY DON'T YOU LEAVE THE POOR
3089:             81 A6 52                                             ;             ~
308C:           11                                                     ;           print_first_noun()
308D:           04 04                                                  ;           print(msg) size=0004
308F:             49 48 7F 98                                          ;             ALONE.
3093:     09                                                           ;     compare_input_to(phrase) phrase="09: ATTACK ...P.... WITH .v......"
3094:     80 A1                                                        ;     IF_NOT_GOTO address=3136
3096:       0E 80 9E                                                   ;       while_fail: size=009E
3099:         14                                                       ;         execute_and_reverse_status:
309A:         1B                                                       ;         set_VAR_to_second_noun()
309B:         14                                                       ;         execute_and_reverse_status:
309C:         0E 05                                                    ;         while_fail: size=0005
309E:           09 37                                                  ;           compare_to_second_noun(object) object=37(Hands)
30A0:           09 00                                                  ;           compare_to_second_noun(object) object=00(nowhere)
30A2:           8F                                                     ;           8F(??GetObject)
30A3:         0E 80 84                                                 ;         while_fail: size=0084
30A6:           0D 1A                                                  ;           while_pass: size=001A
30A8:             14                                                   ;             execute_and_reverse_status:
30A9:             15 40                                                ;             check_VAR(bits) bits=40(.v......)
30AB:             14                                                   ;             execute_and_reverse_status:
30AC:             09 00                                                ;             compare_to_second_noun(object) object=00(nowhere)
30AE:             04 0A                                                ;             print(msg) size=000A
30B0:               C7 DE D3 14 E6 96 AF 15 B3 B3                      ;               YOU CAN'T HURT
30BA:             A8                                                   ;             A8(PrintTheFirstNoun)
30BB:             04 03                                                ;             print(msg) size=0003
30BD:               56 D1 48                                           ;               WITH
30C0:             A9                                                   ;             A9(PrintTheSecondNoun)
30C1:             8B                                                   ;             8B(PrintPeriod)
30C2:           13                                                     ;           process_phrase_by_room_first_second()
30C3:           0D 1C                                                  ;           while_pass: size=001C
30C5:             1A                                                   ;             set_VAR_to_first_noun()
30C6:             14                                                   ;             execute_and_reverse_status:
30C7:             15 10                                                ;             check_VAR(bits) bits=10(...P....)
30C9:             04 14                                                ;             print(msg) size=0014
30CB:               73 7B 77 5B D0 B5 C9 9C 36 A0 89 17 96 14 45 BD    ;               IT DOES NO GOOD TO ATTACK THE
30DB:               D6 83 DB 72                                        ;               ~
30DF:             11                                                   ;             print_first_noun()
30E0:             8B                                                   ;             8B(PrintPeriod)
30E1:           0D 47                                                  ;           while_pass: size=0047
30E3:             1A                                                   ;             set_VAR_to_first_noun()
30E4:             0E 04                                                ;             while_fail: size=0004
30E6:               09 37                                              ;               compare_to_second_noun(object) object=37(Hands)
30E8:               09 00                                              ;               compare_to_second_noun(object) object=00(nowhere)
30EA:             0B 3E 05                                             ;             switch(is_less_equal_last_random(value)): size=003E
30ED:               55                                                 ;               is_less_equal_last_random(value) value=55
30EE:               13                                                 ;               IF_NOT_GOTO address=3102
30EF:                 0D 11                                            ;                 while_pass: size=0011
30F1:                   04 0D                                          ;                   print(msg) size=000D
30F3:                     44 45 89 8D 89 17 82 17 44 5E 93 9E 21       ;                     A BLOW TO THE BODY!
3100:                   1D 04                                          ;                   attack_VAR(points) points=04
3102:               AF                                                 ;               is_less_equal_last_random(value) value=AF
3103:               14                                                 ;               IF_NOT_GOTO address=3118
3104:                 04 12                                            ;                 print(msg) size=0012
3106:                   59 45 3E 7A EF 16 1A 98 90 14 1B 58 1B A1 D5 92;                   A WILD PUNCH AND YOU MISS.
3116:                   5B BB                                          ;                   ~
3118:               FF                                                 ;               is_less_equal_last_random(value) value=FF
3119:               10                                                 ;               IF_NOT_GOTO address=312A
311A:                 0D 0E                                            ;                 while_pass: size=000E
311C:                   04 0A                                          ;                   print(msg) size=000A
311E:                     C7 DE AF 14 8F 48 0A 58 59 7A                ;                     YOU BEANED HIM!
3128:                   1D 03                                          ;                   attack_VAR(points) points=03
312A:         0D 0B                                                    ;         while_pass: size=000B
312C:           A8                                                     ;           A8(PrintTheFirstNoun)
312D:           04 08                                                  ;           print(msg) size=0008
312F:             4B 7B 92 C5 37 49 17 60                              ;             IS UNHARMED.
3137:     0A                                                           ;     compare_input_to(phrase) phrase="0A: LOOK * * *"
3138:     01                                                           ;     IF_NOT_GOTO address=313A
3139:       07                                                         ;       print_room_description()
313A:     15                                                           ;     compare_input_to(phrase) phrase="15: EAT u....... * *"
313B:     26                                                           ;     IF_NOT_GOTO address=3162
313C:       0E 24                                                      ;       while_fail: size=0024
313E:         13                                                       ;         process_phrase_by_room_first_second()
313F:         0D 21                                                    ;         while_pass: size=0021
3141:           04 0A                                                  ;           print(msg) size=000A
3143:             80 5B F3 23 5B 4D 4E B8 F9 8E                        ;             DON'T BE SILLY!
314D:           A8                                                     ;           A8(PrintTheFirstNoun)
314E:           04 12                                                  ;           print(msg) size=0012
3150:             47 D2 C8 8B F3 23 55 BD DB BD 41 6E 03 58 99 9B      ;             WOULDN'T TASTE GOOD ANYWAY.
3160:             5F 4A                                                ;             ~
3162:     17                                                           ;     compare_input_to(phrase) phrase="17: CLIMB u....... * *"
3163:     4C                                                           ;     IF_NOT_GOTO address=31B0
3164:       0E 4A                                                      ;       while_fail: size=004A
3166:         13                                                       ;         process_phrase_by_room_first_second()
3167:         0D 22                                                    ;         while_pass: size=0022
3169:           1A                                                     ;           set_VAR_to_first_noun()
316A:           15 10                                                  ;           check_VAR(bits) bits=10(...P....)
316C:           04 09                                                  ;           print(msg) size=0009
316E:             46 77 05 A0 16 BC 90 73 4B                           ;             I DON'T THINK
3177:           A8                                                     ;           A8(PrintTheFirstNoun)
3178:           04 11                                                  ;           print(msg) size=0011
317A:             4E D1 15 8A 50 BD 15 58 8E BE 08 8A BE A0 56 72      ;             WILL STAND STILL FORTHAT.
318A:             2E                                                   ;             ~
318B:         0D 23                                                    ;         while_pass: size=0023
318D:           04 10                                                  ;           print(msg) size=0010
318F:             CF 62 8B 96 9B 64 1B A1 47 55 B3 8B C3 54 A3 91      ;             EVEN IF YOU COULD CLIMB
319F:           A8                                                     ;           A8(PrintTheFirstNoun)
31A0:           04 0E                                                  ;           print(msg) size=000E
31A2:             73 7B 47 D2 C8 8B F3 23 EE 72 1B A3 3F A1            ;             IT WOULDN'T HELP YOU.
31B0:     0B                                                           ;     compare_input_to(phrase) phrase="0B: LOOK * AT u......."
31B1:     36                                                           ;     IF_NOT_GOTO address=31E8
31B2:       0E 34                                                      ;       while_fail: size=0034
31B4:         13                                                       ;         process_phrase_by_room_first_second()
31B5:         0D 17                                                    ;         while_pass: size=0017
31B7:           1A                                                     ;           set_VAR_to_first_noun()
31B8:           15 04                                                  ;           check_VAR(bits) bits=04(.....X..)
31BA:           04 10                                                  ;           print(msg) size=0010
31BC:             3F B9 82 62 91 7A D5 15 04 18 8E 7B 83 61 03 A0      ;             SOMETHING IS WRITTEN ON
31CC:           AA                                                     ;           AA(PrintTheVarName)
31CD:           8B                                                     ;           8B(PrintPeriod)
31CE:         0D 18                                                    ;         while_pass: size=0018
31D0:           04 14                                                  ;           print(msg) size=0014
31D2:             5F BE 5D B1 D0 B5 02 A1 91 7A 62 17 DB 5F 33 48      ;             THERE'S NOTHING SPECIAL ABOUT
31E2:             B9 46 73 C6                                          ;             ~
31E6:           A8                                                     ;           A8(PrintTheFirstNoun)
31E7:           8B                                                     ;           8B(PrintPeriod)
31E8:     10                                                           ;     compare_input_to(phrase) phrase="10: LOOK * IN u......."
31E9:     15                                                           ;     IF_NOT_GOTO address=31FF
31EA:       0E 13                                                      ;       while_fail: size=0013
31EC:         13                                                       ;         process_phrase_by_room_first_second()
31ED:         0D 10                                                    ;         while_pass: size=0010
31EF:           04 0C                                                  ;           print(msg) size=000C
31F1:             5F BE 5D B1 D0 B5 02 A1 91 7A D0 15                  ;             THERE'S NOTHING IN
31FD:           A8                                                     ;           A8(PrintTheFirstNoun)
31FE:           8B                                                     ;           8B(PrintPeriod)
31FF:     21                                                           ;     compare_input_to(phrase) phrase="21: PLUGH * * *"
3200:     1A                                                           ;     IF_NOT_GOTO address=321B
3201:       0E 18                                                      ;       while_fail: size=0018
3203:         0D 05                                                    ;         while_pass: size=0005
3205:           03 00 3A                                               ;           is_located(room,object) room=00(Room_00) object=3A(Object3A)
3208:           00 8E                                                  ;           move_ACTIVE_and_look(room) room=8E(Electroshock room)
320A:         0D 0F                                                    ;         while_pass: size=000F
320C:           04 0A                                                  ;           print(msg) size=000A
320E:             C7 DE 81 15 04 BC 8E 62 47 62                        ;             YOU GOT BETTER.
3218:           17 3A 00                                               ;           move_to(object,room) object=3A(Object3A) room=00(Room_00)
321B:     22                                                           ;     compare_input_to(phrase) phrase="22: SCREAM * * *"
321C:     12                                                           ;     IF_NOT_GOTO address=322F
321D:       04 10                                                      ;       print(msg) size=0010
321F:         5B E0 27 60 31 60 41 A0 49 A0 89 D3 89 D3 69 CE          ;         YYYEEEEEOOOOOOWWWWWWWW!!
322F:     23                                                           ;     compare_input_to(phrase) phrase="23: QUIT * * *"
3230:     01                                                           ;     IF_NOT_GOTO address=3232
3231:       24                                                         ;       endless_loop()
3232:     25                                                           ;     compare_input_to(phrase) phrase="25: GO * * *"
3233:     01                                                           ;     IF_NOT_GOTO address=3235
3234:       91                                                         ;       91(PrintUseDirections)
3235:     26                                                           ;     compare_input_to(phrase) phrase="26: GO * AROUND u......."
3236:     01                                                           ;     IF_NOT_GOTO address=3238
3237:       91                                                         ;       91(PrintUseDirections)
3238:     3D                                                           ;     compare_input_to(phrase) phrase="3D: GO * TO u......."
3239:     01                                                           ;     IF_NOT_GOTO address=323B
323A:       91                                                         ;       91(PrintUseDirections)
323B:     27                                                           ;     compare_input_to(phrase) phrase="27: KICK u....... * *"
323C:     0E                                                           ;     IF_NOT_GOTO address=324B
323D:       0E 0C                                                      ;       while_fail: size=000C
323F:         13                                                       ;         process_phrase_by_room_first_second()
3240:         04 09                                                    ;         print(msg) size=0009
3242:           25 A1 AB 70 3B 95 77 BF 21                             ;           OUCH! MY TOE!
324B:     44                                                           ;     compare_input_to(phrase) phrase="44: HELLO * * *"
324C:     09                                                           ;     IF_NOT_GOTO address=3256
324D:       04 07                                                      ;       print(msg) size=0007
324F:         AF 6E 83 62 C5 98 21                                     ;         GREETINGS!
3256:     45                                                           ;     compare_input_to(phrase) phrase="45: HELLO ...P.... * *"
3257:     31                                                           ;     IF_NOT_GOTO address=3289
3258:       0E 2F                                                      ;       while_fail: size=002F
325A:         13                                                       ;         process_phrase_by_room_first_second()
325B:         0D 12                                                    ;         while_pass: size=0012
325D:           1A                                                     ;           set_VAR_to_first_noun()
325E:           15 10                                                  ;           check_VAR(bits) bits=10(...P....)
3260:           A8                                                     ;           A8(PrintTheFirstNoun)
3261:           04 0C                                                  ;           print(msg) size=000C
3263:             72 B1 87 8C 33 BB DF 1B 09 8D 63 F4                  ;             REPLIES, "HELLO."
326F:         0D 18                                                    ;         while_pass: size=0018
3271:           04 14                                                  ;           print(msg) size=0014
3273:             16 A0 43 DB E4 14 83 4A 01 18 3E C5 7B 17 CB 8C      ;             ONLY A CRAZY WOULD TALK TO THE
3283:             6B BF 5F BE                                          ;             ~
3287:           11                                                     ;           print_first_noun()
3288:           8B                                                     ;           8B(PrintPeriod)
3289:     46                                                           ;     compare_input_to(phrase) phrase="46: WHAT * * *"
328A:     08                                                           ;     IF_NOT_GOTO address=3293
328B:       04 06                                                      ;       print(msg) size=0006
328D:         46 77 98 C5 5B A2                                        ;         I DUNNO.
3293:     47                                                           ;     compare_input_to(phrase) phrase="47: WHAT u....... * *"
3294:     09                                                           ;     IF_NOT_GOTO address=329E
3295:       04 07                                                      ;       print(msg) size=0007
3297:         29 D1 20 16 85 A1 3F                                     ;         WHO KNOWS?
329E:     4A                                                           ;     compare_input_to(phrase) phrase="4A: COME * * *"
329F:     18                                                           ;     IF_NOT_GOTO address=32B8
32A0:       0E 16                                                      ;       while_fail: size=0016
32A2:         13                                                       ;         process_phrase_by_room_first_second()
32A3:         0D 13                                                    ;         while_pass: size=0013
32A5:           04 11                                                  ;           print(msg) size=0011
32A7:             9E 77 08 8A C6 9F 6B A1 C7 DE 90 14 FA DF 2F 62      ;             I'LL FOLLOW YOU ANYWHERE!
32B7:             21                                                   ;             ~
32B8:     49                                                           ;     compare_input_to(phrase) phrase="49: MEET u....... * *"
32B9:     26                                                           ;     IF_NOT_GOTO address=32E0
32BA:       0E 24                                                      ;       while_fail: size=0024
32BC:         13                                                       ;         process_phrase_by_room_first_second()
32BD:         0D 11                                                    ;         while_pass: size=0011
32BF:           09 00                                                  ;           compare_to_second_noun(object) object=00(nowhere)
32C1:           A8                                                     ;           A8(PrintTheFirstNoun)
32C2:           04 0C                                                  ;           print(msg) size=000C
32C4:             09 4F CB B5 89 96 67 B1 90 BE 5B 70                  ;             BOWS IN GREETING.
32D0:         04 0E                                                    ;         print(msg) size=000E
32D2:           5F BE 44 DB 6B A1 83 7A AF 6E 83 62 CF 98              ;           THEY BOW IN GREETING.
32E0:     28                                                           ;     compare_input_to(phrase) phrase="28: FEED ...P.... WITH u......."
32E1:     0A                                                           ;     IF_NOT_GOTO address=32EC
32E2:       0E 08                                                      ;       while_fail: size=0008
32E4:         13                                                       ;         process_phrase_by_room_first_second()
32E5:         0D 04                                                    ;         while_pass: size=0004
32E7:           1A                                                     ;           set_VAR_to_first_noun()
32E8:           15 10                                                  ;           check_VAR(bits) bits=10(...P....)
32EA:           AD                                                     ;           AD(PrintTheVarNotHungry)
32EB:         AE                                                       ;         AE(PrintFindMouthGame)
32EC:     29                                                           ;     compare_input_to(phrase) phrase="29: FEED u....... TO ...P...."
32ED:     0A                                                           ;     IF_NOT_GOTO address=32F8
32EE:       0E 08                                                      ;       while_fail: size=0008
32F0:         13                                                       ;         process_phrase_by_room_first_second()
32F1:         0D 04                                                    ;         while_pass: size=0004
32F3:           1B                                                     ;           set_VAR_to_second_noun()
32F4:           15 10                                                  ;           check_VAR(bits) bits=10(...P....)
32F6:           AD                                                     ;           AD(PrintTheVarNotHungry)
32F7:         AE                                                       ;         AE(PrintFindMouthGame)
32F8:     2F                                                           ;     compare_input_to(phrase) phrase="2F: WAIT * * *"
32F9:     07                                                           ;     IF_NOT_GOTO address=3301
32FA:       04 05                                                      ;       print(msg) size=0005
32FC:         9B 29 57 C6 3E                                           ;         <PAUSE>
3301:     2D                                                           ;     compare_input_to(phrase) phrase="2D: PULL * UP u......."
3302:     09                                                           ;     IF_NOT_GOTO address=330C
3303:       0E 07                                                      ;       while_fail: size=0007
3305:         13                                                       ;         process_phrase_by_room_first_second()
3306:         0D 02                                                    ;         while_pass: size=0002
3308:           1A                                                     ;           set_VAR_to_first_noun()
3309:           8F                                                     ;           8F(??GetObject)
330A:         14                                                       ;         execute_and_reverse_status:
330B:         0C                                                       ;         fail()
330C:     48                                                           ;     compare_input_to(phrase) phrase="48: LOWER u....... * *"
330D:     11                                                           ;     IF_NOT_GOTO address=331F
330E:       0E 0F                                                      ;       while_fail: size=000F
3310:         13                                                       ;         process_phrase_by_room_first_second()
3311:         04 0C                                                    ;         print(msg) size=000C
3313:           C7 DE D3 14 E6 96 09 15 82 17 97 49                    ;           YOU CAN'T DO THAT.
331F:     33                                                           ;     compare_input_to(phrase) phrase=??? Phrase 33 not found
3320:     01                                                           ;     IF_NOT_GOTO address=3322
3321:       AF                                                         ;       AF(PrintLeapsBounds)
3322:     34                                                           ;     compare_input_to(phrase) phrase="34: JUMP * OVER u......."
3323:     01                                                           ;     IF_NOT_GOTO address=3325
3324:       AF                                                         ;       AF(PrintLeapsBounds)
3325:     0D                                                           ;     compare_input_to(phrase) phrase="0D: THROW .v...... AT ...P...."
3326:     2B                                                           ;     IF_NOT_GOTO address=3352
3327:       0E 29                                                      ;       while_fail: size=0029
3329:         0D 25                                                    ;         while_pass: size=0025
332B:           1A                                                     ;           set_VAR_to_first_noun()
332C:           8F                                                     ;           8F(??GetObject)
332D:           0E 21                                                  ;           while_fail: size=0021
332F:             0D 1E                                                ;             while_pass: size=001E
3331:               0E 07                                              ;               while_fail: size=0007
3333:                 14                                               ;                 execute_and_reverse_status:
3334:                 15 10                                            ;                 check_VAR(bits) bits=10(...P....)
3336:                 1B                                               ;                 set_VAR_to_second_noun()
3337:                 14                                               ;                 execute_and_reverse_status:
3338:                 15 40                                            ;                 check_VAR(bits) bits=40(.v......)
333A:               A8                                                 ;               A8(PrintTheFirstNoun)
333B:               04 0F                                              ;               print(msg) size=000F
333D:                 07 4F 17 98 CA B5 37 49 F5 8B D3 B8 B8 16 46     ;                 BOUNCES HARMLESSLY OFF
334C:               A9                                                 ;               A9(PrintTheSecondNoun)
334D:               8B                                                 ;               8B(PrintPeriod)
334E:               10                                                 ;               drop_VAR()
334F:             13                                                   ;             process_phrase_by_room_first_second()
3350:         14                                                       ;         execute_and_reverse_status:
3351:         0C                                                       ;         fail()
3352:     0E                                                           ;     compare_input_to(phrase) phrase="0E: THROW u....... TO ...P...."
3353:     13                                                           ;     IF_NOT_GOTO address=3367
3354:       0E 11                                                      ;       while_fail: size=0011
3356:         13                                                       ;         process_phrase_by_room_first_second()
3357:         0D 0E                                                    ;         while_pass: size=000E
3359:           A9                                                     ;           A9(PrintTheSecondNoun)
335A:           04 0B                                                  ;           print(msg) size=000B
335C:             77 5B 05 B9 19 BC 9E 48 D6 15 2E                     ;             DOESN'T WANT IT.
3367:     0F                                                           ;     compare_input_to(phrase) phrase="0F: DROP u....... IN u......."
3368:     17                                                           ;     IF_NOT_GOTO address=3380
3369:       0E 15                                                      ;       while_fail: size=0015
336B:         0D 03                                                    ;         while_pass: size=0003
336D:           1A                                                     ;           set_VAR_to_first_noun()
336E:           14                                                     ;           execute_and_reverse_status:
336F:           8F                                                     ;           8F(??GetObject)
3370:         13                                                       ;         process_phrase_by_room_first_second()
3371:         0D 0D                                                    ;         while_pass: size=000D
3373:           A8                                                     ;           A8(PrintTheFirstNoun)
3374:           04 08                                                  ;           print(msg) size=0008
3376:             40 D2 F3 23 16 67 D0 15                              ;             WON'T FIT IN
337E:           A9                                                     ;           A9(PrintTheSecondNoun)
337F:           8B                                                     ;           8B(PrintPeriod)
3380:     07                                                           ;     compare_input_to(phrase) phrase="07: INVENT * * *"
3381:     1A                                                           ;     IF_NOT_GOTO address=339C
3382:       0D 18                                                      ;       while_pass: size=0018
3384:         04 15                                                    ;         print(msg) size=0015
3386:           C7 DE 94 14 45 5E 3C 49 D0 DD D6 6A DB 72 FE 67        ;           YOU ARE CARRYING THE FOLLOWING:
3396:           89 8D 91 7A 3A                                         ;           ~
339B:         06                                                       ;         print_inventory()
; ENDOF 2F24

Helper Commands

HelperCommands:
; List of helper commands. Each is tagged with an ID. In the first case, "81" is a command to
; print "ANOTHER SMALL PADDED ROOM."
339C: 00 88 36                                                         ; size=0836
;
; PrintAnotherPaddedRoom
339F: 81 14                                                            ; Function=81(PrintAnotherPaddedRoom) size=0014
33A1: 04 12                                                            ; print(msg) size=0012
33A3:   99 48 5F BE 95 AF 8E 91 12 8A FE 46 F3 5F 01 B3                ;   ANOTHER SMALL PADDED ROOM.
33B3:   DB 95                                                          ;   ~
;
; PrintEastWestHall
33B5: 82 11                                                            ; Function=82(PrintEastWestHall) size=0011
33B7: 04 0F                                                            ; print(msg) size=000F
33B9:   5F BE 23 15 15 BA B5 D0 0A BC 46 48 1B D0 2E                   ;   THE EAST-WEST HALLWAY.
;
; PrintNorthSouthHall
33C8: 83 12                                                            ; Function=83(PrintNorthSouthHall) size=0012
33CA: 04 10                                                            ; print(msg) size=0010
33CC:   5F BE 99 16 C2 B3 E1 EB 82 C6 9B 15 11 8D 5F 4A                ;   THE NORTH-SOUTH HALLWAY.
;
; PrintSouthWallGreenDoor
33DC: 84 1C                                                            ; Function=84(PrintSouthWallGreenDoor) size=001C
33DE: 04 1A                                                            ; print(msg) size=001A
33E0:   03 A0 5F BE 61 17 82 C6 F3 17 F3 8C 5F BE 5B B1                ;   ON THE SOUTH WALL THERE IS A GREEN DOOR
33F0:   4B 7B 49 45 67 B1 86 96 44 A0                                  ;   ~
;
; PrintNorthWallRedDoor
33FA: 85 1B                                                            ; Function=85(PrintNorthWallRedDoor) size=001B
33FC: 04 19                                                            ; print(msg) size=0019
33FE:   03 A0 5F BE 99 16 C2 B3 F3 17 F3 8C 5F BE 5B B1                ;   ON THE NORTH WALL THERE IS A RED DOOR
340E:   4B 7B 54 45 F3 5F 81 5B 52                                     ;   ~
;
; PrintNorthWallGreedDoor
3417: 86 1C                                                            ; Function=86(PrintNorthWallGreedDoor) size=001C
3419: 04 1A                                                            ; print(msg) size=001A
341B:   03 A0 5F BE 99 16 C2 B3 F3 17 F3 8C 5F BE 5B B1                ;   ON THE NORTH WALL THERE IS A GREEN DOOR
342B:   4B 7B 49 45 67 B1 86 96 44 A0                                  ;   ~
;
; PrintSouthWallRedDOor
3435: 87 1B                                                            ; Function=87(PrintSouthWallRedDOor) size=001B
3437: 04 19                                                            ; print(msg) size=0019
3439:   03 A0 5F BE 61 17 82 C6 F3 17 F3 8C 5F BE 5B B1                ;   ON THE SOUTH WALL THERE IS A RED DOOR
3449:   4B 7B 54 45 F3 5F 81 5B 52                                     ;   ~
;
; PrintEastWallBlueDoor
3452: 88 1B                                                            ; Function=88(PrintEastWallBlueDoor) size=001B
3454: 04 19                                                            ; print(msg) size=0019
3456:   03 A0 5F BE 23 15 F3 B9 0E D0 16 8A F4 72 4B 5E                ;   ON THE EAST WALL THERE IS A BLUE DOOR
3466:   C3 B5 B6 14 1B C4 81 5B 52                                     ;   ~
;
; PrintWestWallBlueDoor
346F: 89 1B                                                            ; Function=89(PrintWestWallBlueDoor) size=001B
3471: 04 19                                                            ; print(msg) size=0019
3473:   03 A0 5F BE F7 17 F3 B9 0E D0 16 8A F4 72 4B 5E                ;   ON THE WEST WALL THERE IS A BLUE DOOR
3483:   C3 B5 B6 14 1B C4 81 5B 52                                     ;   ~
;
; PrintClosed
348C: 8A 0D                                                            ; Function=8A(PrintClosed) size=000D
348E: 04 0B                                                            ; print(msg) size=000B
3490:   23 D1 13 54 4B 7B C9 54 A6 B7 2E                               ;   WHICH IS CLOSED.
;
; PrintThisIsOrYouAreIn
349B: 8C 17                                                            ; Function=8C(PrintThisIsOrYouAreIn) size=0017
349D: 0B 15 05                                                         ; switch(is_less_equal_last_random(value)): size=0015
34A0:   7F                                                             ;   is_less_equal_last_random(value) value=7F
34A1:   07                                                             ;   IF_NOT_GOTO address=34A9
34A2:     04 05                                                        ;     print(msg) size=0005
34A4:       63 BE CB B5 53                                             ;       THIS IS
34A9:   FF                                                             ;   is_less_equal_last_random(value) value=FF
34AA:   09                                                             ;   IF_NOT_GOTO address=34B4
34AB:     04 07                                                        ;     print(msg) size=0007
34AD:       C7 DE 94 14 4B 5E 4E                                       ;       YOU ARE IN
;
; PrintPeriod
34B4: 8B 04                                                            ; Function=8B(PrintPeriod) size=0004
34B6: 04 02                                                            ; print(msg) size=0002
34B8:   3B F4                                                          ;   .
;
; PrintObjectIsClosed
34BA: 8D 11                                                            ; Function=8D(PrintObjectIsClosed) size=0011
34BC: 0D 0F                                                            ; while_pass: size=000F
34BE:   14                                                             ;   execute_and_reverse_status:
34BF:   20 38                                                          ;   is_ACTIVE_this(object) object=38(SYSTEM)
34C1:   15 02                                                          ;   check_VAR(bits) bits=02(......O.)
34C3:   AA                                                             ;   AA(PrintTheVarName)
34C4:   04 07                                                          ;   print(msg) size=0007
34C6:     4B 7B C9 54 A6 B7 2E                                         ;     IS CLOSED.
;
; ??GetObject
34CD: 8F 4F                                                            ; Function=8F(??GetObject) size=004F
34CF: 0D 4D                                                            ; while_pass: size=004D
34D1:   0E 4A                                                          ;   while_fail: size=004A
34D3:     2D 37                                                        ;     compare_to_VAR(object) phrase=??? Phrase 37 not found
34D5:     0D 1A                                                        ;     while_pass: size=001A
34D7:       15 10                                                      ;       check_VAR(bits) bits=10(...P....)
34D9:       04 16                                                      ;       print(msg) size=0016
34DB:         46 77 05 A0 16 BC 90 73 CA 83 59 5E 46 7A E1 14          ;         I DON'T THINK HE WILL COOPERATE.
34EB:         5F A0 D6 B0 DB 63                                        ;         ~
34F1:     0D 1F                                                        ;     while_pass: size=001F
34F3:       14                                                         ;       execute_and_reverse_status:
34F4:       15 20                                                      ;       check_VAR(bits) bits=20(..C.....)
34F6:       04 18                                                      ;       print(msg) size=0018
34F8:         C7 DE 94 14 53 5E D6 C4 4B 5E 13 98 44 A4 DB 8B          ;         YOU ARE QUITE INCAPABLE OF REMOVING
3508:         C3 9E 6F B1 53 A1 AB 98                                  ;         ~
3510:       AA                                                         ;       AA(PrintTheVarName)
3511:       8B                                                         ;       8B(PrintPeriod)
3512:     18                                                           ;     is_VAR_owned_by_ACTIVE()
3513:     0D 08                                                        ;     while_pass: size=0008
3515:       0F                                                         ;       pick_up_VAR()
3516:       AA                                                         ;       AA(PrintTheVarName)
3517:       04 04                                                      ;       print(msg) size=0004
3519:         4D BD A7 61                                              ;         TAKEN.
351D:   18                                                             ;   is_VAR_owned_by_ACTIVE()
;
; PrintAlreadyHaveObject
351E: A2 13                                                            ; Function=A2(PrintAlreadyHaveObject) size=0013
3520: 0D 11                                                            ; while_pass: size=0011
3522:   1A                                                             ;   set_VAR_to_first_noun()
3523:   18                                                             ;   is_VAR_owned_by_ACTIVE()
3524:   04 0B                                                          ;   print(msg) size=000B
3526:     C7 DE 8E 14 63 B1 FB 5C 58 72 45                             ;     YOU ALREADY HAVE
3531:   AA                                                             ;   AA(PrintTheVarName)
3532:   8B                                                             ;   8B(PrintPeriod)
;
; ??SomethingUseDirections
3533: 90 09                                                            ; Function=90(??SomethingUseDirections) size=0009
3535: 0B 07 0A                                                         ; switch(compare_input_to(phrase)): size=0007
3538:   36                                                             ;   compare_input_to(phrase) phrase=??? Phrase 36 not found
3539:   01                                                             ;   IF_NOT_GOTO address=353B
353A:     91                                                           ;     91(PrintUseDirections)
353B:   37                                                             ;   compare_input_to(phrase) phrase=??? Phrase 37 not found
353C:   01                                                             ;   IF_NOT_GOTO address=353E
353D:     91                                                           ;     91(PrintUseDirections)
;
; PrintUseDirections
353E: 91 19                                                            ; Function=91(PrintUseDirections) size=0019
3540: 1F 17                                                            ; print2(msg) size=0017
3542:   FF A5 57 49 B5 17 46 5E 2F 7B 03 56 1D A0 A6 16                ;   PLEASE USE DIRECTIONS N,S,E, OR W.
3552:   3F BB 11 EE 99 AF 2E                                           ;   ~
;
; ??YouCantDoThatTo
3559: 92 18                                                            ; Function=92(??YouCantDoThatTo) size=0018
355B: 0D 16                                                            ; while_pass: size=0016
355D:   1A                                                             ;   set_VAR_to_first_noun()
355E:   14                                                             ;   execute_and_reverse_status:
355F:   15 08                                                          ;   check_VAR(bits) bits=08(....A...)
3561:   04 0E                                                          ;   print(msg) size=000E
3563:     C7 DE D3 14 E6 96 09 15 82 17 73 49 6B BF                    ;     YOU CAN'T DO THAT TO
3571:   A8                                                             ;   A8(PrintTheFirstNoun)
3572:   8B                                                             ;   8B(PrintPeriod)
;
; InitializeGame
3573: 94 80 8C                                                         ; Function=94(InitializeGame) size=008C
3576: 0D 80 89                                                         ; while_pass: size=0089
3579:   17 1C 00                                                       ;   move_to(object,room) object=1C(RayA) room=00(Room_00)
357C:   17 1D 00                                                       ;   move_to(object,room) object=1D(RayB) room=00(Room_00)
357F:   17 1E 00                                                       ;   move_to(object,room) object=1E(NapoleanA) room=00(Room_00)
3582:   17 1F 00                                                       ;   move_to(object,room) object=1F(Object1F) room=00(Room_00)
3585:   17 20 00                                                       ;   move_to(object,room) object=20(NapoleanB) room=00(Room_00)
3588:   17 21 00                                                       ;   move_to(object,room) object=21(Object21) room=00(Room_00)
358B:   17 22 00                                                       ;   move_to(object,room) object=22(PicassoA) room=00(Room_00)
358E:   17 23 00                                                       ;   move_to(object,room) object=23(Object23) room=00(Room_00)
3591:   17 24 00                                                       ;   move_to(object,room) object=24(PicassoB) room=00(Room_00)
3594:   17 25 00                                                       ;   move_to(object,room) object=25(Object25) room=00(Room_00)
3597:   17 26 00                                                       ;   move_to(object,room) object=26(MerlinA) room=00(Room_00)
359A:   17 27 00                                                       ;   move_to(object,room) object=27(MerlinB) room=00(Room_00)
359D:   17 28 00                                                       ;   move_to(object,room) object=28(UnconsciousDoctorA) room=00(Room_00)
35A0:   17 29 00                                                       ;   move_to(object,room) object=29(UnconsciousDoctorB) room=00(Room_00)
35A3:   17 2A 00                                                       ;   move_to(object,room) object=2A(HoudiniA) room=00(Room_00)
35A6:   17 2B 00                                                       ;   move_to(object,room) object=2B(HoudiniB) room=00(Room_00)
35A9:   17 2C 00                                                       ;   move_to(object,room) object=2C(HoudiniC) room=00(Room_00)
35AC:   17 1B 8E                                                       ;   move_to(object,room) object=1B(GreenKeyA) room=8E(Electroshock room)
35AF:   17 14 00                                                       ;   move_to(object,room) object=14(RedKeyA) room=00(Room_00)
35B2:   17 16 81                                                       ;   move_to(object,room) object=16(WindowHook) room=81(Maintenance room)
35B5:   17 3B 82                                                       ;   move_to(object,room) object=3B(RedKeyB) room=82(Dispensary)
35B8:   17 3D 00                                                       ;   move_to(object,room) object=3D(SecretDoor) room=00(Room_00)
35BB:   17 15 00                                                       ;   move_to(object,room) object=15(BluePillA) room=00(Room_00)
35BE:   17 39 00                                                       ;   move_to(object,room) object=39(BluePillB) room=00(Room_00)
35C1:   17 41 8C                                                       ;   move_to(object,room) object=41(GreenKeyB) room=8C(East end east-west hall)
35C4:   0B 2B 05                                                       ;   switch(is_less_equal_last_random(value)): size=002B
35C7:     55                                                           ;     is_less_equal_last_random(value) value=55
35C8:     0B                                                           ;     IF_NOT_GOTO address=35D4
35C9:       0D 09                                                      ;       while_pass: size=0009
35CB:         17 15 82                                                 ;         move_to(object,room) object=15(BluePillA) room=82(Dispensary)
35CE:         1C 1F                                                    ;         set_VAR(object) object=1F(Object1F)
35D0:         95                                                       ;         95(RandomMoveAndDrop)
35D1:         1C 23                                                    ;         set_VAR(object) object=23(Object23)
35D3:         95                                                       ;         95(RandomMoveAndDrop)
35D4:     AB                                                           ;     is_less_equal_last_random(value) value=AB
35D5:     0E                                                           ;     IF_NOT_GOTO address=35E4
35D6:       0D 0C                                                      ;       while_pass: size=000C
35D8:         17 39 82                                                 ;         move_to(object,room) object=39(BluePillB) room=82(Dispensary)
35DB:         1C 21                                                    ;         set_VAR(object) object=21(Object21)
35DD:         95                                                       ;         95(RandomMoveAndDrop)
35DE:         1C 3D                                                    ;         set_VAR(object) object=3D(SecretDoor)
35E0:         95                                                       ;         95(RandomMoveAndDrop)
35E1:         1C 23                                                    ;         set_VAR(object) object=23(Object23)
35E3:         95                                                       ;         95(RandomMoveAndDrop)
35E4:     FF                                                           ;     is_less_equal_last_random(value) value=FF
35E5:     0B                                                           ;     IF_NOT_GOTO address=35F1
35E6:       0D 09                                                      ;       while_pass: size=0009
35E8:         17 39 82                                                 ;         move_to(object,room) object=39(BluePillB) room=82(Dispensary)
35EB:         1C 1F                                                    ;         set_VAR(object) object=1F(Object1F)
35ED:         95                                                       ;         95(RandomMoveAndDrop)
35EE:         1C 25                                                    ;         set_VAR(object) object=25(Object25)
35F0:         95                                                       ;         95(RandomMoveAndDrop)
35F1:   1C 1D                                                          ;   set_VAR(object) object=1D(RayB)
35F3:   95                                                             ;   95(RandomMoveAndDrop)
35F4:   1C 27                                                          ;   set_VAR(object) object=27(MerlinB)
35F6:   95                                                             ;   95(RandomMoveAndDrop)
35F7:   1C 29                                                          ;   set_VAR(object) object=29(UnconsciousDoctorB)
35F9:   95                                                             ;   95(RandomMoveAndDrop)
35FA:   1C 2B                                                          ;   set_VAR(object) object=2B(HoudiniB)
35FC:   95                                                             ;   95(RandomMoveAndDrop)
35FD:   17 2E 95                                                       ;   move_to(object,room) object=2E(Doctor) room=95(Office)
3600:   00 88                                                          ;   move_ACTIVE_and_look(room) room=88(Small square room)
;
; RandomMoveAndDrop
3602: 95 53                                                            ; Function=95(RandomMoveAndDrop) size=0053
3604: 0D 51                                                            ; while_pass: size=0051
3606:   2B                                                             ;   generate_random()
3607:   0B 4E 05                                                       ;   switch(is_less_equal_last_random(value)): size=004E
360A:     18                                                           ;     is_less_equal_last_random(value) value=18
360B:     05                                                           ;     IF_NOT_GOTO address=3611
360C:       0D 03                                                      ;       while_pass: size=0003
360E:         19 85                                                    ;         move_ACTIVE(room) room=85(Padded room A)
3610:         10                                                       ;         drop_VAR()
3611:     30                                                           ;     is_less_equal_last_random(value) value=30
3612:     05                                                           ;     IF_NOT_GOTO address=3618
3613:       0D 03                                                      ;       while_pass: size=0003
3615:         19 86                                                    ;         move_ACTIVE(room) room=86(Padded room B)
3617:         10                                                       ;         drop_VAR()
3618:     47                                                           ;     is_less_equal_last_random(value) value=47
3619:     05                                                           ;     IF_NOT_GOTO address=361F
361A:       0D 03                                                      ;       while_pass: size=0003
361C:         19 89                                                    ;         move_ACTIVE(room) room=89(Padded room C)
361E:         10                                                       ;         drop_VAR()
361F:     5E                                                           ;     is_less_equal_last_random(value) value=5E
3620:     05                                                           ;     IF_NOT_GOTO address=3626
3621:       0D 03                                                      ;       while_pass: size=0003
3623:         19 8B                                                    ;         move_ACTIVE(room) room=8B(Padded room D)
3625:         10                                                       ;         drop_VAR()
3626:     75                                                           ;     is_less_equal_last_random(value) value=75
3627:     05                                                           ;     IF_NOT_GOTO address=362D
3628:       0D 03                                                      ;       while_pass: size=0003
362A:         19 8D                                                    ;         move_ACTIVE(room) room=8D(Padded room E)
362C:         10                                                       ;         drop_VAR()
362D:     8C                                                           ;     is_less_equal_last_random(value) value=8C
362E:     05                                                           ;     IF_NOT_GOTO address=3634
362F:       0D 03                                                      ;       while_pass: size=0003
3631:         19 90                                                    ;         move_ACTIVE(room) room=90(Padded room F)
3633:         10                                                       ;         drop_VAR()
3634:     A3                                                           ;     is_less_equal_last_random(value) value=A3
3635:     05                                                           ;     IF_NOT_GOTO address=363B
3636:       0D 03                                                      ;       while_pass: size=0003
3638:         19 92                                                    ;         move_ACTIVE(room) room=92(Kitchen)
363A:         10                                                       ;         drop_VAR()
363B:     BA                                                           ;     is_less_equal_last_random(value) value=BA
363C:     05                                                           ;     IF_NOT_GOTO address=3642
363D:       0D 03                                                      ;       while_pass: size=0003
363F:         19 96                                                    ;         move_ACTIVE(room) room=96(South end north-south hall)
3641:         10                                                       ;         drop_VAR()
3642:     D1                                                           ;     is_less_equal_last_random(value) value=D1
3643:     05                                                           ;     IF_NOT_GOTO address=3649
3644:       0D 03                                                      ;       while_pass: size=0003
3646:         19 97                                                    ;         move_ACTIVE(room) room=97(Dining room)
3648:         10                                                       ;         drop_VAR()
3649:     E8                                                           ;     is_less_equal_last_random(value) value=E8
364A:     05                                                           ;     IF_NOT_GOTO address=3650
364B:       0D 03                                                      ;       while_pass: size=0003
364D:         19 98                                                    ;         move_ACTIVE(room) room=98(Recreation room)
364F:         10                                                       ;         drop_VAR()
3650:     FF                                                           ;     is_less_equal_last_random(value) value=FF
3651:     05                                                           ;     IF_NOT_GOTO address=3657
3652:       0D 03                                                      ;       while_pass: size=0003
3654:         19 94                                                    ;         move_ACTIVE(room) room=94(Padded room G)
3656:         10                                                       ;         drop_VAR()
;
; AwakenInRoom
3657: A3 61                                                            ; Function=A3(AwakenInRoom) size=0061
3659: 0D 5F                                                            ; while_pass: size=005F
365B:   2C 13                                                          ;   set_ACTIVE(object) object=13(PLAYER)
365D:   19 88                                                          ;   move_ACTIVE(room) room=88(Small square room)
365F:   1F 59                                                          ;   print2(msg) size=0059
3661:     C7 DE 4F 15 33 61 4B 49 69 BE 7A C4 51 18 4A C2              ;     YOU FEEL AS THOUGH YOU HAVE JUST AWAKENE
3671:     CF 49 FF 15 F3 B9 F3 49 B0 85 F3 5F 79 68 43 90              ;     D FROM A VERY LONG BAD DREAM ABOUT DOCTO
3681:     CF 17 7B B4 80 8D C4 6A F3 46 EF 5B 5B 48 B9 46              ;     RS AND PADDED ROOMS. YOUR THOUGHTS ARE,
3691:     73 C6 75 5B 84 BF C3 B5 33 98 46 A4 E6 59 39 17              ;     "WHERE AM I?"
36A1:     F5 9F 5B F4 34 A1 82 17 29 A1 4D 75 94 14 B3 63              ;     ~
36B1:     3A 1E 2F 62 8F 14 B8 15 22                                   ;     ~
;
; PrintNapoleanIntro
36BA: 96 62                                                            ; Function=96(PrintNapoleanIntro) size=0062
36BC: 04 60                                                            ; print(msg) size=0060
36BE:   55 45 84 74 73 C1 F0 68 7B 9B 81 8D 50 86 CF 6A                ;   A SHORT, FUNNY LOOKING MAN STANDS NEARBY
36CE:   83 48 FB B9 4D 98 8F 16 2C 49 DB E0 DB 72 81 8D                ;   . HE LOOKS AT YOU, "BOW IN THE PRESENCE
36DE:   CB 87 73 49 C7 DE FC ED 09 4F D0 15 82 17 52 5E                ;   OF NAPOLEON BONAPARTE! I AM THE MIGHTIES
36EE:   75 B1 8D 61 51 5E 90 64 E9 48 F1 8B 84 96 0B A0                ;   T LEADER IN THE WORLD!"
36FE:   54 A4 D9 BD BB 15 5B 48 5F BE 6B 16 2E 6D 35 79                ;   ~
370E:   0E BC 86 5F 23 62 83 7A 5F BE 01 18 7E B2 E3 06                ;   ~
;
; PrintNapolean
371E: 97 20                                                            ; Function=97(PrintNapolean) size=0020
3720: 04 1E                                                            ; print(msg) size=001E
3722:   D2 97 BF 9F 03 A0 4B 7B F0 B3 10 99 CA 6A 4B 7B                ;   NAPOLEON IS RUNNING HIS HANDS OVER THE W
3732:   50 72 0B 5C 4F A1 96 AF DB 72 0E D0 2F 8E                      ;   ALLS.
;
; PrintPicassoIntro
3740: 98 80 80                                                         ; Function=98(PrintPicassoIntro) size=0080
3743: 04 7E                                                            ; print(msg) size=007E
3745:   4F 45 83 48 83 7A 59 45 96 73 48 5E F5 B2 33 89                ;   A MAN IN A WHITE FROCK, A BERET, AND HOL
3755:   44 45 2F 62 73 C1 8E 48 A9 15 C3 8B AB 98 52 45                ;   DING A PALETTE AND BRUSH SEEMS TO BE PAI
3765:   3F 48 3F C0 90 14 04 58 F5 B3 15 71 2F 60 D6 B5                ;   NTING WHAT LOOKS LIKE A DOOR ON ONE OF T
3775:   C4 9C 52 5E D0 47 90 BE D9 6A 56 72 49 16 A5 9F                ;   HE WALLS. HE LOOKS UP, "EYE AM A GRATE A
3785:   43 16 9B 85 46 45 44 A0 C0 16 C0 16 51 5E 96 64                ;   RTEEST! MAH NAM EEZ PICASSO!"
3795:   DB 72 0E D0 2F 8E 9F 15 49 16 A5 9F B2 17 FC ED                ;   ~
37A5:   47 63 8F 14 7B 14 AB 6E DB BD 3E 49 35 60 AB BB                ;   ~
37B5:   8A 91 8B 16 47 90 63 63 85 A5 65 49 6C 9C                      ;   ~
;
; PrintPicasso
37C3: 99 22                                                            ; Function=99(PrintPicasso) size=0022
37C5: 04 20                                                            ; print(msg) size=0020
37C7:   85 A5 65 49 D5 9C 2F 60 D6 B5 C4 9C 52 5E D0 47                ;   PICASSO SEEMS TO BE PAINTING A DOOR ON O
37D7:   90 BE C3 6A 09 15 A3 A0 03 A0 0F A0 F3 17 17 8D                ;   NE WALL.
;
; PrintBluePill
37E7: 9D 14                                                            ; Function=9D(PrintBluePill) size=0014
37E9: 04 12                                                            ; print(msg) size=0012
37EB:   5F BE 5B B1 4B 7B 44 45 67 8E E3 16 F3 8C F4 72                ;   THERE IS A BLUE PILL HERE.
37FB:   DB 63                                                          ;   ~
;
; PrintUnshavenMan
37FD: 9F 50                                                            ; Function=9F(PrintUnshavenMan) size=0050
37FF: 1F 4E                                                            ; print2(msg) size=004E
3801:   55 45 84 74 73 C1 09 BA AB 54 17 EE 9A 9A CF 49                ;   A SHORT, STOCKY, UNSHAVEN MAN WEARING A
3811:   8F 96 83 48 A3 D0 10 B2 C3 6A B6 14 36 A0 59 DB                ;   BLOODY WHITE SURGICAL GOWN AND HOLDING A
3821:   96 73 55 5E 31 C6 D3 78 09 8A 80 A1 90 14 0A 58                ;   LARGE HYPODERMIC IS STARING AT YOU.
3831:   BE 9F 91 7A 7B 14 54 8B 9B 6C 12 76 7F 9E AB B2                ;   ~
3841:   CB 51 D5 B5 54 BD 91 7A 96 14 51 18 DB C7                      ;   ~
;
; ??CommandResponse
384F: 9A 80 C5                                                         ; Function=9A(??CommandResponse) size=00C5
3852: 0E 80 C2                                                         ; while_fail: size=00C2
3855:   0D 20                                                          ;   while_pass: size=0020
3857:     0E 04                                                        ;     while_fail: size=0004
3859:       0A 46                                                      ;       compare_input_to(phrase) phrase="46: WHAT * * *"
385B:       0A 47                                                      ;       compare_input_to(phrase) phrase="47: WHAT u....... * *"
385D:     1F 18                                                        ;     print2(msg) size=0018
385F:       91 1E 59 C2 46 7A 9B 15 5B CA C7 DE 83 AF A9 9A            ;       "YOU WILL HAVE YOUR ANSWER IN TIME."
386F:       23 62 83 7A 8F BE DC 63                                    ;       ~
3877:   0D 13                                                          ;   while_pass: size=0013
3879:     0A 49                                                        ;     compare_input_to(phrase) phrase="49: MEET u....... * *"
387B:     1F 0F                                                        ;     print2(msg) size=000F
387D:       5F BE 49 DB 67 B1 07 BC DA 46 C6 16 F4 72 2E               ;       THEY GREET EACH OTHER.
388C:   0D 11                                                          ;   while_pass: size=0011
388E:     0A 4A                                                        ;     compare_input_to(phrase) phrase="4A: COME * * *"
3890:     1F 0D                                                        ;     print2(msg) size=000D
3892:       FD 1C 0E EE 86 5F 82 17 59 5E 5F 4A 22                     ;       "OK, LEAD THE WAY."
389F:   0D 18                                                          ;   while_pass: size=0018
38A1:     0A 2F                                                        ;     compare_input_to(phrase) phrase="2F: WAIT * * *"
38A3:     1F 14                                                        ;     print2(msg) size=0014
38A5:       91 1E 59 C2 2E A1 45 5B 0E BC 98 5F 4F 5E 4A 5E            ;       "YOU WOULDN'T LEAVE ME HERE!"
38B5:       2F 62 E3 06                                                ;       ~
38B9:   0D 5C                                                          ;   while_pass: size=005C
38BB:     1F 0F                                                        ;     print2(msg) size=000F
38BD:       5F BE B4 16 03 BA D6 97 54 5E E6 61 4B DB 53               ;       THE OBSTINATE REPLY IS
38CC:     0B 49 05                                                     ;     switch(is_less_equal_last_random(value)): size=0049
38CF:       41                                                         ;       is_less_equal_last_random(value) value=41
38D0:       14                                                         ;       IF_NOT_GOTO address=38E5
38D1:         1F 12                                                    ;         print2(msg) size=0012
38D3:           D9 1C 0B EE DB 22 06 9A 51 18 23 C6 B4 B7 D0 C9        ;           "NO, I'M NOT YOUR SERVANT!"
38E3:           AC BB                                                  ;           ~
38E5:       82                                                         ;       is_less_equal_last_random(value) value=82
38E6:       0E                                                         ;       IF_NOT_GOTO address=38F5
38E7:         1F 0C                                                    ;         print2(msg) size=000C
38E9:           49 1B D6 15 51 18 3D C6 40 61 E3 06                    ;           "DO IT YOURSELF!"
38F5:       C3                                                         ;       is_less_equal_last_random(value) value=C3
38F6:       10                                                         ;       IF_NOT_GOTO address=3907
38F7:         1F 0E                                                    ;         print2(msg) size=000E
38F9:           91 1E 4F C2 66 C6 AF 14 E4 14 83 4A E3 06              ;           "YOU MUST BE CRAZY!"
3907:       FF                                                         ;       is_less_equal_last_random(value) value=FF
3908:       0E                                                         ;       IF_NOT_GOTO address=3917
3909:         1F 0C                                                    ;         print2(msg) size=000C
390B:           FB 1B 80 5B F3 23 10 D0 16 BC 5C A2                    ;           "I DON'T WANT TO."
;
; ??MoveHoudiniC
3917: 9C 34                                                            ; Function=9C(??MoveHoudiniC) size=0034
3919: 0B 32 05                                                         ; switch(is_less_equal_last_random(value)): size=0032
391C:   E6                                                             ;   is_less_equal_last_random(value) value=E6
391D:   27                                                             ;   IF_NOT_GOTO address=3945
391E:     0D 25                                                        ;     while_pass: size=0025
3920:       14                                                         ;       execute_and_reverse_status:
3921:       01 13                                                      ;       is_in_pack_or_current_room(object) object=13(PLAYER)
3923:       0E 05                                                      ;       while_fail: size=0005
3925:         20 2C                                                    ;         is_ACTIVE_this(object) object=2C(HoudiniC)
3927:         14                                                       ;         execute_and_reverse_status:
3928:         01 2C                                                    ;         is_in_pack_or_current_room(object) object=2C(HoudiniC)
392A:       0B 19 0A                                                   ;       switch(compare_input_to(phrase)): size=0019
392D:         04                                                       ;         compare_input_to(phrase) phrase="04: WEST * * *"
392E:         04                                                       ;         IF_NOT_GOTO address=3933
392F:           21 04 00 00                                            ;           execute_phrase(phrase,first_noun,second_noun) phrase="04: WEST * * *" firstNoun=00 secondNoun=00
3933:         03                                                       ;         compare_input_to(phrase) phrase="03: EAST * * *"
3934:         04                                                       ;         IF_NOT_GOTO address=3939
3935:           21 03 00 00                                            ;           execute_phrase(phrase,first_noun,second_noun) phrase="03: EAST * * *" firstNoun=00 secondNoun=00
3939:         01                                                       ;         compare_input_to(phrase) phrase="01: NORTH * * *"
393A:         04                                                       ;         IF_NOT_GOTO address=393F
393B:           21 01 00 00                                            ;           execute_phrase(phrase,first_noun,second_noun) phrase="01: NORTH * * *" firstNoun=00 secondNoun=00
393F:         02                                                       ;         compare_input_to(phrase) phrase="02: SOUTH * * *"
3940:         04                                                       ;         IF_NOT_GOTO address=3945
3941:           21 02 00 00                                            ;           execute_phrase(phrase,first_noun,second_noun) phrase="02: SOUTH * * *" firstNoun=00 secondNoun=00
3945:   FF                                                             ;   is_less_equal_last_random(value) value=FF
3946:   06                                                             ;   IF_NOT_GOTO address=394D
3947:     0D 04                                                        ;     while_pass: size=0004
3949:       14                                                         ;       execute_and_reverse_status:
394A:       01 13                                                      ;       is_in_pack_or_current_room(object) object=13(PLAYER)
394C:       9B                                                         ;       9B(??PrintDirs)
;
; ??PrintDirs
394D: 9B 41                                                            ; Function=9B(??PrintDirs) size=0041
394F: 0B 3F 05                                                         ; switch(is_less_equal_last_random(value)): size=003F
3952:   3F                                                             ;   is_less_equal_last_random(value) value=3F
3953:   0D                                                             ;   IF_NOT_GOTO address=3961
3954:     0D 0B                                                        ;     while_pass: size=000B
3956:       25                                                         ;       restart_game()
3957:       04 03                                                      ;       print(msg) size=0003
3959:         B5 D0 54                                                 ;         WEST
395C:       25                                                         ;       restart_game()
395D:       21 04 00 00                                                ;       execute_phrase(phrase,first_noun,second_noun) phrase="04: WEST * * *" firstNoun=00 secondNoun=00
3961:   7F                                                             ;   is_less_equal_last_random(value) value=7F
3962:   0D                                                             ;   IF_NOT_GOTO address=3970
3963:     0D 0B                                                        ;     while_pass: size=000B
3965:       25                                                         ;       restart_game()
3966:       04 03                                                      ;       print(msg) size=0003
3968:         95 5F 54                                                 ;         EAST
396B:       25                                                         ;       restart_game()
396C:       21 03 00 00                                                ;       execute_phrase(phrase,first_noun,second_noun) phrase="03: EAST * * *" firstNoun=00 secondNoun=00
3970:   BF                                                             ;   is_less_equal_last_random(value) value=BF
3971:   0E                                                             ;   IF_NOT_GOTO address=3980
3972:     0D 0C                                                        ;     while_pass: size=000C
3974:       25                                                         ;       restart_game()
3975:       04 04                                                      ;       print(msg) size=0004
3977:         04 9A 53 BE                                              ;         NORTH
397B:       25                                                         ;       restart_game()
397C:       21 01 00 00                                                ;       execute_phrase(phrase,first_noun,second_noun) phrase="01: NORTH * * *" firstNoun=00 secondNoun=00
3980:   FF                                                             ;   is_less_equal_last_random(value) value=FF
3981:   0E                                                             ;   IF_NOT_GOTO address=3990
3982:     0D 0C                                                        ;     while_pass: size=000C
3984:       25                                                         ;       restart_game()
3985:       04 04                                                      ;       print(msg) size=0004
3987:         47 B9 53 BE                                              ;         SOUTH
398B:       25                                                         ;       restart_game()
398C:       21 02 00 00                                                ;       execute_phrase(phrase,first_noun,second_noun) phrase="02: SOUTH * * *" firstNoun=00 secondNoun=00
;
; PrintObjectEntersRoom
3990: 9E 14                                                            ; Function=9E(PrintObjectEntersRoom) size=0014
3992: 0D 12                                                            ; while_pass: size=0012
3994:   01 13                                                          ;   is_in_pack_or_current_room(object) object=13(PLAYER)
3996:   2C 13                                                          ;   set_ACTIVE(object) object=13(PLAYER)
3998:   AA                                                             ;   AA(PrintTheVarName)
3999:   04 0B                                                          ;   print(msg) size=000B
399B:     9E 61 3D 62 82 17 54 5E 3F A0 2E                             ;     ENTERS THE ROOM.
;
; PrintPillInHamburger
39A6: A0 20                                                            ; Function=A0(PrintPillInHamburger) size=0020
39A8: 04 1E                                                            ; print(msg) size=001E
39AA:   5F BE E3 16 F3 8C A7 B7 4B 94 6B BF 95 5A 3E B9                ;   THE PILL SEEMS TO DISSOLVE IN THE HAMBUR
39BA:   5B CA 83 7A 5F BE 9B 15 BF 91 B7 B1 1B B5                      ;   GER.
;
; FeedDogMeat
39C8: A1 6F                                                            ; Function=A1(FeedDogMeat) size=006F
39CA: 0D 6D                                                            ; while_pass: size=006D
39CC:   0E 08                                                          ;   while_fail: size=0008
39CE:     0A 28                                                        ;     compare_input_to(phrase) phrase="28: FEED ...P.... WITH u......."
39D0:     0A 0E                                                        ;     compare_input_to(phrase) phrase="0E: THROW u....... TO ...P...."
39D2:     0A 29                                                        ;     compare_input_to(phrase) phrase="29: FEED u....... TO ...P...."
39D4:     0A 0D                                                        ;     compare_input_to(phrase) phrase="0D: THROW .v...... AT ...P...."
39D6:   0E 04                                                          ;   while_fail: size=0004
39D8:     09 19                                                        ;     compare_to_second_noun(object) object=19(HamburgerMeat)
39DA:     08 19                                                        ;     is_first_noun(object) object=19(HamburgerMeat)
39DC:   04 28                                                          ;   print(msg) size=0028
39DE:     5F BE 09 15 D9 6A C0 9F C6 B5 80 A1 82 17 4A 5E              ;     THE DOG WOLFS DOWN THE HAMBURGER. HE MUS
39EE:     64 48 31 C6 47 62 9F 15 77 16 F3 B9 5B 4D EF A6              ;     T BE PRETTY HUNGRY!
39FE:     53 C0 AF 15 C4 98 EB DA                                      ;     ~
3A06:   17 19 00                                                       ;   move_to(object,room) object=19(HamburgerMeat) room=00(Room_00)
3A09:   0E 2E                                                          ;   while_fail: size=002E
3A0B:     0D 2A                                                        ;     while_pass: size=002A
3A0D:       03 19 15                                                   ;       is_located(room,object) room=19(Room_19) object=15(BluePillA)
3A10:       04 22                                                      ;       print(msg) size=0022
3A12:         5F BE 09 15 CE 6A 3D A0 D5 B5 DD 78 4A F4 59 5E          ;         THE DOG LOOKS SICK. HE WEAVES AND FALLS
3A22:         98 5F 4B 62 8E 48 4B 15 0D 8D C8 16 23 62 E3 59          ;         OVER DEAD.
3A32:         9B 5D                                                    ;         ~
3A34:       1E 1A 3C                                                   ;       swap(object_a,object_b) object_a=(GuardDog)1A object_b=3C(DeadDog)
3A37:     14                                                           ;     execute_and_reverse_status:
3A38:     0C                                                           ;     fail()
;
; PrintPicassoDoor
3A39: A4 43                                                            ; Function=A4(PrintPicassoDoor) size=0043
3A3B: 0D 41                                                            ; while_pass: size=0041
3A3D:   0A 0B                                                          ;   compare_input_to(phrase) phrase="0B: LOOK * AT u......."
3A3F:   0E 3D                                                          ;   while_fail: size=003D
3A41:     0D 17                                                        ;     while_pass: size=0017
3A43:       01 3D                                                      ;       is_in_pack_or_current_room(object) object=3D(SecretDoor)
3A45:       1F 13                                                      ;       print2(msg) size=0013
3A47:         5F BE 5B B1 4B 7B 55 45 E4 5F 73 62 81 5B 8A AF          ;         THERE IS A SECRET DOOR HERE.
3A57:         2F 62 2E                                                 ;         ~
3A5A:     0D 22                                                        ;     while_pass: size=0022
3A5C:       0E 04                                                      ;       while_fail: size=0004
3A5E:         01 3E                                                    ;         is_in_pack_or_current_room(object) object=3E(PaintedDoorA)
3A60:         01 3F                                                    ;         is_in_pack_or_current_room(object) object=3F(PaintedDoorB)
3A62:       1F 1A                                                      ;       print2(msg) size=001A
3A64:         85 A5 65 49 CA 9C 4B 49 4B A4 BF 9A 03 58 09 15          ;         PICASSO HAS PAINTED A DOOR ON ONE WALL.
3A74:         A3 A0 03 A0 0F A0 F3 17 17 8D                            ;         ~
;
; AttemptClose
3A7E: A5 12                                                            ; Function=A5(AttemptClose) size=0012
3A80: 0D 10                                                            ; while_pass: size=0010
3A82:   14                                                             ;   execute_and_reverse_status:
3A83:   15 02                                                          ;   check_VAR(bits) bits=02(......O.)
3A85:   A8                                                             ;   A8(PrintTheFirstNoun)
3A86:   04 0A                                                          ;   print(msg) size=000A
3A88:     4B 7B 06 9A DE 14 D7 A0 9B 5D                                ;     IS NOT CLOSED.
;
; AttemptOpen
3A92: A6 0E                                                            ; Function=A6(AttemptOpen) size=000E
3A94: 0D 0C                                                            ; while_pass: size=000C
3A96:   29                                                             ;   print_open_VAR()
3A97:   A8                                                             ;   A8(PrintTheFirstNoun)
3A98:   04 08                                                          ;   print(msg) size=0008
3A9A:     4B 7B 09 9A C2 16 A7 61                                      ;     IS NOW OPEN.
;
; AttemptUnlock
3AA2: A7 2A                                                            ; Function=A7(AttemptUnlock) size=002A
3AA4: 0D 28                                                            ; while_pass: size=0028
3AA6:   15 01                                                          ;   check_VAR(bits) bits=01(.......L)
3AA8:   0E 0F                                                          ;   while_fail: size=000F
3AAA:     0D 05                                                        ;     while_pass: size=0005
3AAC:       08 40                                                      ;       is_first_noun(object) object=40(GreenDoorI)
3AAE:       14                                                         ;       execute_and_reverse_status:
3AAF:       09 1B                                                      ;       compare_to_second_noun(object) object=1B(GreenKeyA)
3AB1:     0D 06                                                        ;     while_pass: size=0006
3AB3:       14                                                         ;       execute_and_reverse_status:
3AB4:       08 40                                                      ;       is_first_noun(object) object=40(GreenDoorI)
3AB6:       14                                                         ;       execute_and_reverse_status:
3AB7:       09 14                                                      ;       compare_to_second_noun(object) object=14(RedKeyA)
3AB9:   04 0B                                                          ;   print(msg) size=000B
3ABB:     C7 DE D3 14 E6 96 B0 17 75 8D 4B                             ;     YOU CAN'T UNLOCK
3AC6:   A8                                                             ;   A8(PrintTheFirstNoun)
3AC7:   04 03                                                          ;   print(msg) size=0003
3AC9:     56 D1 48                                                     ;     WITH
3ACC:   A9                                                             ;   A9(PrintTheSecondNoun)
3ACD:   8B                                                             ;   8B(PrintPeriod)
;
; PrintTheFirstNoun
3ACE: A8 0C                                                            ; Function=A8(PrintTheFirstNoun) size=000C
3AD0: 0D 0A                                                            ; while_pass: size=000A
3AD2:   1A                                                             ;   set_VAR_to_first_noun()
3AD3:   0E 06                                                          ;   while_fail: size=0006
3AD5:     15 10                                                        ;     check_VAR(bits) bits=10(...P....)
3AD7:     1F 02                                                        ;     print2(msg) size=0002
3AD9:       5F BE                                                      ;       THE
3ADB:   11                                                             ;   print_first_noun()
;
; PrintTheSecondNoun
3ADC: A9 0C                                                            ; Function=A9(PrintTheSecondNoun) size=000C
3ADE: 0D 0A                                                            ; while_pass: size=000A
3AE0:   1B                                                             ;   set_VAR_to_second_noun()
3AE1:   0E 06                                                          ;   while_fail: size=0006
3AE3:     15 10                                                        ;     check_VAR(bits) bits=10(...P....)
3AE5:     1F 02                                                        ;     print2(msg) size=0002
3AE7:       5F BE                                                      ;       THE
3AE9:   12                                                             ;   print_second_noun
;
; PrintTheVarName
3AEA: AA 0B                                                            ; Function=AA(PrintTheVarName) size=000B
3AEC: 0D 09                                                            ; while_pass: size=0009
3AEE:   0E 06                                                          ;   while_fail: size=0006
3AF0:     15 10                                                        ;     check_VAR(bits) bits=10(...P....)
3AF2:     1F 02                                                        ;     print2(msg) size=0002
3AF4:       5F BE                                                      ;       THE
3AF6:   16                                                             ;   print_VAR
;
; AttackPerson
3AF7: AB 35                                                            ; Function=AB(AttackPerson) size=0035
3AF9: 0D 33                                                            ; while_pass: size=0033
3AFB:   0A 09                                                          ;   compare_input_to(phrase) phrase="09: ATTACK ...P.... WITH .v......"
3AFD:   A8                                                             ;   A8(PrintTheFirstNoun)
3AFE:   1F 2E                                                          ;   print2(msg) size=002E
3B00:     C5 4C CB 87 F3 49 48 DB FF B2 51 18 23 C6 8E 49              ;     BACKS AWAY FROM YOUR ATTACK, AND SAYS, "
3B10:     DD 46 03 EE 33 98 1B B7 33 BB 91 1E 4F C2 66 C6              ;     YOU MUST BE A CRAZY PERSON!"
3B20:     AF 14 7B 14 AB 55 7B E6 F4 A4 40 B9 E3 06                    ;     ~
;
; PrintTheVarName(sameAA)
3B2E: AC 01                                                            ; Function=AC(PrintTheVarName(sameAA)) size=0001
3B30: AA                                                               ; AA(PrintTheVarName)
;
; PrintTheVarNotHungry
3B31: AD 15                                                            ; Function=AD(PrintTheVarNotHungry) size=0015
3B33: 0D 13                                                            ; while_pass: size=0013
3B35:   AA                                                             ;   AA(PrintTheVarName)
3B36:   04 10                                                          ;   print(msg) size=0010
3B38:     60 7B F3 23 70 75 C3 6E 33 17 2E 6D 99 16 5B D4              ;     ISN'T HUNGRY RIGHT NOW.
;
; PrintFindMouthGame
3B48: AE 19                                                            ; Function=AE(PrintFindMouthGame) size=0019
3B4A: 04 17                                                            ; print(msg) size=0017
3B4C:   43 79 C7 DE D3 14 88 96 8E 7A 7B 14 C7 93 76 BE                ;   IF YOU CAN FIND A MOUTH, I'M GAME!
3B5C:   BD 15 49 90 67 48 21                                           ;   ~
;
; PrintLeapsBounds
3B63: AF 23                                                            ; Function=AF(PrintLeapsBounds) size=0023
3B65: 0E 21                                                            ; while_fail: size=0021
3B67:   13                                                             ;   process_phrase_by_room_first_second()
3B68:   04 1E                                                          ;   print(msg) size=001E
3B6A:     C7 DE 95 AF D5 C3 65 62 D5 15 67 16 67 49 66 B1              ;     YOUR SUCCESS IS MEASURED IN LEAPS AND BO
3B7A:     D0 15 3F 16 ED 48 90 14 04 58 30 A1 09 5C                    ;     UNDS!
;
; PrintTastesAweful
3B88: B0 18                                                            ; Function=B0(PrintTastesAweful) size=0018
3B8A: 0D 16                                                            ; while_pass: size=0016
3B8C:   0A 15                                                          ;   compare_input_to(phrase) phrase="15: EAT u....... * *"
3B8E:   04 12                                                          ;   print(msg) size=0012
3B90:     2E 6F AB A2 25 DD 36 54 7B 17 FF B9 C3 B5 DF D0              ;     GULP! YECCH, TASTES AWFUL!
3BA0:     AB 89                                                        ;     ~
;
; PrintYouGetObjectWithObject
3BA2: B1 18                                                            ; Function=B1(PrintYouGetObjectWithObject) size=0018
3BA4: 0D 16                                                            ; while_pass: size=0016
3BA6:   04 05                                                          ;   print(msg) size=0005
3BA8:     C7 DE 77 15 54                                               ;     YOU GET
3BAD:   A8                                                             ;   A8(PrintTheFirstNoun)
3BAE:   04 03                                                          ;   print(msg) size=0003
3BB0:     56 D1 48                                                     ;     WITH
3BB3:   A9                                                             ;   A9(PrintTheSecondNoun)
3BB4:   8B                                                             ;   8B(PrintPeriod)
3BB5:   A8                                                             ;   A8(PrintTheFirstNoun)
3BB6:   04 04                                                          ;   print(msg) size=0004
3BB8:     4D BD A7 61                                                  ;     TAKEN.
;
; PrintCantGetObjectWithObject
3BBC: B2 17                                                            ; Function=B2(PrintCantGetObjectWithObject) size=0017
3BBE: 0D 15                                                            ; while_pass: size=0015
3BC0:   0A 43                                                          ;   compare_input_to(phrase) phrase="43: GET ..C..... WITH ..C....."
3BC2:   04 09                                                          ;   print(msg) size=0009
3BC4:     C7 DE D3 14 E6 96 77 15 54                                   ;     YOU CAN'T GET
3BCD:   A8                                                             ;   A8(PrintTheFirstNoun)
3BCE:   04 03                                                          ;   print(msg) size=0003
3BD0:     56 D1 48                                                     ;     WITH
3BD3:   A9                                                             ;   A9(PrintTheSecondNoun)
3BD4:   8B                                                             ;   8B(PrintPeriod)
; ENDOF 339C

Input Word Tables

Tables are the same in COCO and TRS80.

InputWordTables:

; --- IGNORES ---
3BD5: 00
;
; --- VERBS ---
3BD6: 03 47 45 54 09            ; GET      09
3BDB: 04 47 52 41 42 09         ; GRAB     09
3BE1: 05 54 48 52 4F 57 03      ; THROW    03
3BE8: 06 41 54 54 41 43 4B 04   ; ATTACK   04
3BF0: 05 42 52 45 41 4B 04      ; BREAK    04
3BF7: 04 4B 49 4C 4C 04         ; KILL     04
3BFD: 03 48 49 54 04            ; HIT      04
3C02: 05 4E 4F 52 54 48 05      ; NORTH    05
3C09: 01 4E 05                  ; N        05
3C0C: 05 53 4F 55 54 48 06      ; SOUTH    06
3C13: 01 53 06                  ; S        06
3C16: 04 45 41 53 54 07         ; EAST     07
3C1C: 01 45 07                  ; E        07
3C1F: 04 57 45 53 54 08         ; WEST     08
3C25: 01 57 08                  ; W        08
3C28: 04 54 41 4B 45 09         ; TAKE     09
3C2E: 05 43 41 52 52 59 09      ; CARRY    09
3C35: 04 44 52 4F 50 0A         ; DROP     0A
3C3B: 03 50 55 54 0A            ; PUT      0A
3C40: 06 49 4E 56 45 4E 54 0B   ; INVENT   0B
3C48: 04 4C 4F 4F 4B 0C         ; LOOK     0C
3C4E: 04 47 49 56 45 0D         ; GIVE     0D
3C54: 05 4F 46 46 45 52 0D      ; OFFER    0D
3C5B: 06 45 58 41 4D 49 4E 0E   ; EXAMIN   0E
3C63: 06 53 45 41 52 43 48 0E   ; SEARCH   0E
3C6B: 04 4F 50 45 4E 0F         ; OPEN     0F
3C71: 04 50 55 4C 4C 10         ; PULL     10
3C77: 03 45 41 54 12            ; EAT      12
3C7C: 05 43 4C 49 4D 42 15      ; CLIMB    15
3C83: 06 41 53 43 45 4E 44 15   ; ASCEND   15
3C8B: 06 44 45 53 43 45 4E 15   ; DESCEN   15
3C93: 04 4C 49 46 54 1C         ; LIFT     1C
3C99: 04 57 41 49 54 1F         ; WAIT     1F
3C9F: 04 53 54 41 59 1F         ; STAY     1F
3CA5: 04 4A 55 4D 50 20         ; JUMP     20
3CAB: 02 47 4F 21               ; GO       21
3CAF: 03 52 55 4E 21            ; RUN      21
3CB4: 04 4C 45 46 54 21         ; LEFT     21
3CBA: 05 52 49 47 48 54 21      ; RIGHT    21
3CC1: 05 45 4E 54 45 52 21      ; ENTER    21
3CC8: 04 50 55 53 48 10         ; PUSH     10
3CCE: 04 4D 4F 56 45 10         ; MOVE     10
3CD4: 04 4B 49 43 4B 23         ; KICK     23
3CDA: 04 46 45 45 44 24         ; FEED     24
3CE0: 06 53 43 52 45 41 4D 2B   ; SCREAM   2B
3CE8: 04 59 45 4C 4C 2B         ; YELL     2B
3CEE: 04 51 55 49 54 2D         ; QUIT     2D
3CF4: 04 53 54 4F 50 2D         ; STOP     2D
3CFA: 05 50 4C 55 47 48 32      ; PLUGH    32
3D01: 04 50 49 43 4B 34         ; PICK     34
3D07: 05 43 4C 4F 53 45 38      ; CLOSE    38
3D0E: 04 4C 4F 43 4B 39         ; LOCK     39
3D14: 06 55 4E 4C 4F 43 4B 3A   ; UNLOCK   3A
3D1C: 05 48 45 4C 4C 4F 3B      ; HELLO    3B
3D23: 02 48 49 3B               ; HI       3B
3D27: 03 42 4F 57 3B            ; BOW      3B
3D2C: 05 47 52 45 45 54 3B      ; GREET    3B
3D33: 04 57 48 41 54 3C         ; WHAT     3C
3D39: 03 57 48 59 3C            ; WHY      3C
3D3E: 03 48 4F 57 3C            ; HOW      3C
3D43: 05 57 48 45 52 45 3C      ; WHERE    3C
3D4A: 03 57 48 4F 3C            ; WHO      3C
3D4F: 04 57 48 45 4E 3C         ; WHEN     3C
3D55: 05 4C 4F 57 45 52 3D      ; LOWER    3D
3D5C: 05 55 4E 54 49 45 3D      ; UNTIE    3D
3D63: 03 4C 45 54 3E            ; LET      3E
3D68: 04 43 4F 4D 45 3F         ; COME     3F
3D6E: 06 46 4F 4C 4C 4F 57 3F   ; FOLLOW   3F
3D76: 04 4D 45 45 54 40         ; MEET     40
3D7C: 06 49 4E 54 52 4F 44 40   ; INTROD   40
3D84: 00
;
; --- NOUNS ---
3D85: 03 4B 45 59 16            ; KEY      16
3D8A: 04 50 49 4C 4C 17         ; PILL     17
3D90: 04 48 4F 4F 4B 18         ; HOOK     18
3D96: 04 44 4F 4F 52 0B         ; DOOR     0B
3D9C: 06 43 41 42 49 4E 45 19   ; CABINE   19
3DA4: 06 52 45 46 52 49 47 1A   ; REFRIG   1A
3DAC: 06 48 41 4D 42 55 52 1B   ; HAMBUR   1B
3DB4: 06 42 55 52 47 45 52 1B   ; BURGER   1B
3DBC: 04 4D 45 41 54 1B         ; MEAT     1B
3DC2: 03 44 4F 47 08            ; DOG      08
3DC7: 04 48 41 4E 44 1F         ; HAND     1F
3DCD: 05 48 41 4E 44 53 1F      ; HANDS    1F
3DD4: 06 4E 41 50 4F 4C 45 02   ; NAPOLE   02
3DDC: 06 42 4F 4E 41 50 41 02   ; BONAPA   02
3DE4: 03 52 41 59 03            ; RAY      03
3DE9: 04 58 52 41 59 03         ; XRAY     03
3DEF: 06 4A 4F 48 4E 53 4F 03   ; JOHNSO   03
3DF7: 06 48 4F 55 44 49 4E 04   ; HOUDIN   04
3DFF: 06 50 49 43 41 53 53 05   ; PICASS   05
3E07: 06 4D 45 52 4C 49 4E 06   ; MERLIN   06
3E0F: 06 44 4F 43 54 4F 52 07   ; DOCTOR   07
3E17: 05 4E 55 52 53 45 01      ; NURSE    01
3E1E: 06 54 48 45 52 41 50 01   ; THERAP   01
3E26: 04 57 41 4C 4C 25         ; WALL     25
3E2C: 05 57 41 4C 4C 53 25      ; WALLS    25
3E33: 04 52 4F 4F 4D 2A         ; ROOM     2A
3E39: 04 43 45 4C 4C 2A         ; CELL     2A
3E3F: 06 4F 46 46 49 43 45 2A   ; OFFICE   2A
3E47: 04 53 48 45 44 2A         ; SHED     2A
3E4D: 05 46 4C 4F 4F 52 2B      ; FLOOR    2B
3E54: 04 45 58 49 54 2C         ; EXIT     2C
3E5A: 04 48 4F 4C 45 19         ; HOLE     19
3E60: 06 48 41 4C 4C 57 41 33   ; HALLWA   33
3E68: 06 45 4E 54 52 41 4E 36   ; ENTRAN   36
3E70: 06 43 45 49 4C 49 4E 3B   ; CEILIN   3B
3E78: 04 52 4F 4F 46 3B         ; ROOF     3B
3E7E: 00
;
; --- ADJECTIVES ---
3E7F: 03 52 45 44 13            ; RED      13
3E84: 05 47 52 45 45 4E 14      ; GREEN    14
3E8B: 04 42 4C 55 45 15         ; BLUE     15
3E91: 06 53 45 43 52 45 54 3D   ; SECRET   3D
3E99: 06 50 41 49 4E 54 45 3E   ; PAINTE   3E
3EA1: 00
;
; --- PREPOSITIONS ---
3EA2: 02 54 4F 01               ; TO       01
3EA6: 04 57 49 54 48 02         ; WITH     02
3EAC: 05 55 53 49 4E 47 02      ; USING    02
3EB3: 02 41 54 03               ; AT       03
3EB7: 05 55 4E 44 45 52 04      ; UNDER    04
3EBE: 02 49 4E 05               ; IN       05
3EC2: 04 49 4E 54 4F 05         ; INTO     05
3EC8: 06 49 4E 53 49 44 45 05   ; INSIDE   05
3ED0: 03 4F 55 54 06            ; OUT      06
3ED5: 06 4F 55 54 53 49 44 06   ; OUTSID   06
3EDD: 02 55 50 07               ; UP       07
3EE1: 04 44 4F 57 4E 08         ; DOWN     08
3EE7: 04 4F 56 45 52 09         ; OVER     09
3EED: 06 42 45 48 49 4E 44 0A   ; BEHIND   0A
3EF5: 06 41 52 4F 55 4E 44 0B   ; AROUND   0B
3EFD: 02 4F 4E 0C               ; ON       0C
3F01: 00
3F02: FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
3F10: DF FF DF FF 80 40 0D 00 03 4B 89 2C 00 87 55 00 
3F20: 00

Disk Loader

There is a disk version of the program here:

https://colorcomputerarchive.com/repo/Disks/Games/

The disk loads to memory at a different starting address and includes a small snippet of code on the end to relocate it. Here is that relocation:

RelocateFromDisk:
5F21: 4F            CLRA                       ; Turn the ...
5F22: B7 FF 40      STA   $FF40                ; ... disk drive off
5F25: 86 34         LDA   #$0D                 ; Disable ...
5F27: B7 FF 03      STA   $FF03                ; .. interrupts
;
5F2A: 8E 04 00      LDX   #$0400               ; Clear ...
5F2D: 86 80         LDA   #$80                 ; ... the ...
5F2F: A7 80         STA   ,X+                  ; ... entire ...
5F31: 8C 06 00      CMPX  #$0600               ; ... text ...
5F34: 2D F9         BLT   $5F2F                ; ... screen
;
5F36: 8E 26 00      LDX   #$2600               ; Start of program loaded from disk
5F39: 10 8E 06 00   LDY   #$0600               ; This is where the program originally lived
5F3D: A6 80         LDA   ,X+                  ; Copy the ...
5F3F: A7 A0         STA   ,Y+                  ; ... program to ...
5F41: 8C 5F 20      CMPX  #$5F21               ; ... its original ...
5F44: 2D F7         BLT   $5F3D                ; ... location
5F46: 0F 71         CLR   <$71                 ; Clear the "warm restart flag" (reset will now perform a cold boot)
5F48: 7E 06 00      JMP   $0600                ; Run the program at its original location