; Dissassembly comments by Chris Cantrell 2009 ; For detailed discussion of code visit http://www.computerarcheology.com ;##$CPU 6809 ;##$OriginalBinary madness.bin ;##- ;##- Menu structure for CodeToWeb HTML generator ;##- ;##Menu 2 "Bugs" ;##MenuLink CodeBug1 "Error message with POTION" ;##MenuLink CodeBug2 "Error when KILL ORACLE" ;##MenuLink CodeBug3 "ISHTAR does not clear fog poison" ;##MenuLink CodeBug4 "Should fail if overburdeoned" ;##MenuLink CodeBug5 "Missing word WATER from message" ;##MenuLink CodeBug6 "Shadowed jump" ;##MenuLink CodeBug7 "Invisible Oil hides the URN" ;##MenuLink CodeBug8 "YOUR SIGHT IS DIM never gets printed (Joe Hagan)" ;##Menu 3 "General Code" ;##MenuLink MemoryMap "Memory Map" ;##MenuLink START "Program Entry" ;##MenuLink PrintChar "Print Character" ;##MenuLink SaveToTape "Save Game to Tape" ;##MenuLink Splash "Loading Splash Screen" ;##MenuLink PrintWrap "Print + auto-wrap" ;##MenuLink Random "Get Next Random Number" ;##MenuLink InterruptService "60Hz Interrupt Service" ;##MenuLink UserInput "User Input Routine" ;##MenuLink GameInit "Initialize Game" ;##MenuLink PrintMess "Print a Message" ;##MenuLink CalculateScore "Calculate Score" ;##MenuLink Win "Player Wins" ;##MenuLink RandB "Random from 0 to B" ;##MenuLink IsObjInRoom "Check if object is in room" ;##MenuLink DropHeldObj "Drop held (managed) object" ;##MenuLink PrintPacked "Print a packed message" ;##MenuLink PrintWord "Print a word" ;##MenuLink PrintCR "Print CR" ;##MenuLink ComWHAT "Print command+WHAT?" ;##MenuLink InPack "See if object is in pack" ;##MenuLink GetObject "Pick up object" ;##MenuLink ActionWhenEnteringRoom "Enter-room routines" ;##MenuLink InitializeObjects "Initialize Objects" ;##MenuLink PrintObjectsInRoom "Print Object in Room" ;##- ;##Menu 3 "Initialization" ;##MenuLink ConfigureProtected "Configure required-object lists" ;##MenuLink AssignHolders "Assign treasures" ;##MenuLink PlaceSpells "Place spells in rooms" ;##MenuLink PlaceEnterRoomActions "Place enter-room-actions in rooms" ;##- ;##Menu 3 "Attacking Creatures" ;##MenuLink CreaturesAttack "Creatures that attack" ;##MenuLink MINOTAURAttack "Minotaur" ;##MenuLink TROGLODYTEAttack "Troglodyte" ;##MenuLink SATYRAttack "Satyr" ;##MenuLink SCORPIONAttack "Scorpion" ;##MenuLink MoveCreatures "Move Creatures" ;##MenuLink MoveMinotaur "Move Minotaur" ;##MenuLink MoveOracle "Move Oracle" ;##MenuLink MoveTroglodyte "Move Troglodyte" ;##MenuLink MoveSatyr "Move Satyr" ;##MenuLink MoveSprite "Move Sprite" ;##MenuLink MoveScorpion "Move Scorpion" ;##MenuLink MoveMymph "Move Numph" ;##- ;##Menu 4 "Verb Commands" ;##MenuLink CommandLOOK "LOOK" ;##MenuLink LookScarab "LOOK SCARAB" ;##MenuLink LookTablet "LOOK TABLET" ;##MenuLink LookPool "LOOK POOL" ;##MenuLink LookParchment "LOOK PARCHMENT" ;##MenuLink LookPit "LOOK PIT" ;##MenuLink LookUrn "LOOK URN" ;##MenuLink LookBottle "LOOK BOTTLE" ;##MenuLink CommandSCORE "SCORE" ;##MenuLink CommandQUIET "QUIET" ;##MenuLink CommandUNCLE "UNCLE" ;##MenuLink CommandHELP "HELP" ;##- ;##MenuLink CommandBACK "BACK" ;##MenuLink CommandUP "UP" ;##MenuLink CommandDOWN "DOWN" ;##MenuLink CommandNORTH "NORTH" ;##MenuLink CommandEAST "EAST" ;##MenuLink CommandSOUTH "SOUTH" ;##MenuLink CommandWEST "WEST" ;##MenuLink CommandCLIMB "CLIMB" ;##MenuLink CommandJUMP "JUMP" ;##- ;##MenuLink CommandINV "INVENTORY" ;##MenuLink CommandGETTAKEGRAB "GET,TAKE,GRAB" ;##MenuLink CommandDROPTHROW "DROP,THROW" ;##- ;##MenuLink CommandLAMP "LAMP" ;##MenuLink CommandOPEN "OPEN" ;##MenuLink OpenCrypt "OPEN CRYPT" ;##MenuLink OpenDrapes "OPEN DRAPES" ;##MenuLink OpenCryptKing "OPEN CRYPT (king)" ;##MenuLink CommandASK "ASK" ;##MenuLink CommandEAT "EAT" ;##MenuLink EatPowder "EAT POWDER" ;##MenuLink EatFood "EAT FOOD" ;##MenuLink EatMushroom "EAT MUSHROOM" ;##MenuLink CommandDRINK "DRINK" ;##MenuLink DrinkSPRITE "DRINK SPRITE" ;##MenuLink DirnkPotion "DRINK POTION" ;##MenuLink DrinkWater "DRINK WATER" ;##MenuLink CommandRUN "RUN" ;##MenuLink CommandFILL "FILL" ;##MenuLink FillLamp "FILL LAMP" ;##MenuLink FillBottle "FILL BOTTLE" ;##MenuLink FillURN "FILL URN" ;##MenuLink CommandPLAY "PLAY" ;##MenuLink CommandKILL "KILL" ;##MenuLink KillCreature "KILL creature" ;##MenuLink KillHydra "KILL HYDRA" ;##MenuLink CommandTIE "TIE" ;##MenuLink CommandSTAB "STAB" ;##- ;##Menu 1 "Spells" ;##MenuLink CommandVETAR "VETAR Take 10 damage. GET LAMP immediately after it has been blown away." ;##MenuLink CommandMITRA "MITRA Take 12 damnage. Remove scorpion sting." ;##MenuLink CommandOKKAN "OKKAN Take 14 damage. Get treasure from 'pile of rocks' if it is here." ;##MenuLink CommandAKHIROM "AKHIROM Take 16 damage. Kill Hydra. If SCARAB is in pack, make us invulnerable for 3 minutes." ;##MenuLink CommandNERGAL "NERGAL Take 18 damage. Allows us to stay in poison room." ;##MenuLink CommandBELROG "BELROG Take 20 damage. Make JUMP from this room without failing." ;##MenuLink CommandCROM "CROM Take 22 damage. Ublocks all passages." ;##MenuLink CommandISHTAR "ISHTAR Take 24 damage. Move to "exit" point where we drop treasure. (limited uses)." ;##- ;##Menu 1 "Move Between Room Handlers" ;##MenuLink BetweenRoomHandler "Between Room handler" ;##MenuLink BetweenRoomA "A If phys minus weight is less than random 64-191 then a climb-up fails." ;##MenuLink BetweenRoomB "B Move us to room 10 (start) or 20% random room 0-15." ;##MenuLink BetweenRoomC "C If phys minus weight is less than 192 then a climb-up fails." ;##MenuLink BetweenRoomD "D If phys minus weight is less than 64 then a climb-up fails." ;##MenuLink BetweenRoomE "E If phys minus weight is less than 128 then a climb-up fails." ;##MenuLink BetweenRoomF "F If the lamp is in our pack this moves us to a totally random room." ;##MenuLink BetweenRoomG "G There is a 50/50 chance of moving to a random room in the first half of the last two floors." ;##MenuLink BetweenRoomH "H There is a 50/50 chance of going to a random room in the maze on a random floor." ;##MenuLink BetweenRoomI "I There is a 35 in 36 chance of moving to a random room in the maze on a random floor." ;##- ;##Menu 1 "Entering-Room Handlers" ;##MenuLink EnteringRoomAction_a "_a Cave in to next floor (32 damage) if pack heavier than 192. If so move a and b to random rooms." ;##MenuLink EnteringRoomAction_b "_b Cave in to next floor (32 damage) if pack heavier than 128. If so move a and b to random rooms." ;##MenuLink EnteringRoomAction_c "_c Cave in to next floor (32 damage) if pack heavier than 95. If so move a and b to random rooms." ;##MenuLink EnteringRoomAction_d "_d If we have VETAR make the pile-of-rocks appear in this room (it stays here)." ;##MenuLink EnteringRoomAction_e "_e # Play sound effect (same as bb). If we play the flute and have the parchment then the LEDGE appears here." ;##MenuLink EnteringRoomAction_f "_f 1/2 the time a powerful gust blows lamp out of grasp." ;##MenuLink EnteringRoomAction_g "_g # Hydra is here. If it is free it pushes us back to last room." ;##MenuLink EnteringRoomAction_h "_h If we know VETAR or have the SCEPTER, nothing happens. Otherwise we do a RUN." ;##MenuLink EnteringRoomAction_i "_i Do nothing if we have VETAR. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_j "_j Do nothing if we have MITRA. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_k "_k Do nothing if we have OKKAN. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_l "_l Do nothing if we have AKHIROM. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_m "_m Do nothing if we have NERGAL. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_n "_n Do nothing if we have BELROG. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_o "_o Do nothing if we have CROM. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_p "_p Do nothing if we have ISHTAR. If random number > phys condition or 1/2 the time we RUN and take 5 damage." ;##MenuLink EnteringRoomAction_q "_q Start the poison clock (we can't stay here long). 1/3 of the time we give the clock an extra tick." ;##MenuLink EnteringRoomAction_r "_r # When we enter this room 3 times the treasure is released." ;##MenuLink EnteringRoomAction_s "_s # If we have the lamp and it is off then the room drops its treasure. (Strange color walls)" ;##MenuLink EnteringRoomAction_t "_t # If we are holding the packrat's trigger treasure (randomized at start) then the packrat drops his treasure." ;##MenuLink EnteringRoomAction_u "_u # If we can see you instantly get the treasure." ;##MenuLink EnteringRoomAction_v "_v Print POOL OF OIL if the pool has oil in it and we know ISHTAR." ;##MenuLink EnteringRoomAction_x "_x Add 40 to health and move us a short distance away. 10 minutes must pass before again." ;##MenuLink EnteringRoomAction_z "_z Room with music (init to room 16 to 39). The sprite can't move objects here." ;##MenuLink EnteringRoomAction_33 "_33 # If lamp is off we instantly get the treasure." ;##MenuLink EnteringRoomAction_32 "_32 If we can't see we take 30 damage." ;##MenuLink EnteringRoomAction_203 "_203 # Print SMALL PIT IN CORNER OF ROOM." ;##MenuLink EnteringRoomAction_213 "_213 Print LAYER OF MIST EAST WALL." ;##MenuLink EnteringRoomAction_232 "_232 If we came south to this room and carrying pendant move us near start and random room for pendant." ;##- ;##Menu 3 "Data" ;##MenuLink TapeSavePoint "Tape Save Point" ;##MenuLink BaseRoomDescriptions "256 room descriptions" ;##MenuLink CommandWords "Verb words" ;##MenuLink CommandTable "Verb commands table" ;##MenuLink PhraseList "General Phrases" ;##MenuLink WordList "Sentence Fragments" ;##MenuLink ItemDescriptions "Item Descriptions" ;##MenuLink ItemProtectedMessages "Item-is-protected Messages" ;##MenuLink PassageDescriptions "Descriptions of passages" ;##MenuLink MiscStrings "Misc. Strings" ;##MenuLink DirectionDescriptionTable "Tabe of Direction Descriptions" ;##MenuLink SpellData "Spell Obejects Table" ;##MenuLink PassageConfigurations "Room Passage Configurations" ;##MenuLink ObjectToNameMap "Object to Name Map" ;##MenuLink ObjectWeightAndBulk "Object Weight and Bulk" ;##MenuLink ObjectData "Object Data" ;##MenuLink SpellLocationLimits "Table of limits on spell locations" ;##MenuLink ProtectedObjectConfiguration "Lists of possible required objects" ;##MenuLink EnteringRoomActionPlacment "Table of limits on enter-room-action locations" ;##MenuLink OracleAdviceTable "List of 13 advices Oracle gives" ;##MenuLink JumpInfoTable "Table of information about JUMPs" ;##MenuLink PossibleProtectedObjectLocations "Possible Protected Object Locations" ;##MenuLink ObjectPlacementScript "Object Placement Script" ;##- ;##MemoryMap ; 1st 256 bytes used by engine ; ;00 ** current room ;01 ** last room ;02 direction command bit pattern ;03 length of user input ;04 ** weight of pack ;05 ** physical condition ;06 ** bulk of pack ;07 decoded object number from noun ;08 Accumulated odds of falling (0, 1/8, 2/8, 3/8 ... with each step in the dark) ;09 ** Scorpion sting (0=not, not-zero=number of times) ;0A ** 0 if lamp is off, not 0 is on ;0B Count of spaces at the end of the row in print routine ;0C Set by BetweenRoomACDE if a climb-down failed ... abort the movement ;0D pushed back flag (nobody reads this) ;0E ** HydraStatus: AA = tied up, 1 = dead, 0 = free ;0F ** HydraPushedUsBack (must be set to TIE HYDRA) 0 = not, 1 = hydra blocked last move (cleared every direction command) ;10 ** 1 if "pile of rocks" has been moved to us ;11 1 if "pile of rocks" has been exposed with OKKAN ;12 ** 1 if south passage in room 9 is open. 0 if closed. (open with drapes) ;13 ** Count down timer until we can walk through aura and heal again (10 seconds each time) ;14 1 if lamp has been blown from pack by entering room routine or failed jump ;15 1 if treasure "$0B" has been released ;16 NEVER USED ;17 Random number for passage-description printing ;18:19 Rolling pointer to BASIC rom for random numbers ;1A Number of times advice has been given 0-13 ; ;1B [0] ;1C [1] ;1D [2] ;1E [3] Advice table. Object number is stored here. Upper ;1F [4] bit set if advice has already been given for this ;20 [5] protected object. ;21 [6] ;22 [7] ;23 [8] ;24 [9] ;25 [10] ;26 [11] ;27 [12] ; ;28 Calculated score ;29 NEVER USED ;2A Verb command number ;2B Noun word number ;2C Trigger object to make packrat drop treasure ;2D NEVER USED ;2E Holder value for BetweenRoomACDE ;2F General use lots of places ;30 Used in InPack ;31 Used in InPack ;32 Set by EnteringRoomAction_q (MYSTERIOUS FOG) ;33 ** Current room of HYDRA ;34 ** Number of times more ISHTAR can be used. Random init to 1-4. ;35 Room for small pit in corner of room ;36 Room of LEDGE ;37 Room of "pile of rocks" (OKKAN spell) ;38:39 **Oil level of lamp (0 is empty) ;3A ** Number of times lamp can be filled (init to $34 + 4) ;3B:3C Pointer to start of input on screen ;3D Used in Random-between-0-and-B ;3E ** Time until we can drink from bottle to heal again (16 seconds) ;3F Interrupt divisor count (seconds) ;40 Interrupt sub divisor (minutes) ;41 Minotaur state timer ;42 Troglodyte state timer ;43 Satyr state timer ;44 Scorpion state timer ;45 Fog clock runs in room MYSTERIOUS FOG. At 6 seconds we get warned. At 10 we die. ;46 ** Minutes of immunity left (AKHIROM gives 3 minutes) ;47 Count of times entering room with EnteringRoomAction_r. 3 times and treasure drops. ;48 NEVER USED ;49 NEVER USED ;4A:4B Continual second counter (nobody uses it) ;4C:4D Counts the time in a room. Once 15, no going BACK ;4E NEVER USED ;4F NEVER USED ;50 NEVER USED ;51 Used in Oracle advice ;52 Used in killing Hydra ;53 Used in sound effects ;54:55 Used in tape-write ;56:65 16 byte buffer for decode and auto-word wrap ;66 Not used ; ;(Init clears 00-66 inclusive) ; ; 67-F2 Not used ; ;F3 ;F4 ;F5 ;F6 ;F7 Shifting buffer of rooms blocked by Shaking Ground. ;F8 As new rooms are blocked at random, they go on the ;F9 end of the list. Rooms are pulled off of the front ;FA of the list and unblocked completely. This keeps ;FB lots of shaking from blocking up the floors over ;FC time. ;FD ;FE ;FF ; ;0185.. Read only bytes from here to use in random ;01FF Stack (builds towards 0) ; ;0200 - 03FF Screen 0 ;0400 - 05FF Screen 1 ; ;(Game loads from tape to 0300 - 3EB7) ; ;0600 - 3EB7 Game in RAM ;3EB8 - 3FB7 Block passage table ;3FB8 - 3FFF Protected object lists ;##START 0300: 1A 50 ORCC #$50 ; Disable IRQ, FIRQ 0302: BD A7 EB JSR $A7EB ; Turns motor off (leave IRQ and FIRQ off) 0305: 8E 03 2D LDX #$032D ; Print character code (relocatable) 0308: CE 00 A5 LDU #$00A5 ; Destination (over BASIC's GETCCH routine) 030B: A6 80 LDA ,X+ ; Copy ... 030D: A7 C0 STA ,U+ ; ... the ... 030F: 8C 03 75 CMPX #$0375 ; ... print character ... 0312: 25 F7 BCS $30B ; ... routine 0314: CE 01 1D LDU #$011D ; Tape-write routine 0317: A6 80 LDA ,X+ ; Copy ... 0319: A7 C0 STA ,U+ ; ... the ... 031B: 8C 03 E8 CMPX #$03E8 ; ... tape-write ... 031E: 23 F7 BLS $317 ; ... routine 0320: CE 0C E0 LDU #$0CE0 ; Start address 0323: EF E3 STU ,--S ; To stack 0325: C6 60 LDB #$60 ; Space character 0327: 8E 02 00 LDX #$0200 ; Start of screen 032A: 7E A9 2F JMP $A92F ; Clear screen (leave cursor alone) and to 0CE0 ; BASIC's GETCCH routine ... do nothing (lets call to CLOADM succeed) 032D: 39 RTS ; To A5 ;##-PrintChar ; A6 -- Print character in A with autowrap. This screen is TWO screens long ; so that the user can use UP and DOWN to switch between screens. Nice. 032E: 34 16 PSHS X,B,A ; Save parameters 0330: 9E 88 LDX >$88 ; Cursor 0332: 81 08 CMPA #$08 ; Printing a backspace? 0334: 26 0B BNE $341 ; No ... move on 0336: 8C 02 00 CMPX #$0200 ; Already at top of screen (double screen) 0339: 27 38 BEQ $373 ; Yes ... ignore it (done) 033B: 86 60 LDA #$60 ; Space 033D: A7 82 STA ,-X ; Over last in buffer 033F: 20 25 BRA $366 ; Store new cursor and out ; 0341: 81 0D CMPA #$0D ; CR? 0343: 26 0C BNE $351 ; No ... move on 0345: 86 60 LDA #$60 ; Space 0347: A7 80 STA ,X+ ; Fill ... 0349: 1F 10 TFR X,D ; ... out rest ... 034B: C5 1F BITB #$1F ; ... of line ... 034D: 26 F6 BNE $345 ; with spaces 034F: 20 15 BRA $366 ; Store new cursor and out ; 0351: 81 20 CMPA #$20 ; Less than space? 0353: 25 1E BCS $373 ; Yes ... just ignore 0355: 4D TSTA ; Special character? 0356: 2B 0C BMI $364 ; Yes ... just store 0358: 81 40 CMPA #$40 ; Make ... 035A: 25 06 BCS $362 ; ... sure ... 035C: 81 60 CMPA #$60 ; .... to print ... 035E: 25 04 BCS $364 ; .... correct ... 0360: 84 DF ANDA #$DF ; .... case ... 0362: 88 40 EORA #$40 ; .... (black on green background) 0364: A7 80 STA ,X+ ; Store the character to screen, advance cursor 0366: 9F 88 STX >$88 ; New cursor 0368: 8C 05 FF CMPX #$05FF ; At the end of the line? 036B: 23 06 BLS $373 ; No ... out 036D: 8E 02 00 LDX #$0200 ; Scroll both ... 0370: 7E A3 4E JMP $A34E ; ... screens and out (sets cursor to last line) 0373: 35 96 PULS A,B,X,PC ; Done ;##SaveToTape ; 1D1 -- Write game engine data from 0240-05FF (includes lower 256 bytes at 240). ; This also gets the screen. Empty filename. ; ; The game uses two screens to display the game: 0200-03FF and 0400-05FF (latter is the normal one). ; The player can switch between upper (past) and lower (current) screens with the up and down arrows. ; The SAVE process copies the game variables (the first 1K) into the upper screen's memory. It ; skips a few lines in the buffer because the QUIET command and OK will scroll. After you save ; or load you can see the sate of the game variables on the upper screen ... looks like garbage. I'm ; sure that was to 1) get the vars out with one save and 2) allow for debugging. That's the magic ; of the $240 address. ; 0375: 8E 01 D1 LDX #$01D1 ; 011D: Filename buffer 0378: 6F 80 CLR ,X+ ; 0120: Zero first byte of name 037A: CC 20 08 LDD #$2008 ; 0122: Write 20 (space) ... 037D: A7 80 STA ,X+ ; 0125: ... to next 037F: 5A DECB ; 0127: ... 8 ... 0380: 26 FB BNE $37D ; 0128: ... bytes 0382: 8E 02 40 LDX #$0240 ; 012A: Write buffer start (lower vars) 0385: BF 01 E7 STX $01E7 ; 012D: Hold for later 0388: 8E 05 FF LDX #$05FF ; 0130: End of write 038B: 9F 54 STX >$54 ; 0133: Store end 038D: 8D 0B BSR $39A ; 0135: Do write ; ; Write game state from 3BC1 to 3FFF. Don't mess with filename. 038F: 8E 3B C1 LDX #$3BC1 ; 0137: Write buffer start (game state) 0392: BF 01 E7 STX $01E7 ; 013A: Hold for later 0395: 8E 3F FF LDX #$3FFF ; 013D: End of write 0398: 9F 54 STX >$54 ; 0140: Store end ; 039A: 86 02 LDA #$02 ; 0142: File type: machine 039C: 9E 8A LDX >$8A ; 0144: ASCII flag and mode (00 00) 039E: BD A6 5F JSR $A65F ; 0146: Write header block to tape 03A1: 0F 78 CLR >$78 ; 0149: File closed 03A3: 0C 7C INC >$7C ; 014B: Bump block type (from HEADER to DATA) 03A5: BD A7 D8 JSR $A7D8 ; 014D: Send 55s to tape 03A8: 20 08 BRA $3B2 ; 0150: Skip over keyboard buffer 03AA: 00 00 00 00 00 00 00 00 ; 0152: 8 bytes of keyboard buffer used by BASIC ... skip that 03B2: BE 01 E7 LDX $01E7 ; 015A: Remembered buffer 03B5: 9F 7E STX >$7E ; 015D: Buffer pointer for IO 03B7: 86 FF LDA #$FF ; 015F: Block count ... 03B9: 97 7D STA >$7D ; 0161: ... 255 (the max) 03BB: DC 54 LDD >$54 ; 0163: End address 03BD: 93 7E SUBD >$7E ; 0165: Subtract start (get length) 03BF: 24 0A BCC $3CB ; 0167: More to do ... go write another block 03C1: 00 7C NEG >$7C ; 0169: Block type FF ... EOF 03C3: 0F 7D CLR >$7D ; 016B: Block length 0 03C5: BD A7 F4 JSR $A7F4 ; 016D: BLKOUT ... write EOF 03C8: 7E A7 EB JMP $A7EB ; 0170: Turn off motor (leave IRQ and FIRQ alone) and out ; 03CB: 10 83 00 FF CMPD #$00FF ; 0173: More than 255 bytes remaining 03CF: 24 03 BCC $3D4 ; 0177: Yes ... use 255 03D1: 5C INCB ; 0179: Remainder ... 03D2: D7 7D STB >$7D ; 017A: ... data size 03D4: BD A7 F4 JSR $A7F4 ; 017C: BLKOUT 03D7: 20 DC BRA $3B5 ; 017F: Do all blocks 03D9: 00 00 00 00 00 FF 7F 3F 1F 0F 07 03 01 ; 0181: 03E6: 7E 17 37 JMP $1737 ; 018E: ON ERROR GOTO COMMAND VECTOR (Normally prints two-char error code) 03E9: 00 00 00 00 00 00 00 00 03F1: 00 00 00 00 00 00 00 00 03F9: 00 00 00 00 00 00 00 ;##Splash 0400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 0420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 0440: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 0460: B1 B3 B1 B3 B0 B0 B3 B3 B0 B1 B3 B3 B2 B0 B3 B0 B0 B1 B1 B3 B3 B3 B0 B1 B3 B3 B2 B0 B3 B3 B3 B0 0480: BA B0 BA B0 BA B6 B0 B0 B9 B5 B0 B0 B4 B2 BA B9 B2 B5 B5 B0 B0 B0 B0 BA B0 B0 B4 B5 B0 B0 B0 B8 04A0: BA B0 B0 B0 BA BE BC BC BD B5 B0 B0 B0 BA BA B0 BA B5 B5 BC BC B0 B0 B4 BC BC B9 B0 BC BC BC B2 04C0: BA B0 B0 B0 BA BA B0 B0 B5 B5 B3 B3 B6 B0 BA B0 B4 B7 B5 B3 B3 B3 B2 B9 B3 B3 B6 B4 B3 B3 B3 B8 04E0: 90 90 90 90 90 90 91 93 90 92 90 92 93 93 90 90 F0 F1 F3 F3 F1 F0 F1 F1 F3 F2 F0 F0 F0 F0 F0 F0 0500: 90 90 90 90 90 90 9B 93 9A 9E 92 9A 9A 90 9A 90 F0 F0 F5 F0 F5 F3 F7 F5 F3 F0 F0 F0 F0 F0 F0 F0 0520: 90 90 90 90 90 90 9A 90 9A 9A 94 9A 9B 93 98 90 F0 F0 F5 F0 F5 F0 F5 F5 F3 F3 F0 F0 F0 F0 F0 F0 0540: A2 A0 A0 A2 A1 A3 A3 A0 A2 A0 A0 A2 A1 A3 A3 A0 A3 A3 A3 A2 A0 A3 A2 A0 A2 A0 A0 A2 A3 A3 A3 A0 0560: AE A2 A6 AA A0 A5 A0 A0 AE A2 A0 AA AA A0 A0 AA A0 A5 A0 A0 A6 A0 A4 A2 AA A0 A0 AA AA A0 A0 AA 0580: AA A4 A0 AA A0 A5 A0 A0 AA A4 A2 AA AA A0 A0 AA A0 A5 A0 A0 AE AC AC AA AA A0 A0 AA AE AC AE A0 05A0: AA A0 A0 AA A1 A7 A3 A0 AA A0 A4 AA A9 A3 A3 A8 A0 A5 A0 A0 AA A0 A0 AA A4 A3 A6 A0 AA A0 A4 A2 05C0: 43 4F 50 52 6E 60 71 79 78 71 60 53 50 45 43 54 52 41 4C 60 41 53 53 4F 43 49 41 54 45 53 60 60 05E0: 60 4C 49 43 45 4E 53 45 44 60 54 4F 60 54 41 4E 44 59 60 43 4F 52 50 4F 52 41 54 49 4F 4E 60 60 ; The following display is a representation of the 64x32 block screen ; created by the alpha-graphics characters. The last two lines are ; normal text characters. ; g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g ; g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g ; g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g ; g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g ; ; g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g ; ; ddd ddd dddd dddddd dd d ddddddd dddddd dddddd ; d d d d d d d d d d d d d d d ; d d d d d d d d dd d d d d ; d d dddddddd d d d d d ddddd dddddd dddddd ; d d d d d d d d d d d d ; d d d d d d d d d d d d d d ; d d d d dddddd d dd dddddddd dddddd dddddd ; ; bbb b b bbbb hhhhh h h hhhh ; b b bb b b b h h h h ; bbbbb b b b b b h hhhhh hhh ; b b b bb b b h h h h ; b b b b bbbb h h h hhhhh ; ; c c ccccc c c ccccc ccccccc ccc c c cccccc ; cc cc c cc c c c c c c c c c c ; c c c c c c c c c c c c c c c c c ; c c c c c c c c c c ccccccc c c cccccc ; c c c c c c c c c c c c c c c ; c c c c cc c c c c c c c c c ; c c ccccc c c ccccc c c c ccc c c ; COPR. 1981 SPECTRAL ASSOCIATES ; LICENSED TO TANDY CORPORATION ;##-PrintWrap ; Print character A to screen and handle word wrapping. This function remembers and spaces on the ; end of the line and drops them. 0600: 34 36 PSHS Y,X,B,A ; Save params 0602: 81 08 CMPA #$08 ; Backspace? 0604: 27 53 BEQ $659 ; Yes ... either forget last space or print it 0606: 81 20 CMPA #$20 ; Anything below 20 ... 0608: 25 4B BCS $655 ; ... just print 060A: D6 89 LDB >$89 ; Cursor LSB 060C: C4 1F ANDB #$1F ; Are we at the end of a row? 060E: 26 41 BNE $651 ; No ... move on 0610: 81 60 CMPA #$60 ; Space at the end of a row? 0612: 27 04 BEQ $618 ; Yes ... just count it 0614: 81 20 CMPA #$20 ; Lower case space? 0616: 26 04 BNE $61C ; No ... not a space 0618: 0C 0B INC >$0B ; Note the space ... 061A: 20 3B BRA $657 ; ... and out ; 061C: D6 0B LDB >$0B ; Last printed was a space on the end of the row? 061E: 26 31 BNE $651 ; Yes ... print this character 0620: 9E 88 LDX >$88 ; Screen cursor 0622: A6 1F LDA -1,X ; Back up one space 0624: 81 60 CMPA #$60 ; A space last? 0626: 27 29 BEQ $651 ; Yes ... print this 0628: 8C 04 00 CMPX #$0400 ; Top of screen? 062B: 27 24 BEQ $651 ; Yes ... print this ; ; Move what we have of the word from the end of the line to next line ; Assumes no word is larger than 16 characters (buffer overflow) 062D: 86 60 LDA #$60 ; Space 062F: 10 8E 00 66 LDY #$0066 ; Buffer for auto-word wrap and decode 0633: E6 82 LDB ,-X ; Get the last character 0635: C1 60 CMPB #$60 ; Is it a space? 0637: 27 06 BEQ $63F ; Yes ... got all the word 0639: A7 84 STA ,X ; Clear the character 063B: E7 A2 STB ,-Y ; Put the character in the buffer 063D: 20 F4 BRA $633 ; Get the whole last word 063F: A6 A0 LDA ,Y+ ; Get the character fromt the buffer 0641: 81 5F CMPA #$5F ; Make ... 0643: 23 02 BLS $647 ; ... upper ... 0645: 80 40 SUBA #$40 ; ... case 0647: 10 8C 00 67 CMPY #$0067 ; Moved them all? 064B: 27 06 BEQ $653 ; Yes ... move on 064D: 9D A6 JSR >$A6 ; Print character to screen 064F: 20 EE BRA $63F ; Keep printing wrapping word 0651: 0F 0B CLR >$0B ; No space on end of line 0653: A6 E4 LDA ,S ; Restore A (character) 0655: 9D A6 JSR >$A6 ; Print it 0657: 35 B6 PULS A,B,X,Y,PC ; Done ; 0659: D6 0B LDB >$0B ; Any trailing space waiting from before? 065B: 27 F6 BEQ $653 ; No ... print the backspace 065D: 0F 0B CLR >$0B ; Just drop the held space ... 065F: 20 F6 BRA $657 ; ... and done ;##-Random ; Get next "random" number to B. This is a neat idea. It uses ; the BASIC ROM as a table of random bytes. Every call advances ; the ROM pointer to the next byte and rolls back around to the ; start. 0661: 34 10 PSHS X ; Save parameters 0663: 9E 18 LDX >$18 ; Get pointer to ROM area 0665: 30 01 LEAX 1,X ; Next byte in ROM 0667: 8C C0 00 CMPX #$C000 ; Reached the end of ROM? 066A: 25 03 BCS $66F ; No ... use this 066C: 8E A0 00 LDX #$A000 ; Restart at the top of ROM 066F: 9F 18 STX >$18 ; New pointer 0671: E6 84 LDB ,X ; Get byte 0673: E8 04 EORB 4,X ; Mangle it with a later byte 0675: 35 90 PULS X,PC ; Done ; Get random valid direction from room (X=pointer to dir pattern) 0677: 34 12 PSHS X,A ; Save params 0679: BD 0F 95 JSR $0F95 ; Get doors for ... 067C: A6 84 LDA ,X ; ... room B 067E: 84 3F ANDA #$3F ; Ignore upper two bits 0680: 27 0B BEQ $68D ; No passages out of room 0682: 86 1E LDA #$1E ; Try 30 times 0684: 8D 29 BSR $6AF ; Get random direction 0686: E5 84 BITB ,X ; Can we go in that direction? 0688: 26 04 BNE $68E ; Yes ... out (Z=0) 068A: 4A DECA ; Try all ... 068B: 26 F7 BNE $684 ; ... 30 times 068D: 5F CLRB ; Z=1 068E: 35 92 PULS A,X,PC ; Done ;##-RandB ; Get a random number less than B 0690: 34 12 PSHS X,A ; Save params 0692: D7 3D STB >$3D ; Hold max value 0694: 8E 01 85 LDX #$0185 0697: 43 COMA ; Set the C flag 0698: 1F 98 TFR B,A 069A: 30 01 LEAX 1,X 069C: 49 ROLA 069D: 27 0E BEQ $6AD 069F: 24 F9 BCC $69A 06A1: 8D BE BSR $661 ; Get random number 06A3: E4 84 ANDB ,X 06A5: D1 3D CMPB >$3D 06A7: 23 04 BLS $6AD 06A9: D6 3D LDB >$3D 06AB: 20 E7 BRA $694 06AD: 35 92 PULS A,X,PC ; Done ; Get random direction 06AF: 34 10 PSHS X ; Save params 06B1: 8D AE BSR $661 ; Get random number 06B3: C4 07 ANDB #$07 ; Lower 3 bits 06B5: C1 06 CMPB #$06 ; Ignore ... 06B7: 24 F8 BCC $6B1 ; ... 6 or 7 06B9: 30 8D 00 04 LEAX $0004,PC ; Bit table 06BD: E6 85 LDB B,X ; Get bit-set value 06BF: 35 90 PULS X,PC ; Done ; 06C1: 01 ; --000001 SOUTH 06C2: 02 ; --000010 WEST 06C3: 04 ; --000100 EAST 06C4: 08 ; --001000 NORTH 06C5: 10 ; --010000 DOWN 06C6: 20 ; --100000 UP 06C7: 34 36 PSHS Y,X,B,A ; Save params 06C9: 10 8E 3B BD LDY #$3BBD ; Spell data 06CD: 4F CLRA ; Spell zero 06CE: 31 24 LEAY 4,Y ; Next spell 06D0: E6 23 LDB 3,Y ; Learned - flag 06D2: 27 07 BEQ $6DB ; Go process if not learned 06D4: 4C INCA ; Next spell 06D5: 81 08 CMPA #$08 ; All 8 done? 06D7: 25 F5 BCS $6CE ; No ... do next 06D9: 35 B6 PULS A,B,X,Y,PC ; Done ;##-LearnSpell ; Learn spell if we have the right stuff 06DB: E6 A4 LDB ,Y ; 1st required object 06DD: BD 18 85 JSR $1885 ; Object in pack? 06E0: 24 F7 BCC $6D9 ; No ... out 06E2: E6 21 LDB 1,Y ; 2nd required object ... 06E4: BD 18 85 JSR $1885 ; ... in pack? 06E7: 24 F0 BCC $6D9 ; No ... out 06E9: E6 22 LDB 2,Y ; Is the spell even ... 06EB: D1 00 CMPB >$00 ; ... in this room? 06ED: 26 EA BNE $6D9 ; No ... out 06EF: 8B 37 ADDA #$37 ; Spell number to object number 06F1: 1F 89 TFR A,B ; To B for call 06F3: BD 1A 5A JSR $1A5A ; Get object 06F6: 8D 23 BSR $71B ; Move object to pack 06F8: 8E 2E 1D LDX #$2E1D ; "YOU NOW KNOW THE SECRET OF THE MAGIC SPELL" 06FB: BD 10 66 JSR $1066 ; Print the message 06FE: 1F 89 TFR A,B ; Name of spell 0700: BD 18 6D JSR $186D ; Print spell name 0703: C1 3E CMPB #$3E ; Last spell? 0705: 27 0B BEQ $712 ; No more to learn ... skip the hint 0707: 8E 2E 47 LDX #$2E47 ; "- YOU WILL DISCOVER THE SECRET OF THE NEXT SPELL IF YOU POSSESS THE" 070A: BD 10 66 JSR $1066 ; Print the message 070D: E6 24 LDB 4,Y ; 1st object from next spell slot 070F: BD 18 6D JSR $186D ; Print it 0712: BD 10 3F JSR $103F ; Remove the period and space 0715: 86 80 LDA #$80 ; Mark ... 0717: A7 23 STA 3,Y ; ... spell learned 0719: 20 BE BRA $6D9 ; Done ;##-PickUpObject ; Move object at X to pack. 071B: 34 02 PSHS A ; Save A 071D: A6 02 LDA 2,X ; Get flags 071F: 8A 80 ORA #$80 ; Put in ... 0721: A7 02 STA 2,X ; ... pack 0723: 35 82 PULS A,PC ; Out ; Clear counters associated with being in MYSTERIOUS FOG room. 0725: 0F 32 CLR >$32 ; Not in MYSTERIOUS FOG room. 0727: 0F 45 CLR >$45 ; Fog time to 0 0729: 39 RTS ; Out ; Init the interrupt service routine 072A: 86 7E LDA #$7E ; JMP ... 072C: B7 01 0C STA $010C ; ... to ... 072F: CC 07 45 LDD #$0745 ; ... IRQ service ... 0732: FD 01 0D STD $010D ; ... routine 0735: 8E FF 01 LDX #$FF01 ; HSYNC interrupt control 0738: A6 84 LDA ,X ; Disable ... 073A: 84 FC ANDA #$FC ; ... HSYNC (fast) ... 073C: A7 81 STA ,X++ ; ... interrupt 073E: A6 84 LDA ,X ; Enable ... 0740: 8A 01 ORA #$01 ; ... VSYNC (60Hz) ... 0742: A7 84 STA ,X ; ... interrupt 0744: 39 RTS ; Done ;##InterruptService 0745: B6 FF 02 LDA $FF02 ; Strobe hardware to reenable interrupt 0748: 0C 3F INC >$3F ; Interrupt ... 074A: 96 3F LDA >$3F ; ... divisor 074C: 81 3C CMPA #$3C ; Once ... 074E: 24 01 BCC $751 ; ... a second 0750: 3B RTI ; Return from interrupt ; 0751: BD 0A 1F JSR $0A1F ; Handle creatures that attack 0754: 96 45 LDA >$45 ; Time spent with MYSTERIOUS FOG 0756: 81 06 CMPA #$06 ; Fog counter reached 6 secods? 0758: 27 19 BEQ $773 ; Yes ... warn the player 075A: 25 21 BCS $77D ; Less than 6 ... just move on 075C: 81 0A CMPA #$0A ; Counter reached 10 seconds? 075E: 25 1D BCS $77D ; No ... keep waiting 0760: 96 32 LDA >$32 ; In MYSTERIOUS FOG room? 0762: 27 19 BEQ $77D ; No skip processing ; 0764: 8D BF BSR $725 ; Clear MYSTERIOUS FOG flag and fog time 0766: 96 09 LDA >$09 ; Scorpion sting count 0768: 26 13 BNE $77D ; Scorpion poison trumps ... handle later 076A: 8E 31 53 LDX #$3153 ; "THE POISON FOG HAS KILLED YOU!" 076D: BD 10 66 JSR $1066 ; Print the message 0770: 7E 0D 5C JMP $0D5C ; Command "UNCLE" ... end game ; 0773: 96 32 LDA >$32 ; Have we passed through MYSTERIOUS FOG? 0775: 27 06 BEQ $77D ; No ... skip 0777: 8E 31 72 LDX #$3172 ; "IT'S POISONOUS!!" 077A: BD 10 66 JSR $1066 ; Print the message ; 077D: 96 45 LDA >$45 ; Fog clock running? 077F: 27 02 BEQ $783 ; No ... skip it 0781: 0C 45 INC >$45 ; Increment the fog clock ; 0783: 96 0A LDA >$0A ; Lamp status 0785: 27 12 BEQ $799 ; Lap is off ... skip timing it 0787: 9E 38 LDX >$38 ; Oil remaining 0789: 27 06 BEQ $791 ; No oil ... lamp now goes out 078B: 30 1F LEAX -1,X ; Decrement the oil level 078D: 9F 38 STX >$38 ; New oil level 078F: 20 08 BRA $799 ; Move on 0791: 0F 0A CLR >$0A ; Lamp off 0793: 8E 2B 97 LDX #$2B97 ; "YOUR LAMP HAS JUST GONE OFF." 0796: BD 10 66 JSR $1066 ; Print the message 0799: 9E 4C LDX >$4C ; Count time in room 079B: 8C 00 0F CMPX #$000F ; 15? 079E: 24 04 BCC $7A4 ; Leave counter at 15 07A0: 30 01 LEAX 1,X ; Bump ... 07A2: 9F 4C STX >$4C ; ... counter 07A4: 9E 4A LDX >$4A ; Bump ... 07A6: 30 01 LEAX 1,X ; ... continual ... 07A8: 9F 4A STX >$4A ; ... counter (nobody uses it) 07AA: 0F 3F CLR >$3F ; Clear interrupt divisor 07AC: 0C 40 INC >$40 ; Sub divisor for 1 minute ticks 07AE: 96 40 LDA >$40 ; Get minute count 07B0: 81 3C CMPA #$3C ; Reached a minute? 07B2: 25 5A BCS $80E ; No ... out 07B4: 0F 40 CLR >$40 ; Reset minute count ; Things that happen on minute ticks ; If we are invulnerable, count down the time. When it expires move the ; SCARAB to a random room. 07B6: 96 46 LDA >$46 ; AKHIROM made us invulnerable? 07B8: 27 12 BEQ $7CC ; No ... skip 07BA: 0A 46 DEC >$46 ; Count down invulnerability time 07BC: 26 0E BNE $7CC ; Not time to move SCARAB 07BE: BD 0B 3E JSR $0B3E ; Sound effect 07C1: C6 15 LDB #$15 ; Move SCARAB from pack ... 07C3: BD 12 B8 JSR $12B8 ; ... to random room 07C6: BD 06 61 JSR $0661 ; Random number 07C9: F7 3D 38 STB $3D38 ; SCARABs to random room ... again 07CC: 96 3E LDA >$3E ; Count down since drinking water 07CE: 27 02 BEQ $7D2 ; No count ... skip 07D0: 0A 3E DEC >$3E ; Time down till we can drink again 07D2: 96 09 LDA >$09 ; Scorpion stings 07D4: 27 15 BEQ $7EB ; Not stung ... continue 07D6: C6 05 LDB #$05 ; 07D8: 3D MUL ; B = numStings * 5 07D9: 1F 98 TFR B,A ; 07DB: D0 05 SUBB >$05 ; Enough to kill us? 07DD: 25 09 BCS $7E8 ; No ... move on 07DF: 8E 34 B4 LDX #$34B4 ; "YOU HAVE DIED FROM A SCORPION BITE." 07E2: BD 10 66 JSR $1066 ; Print the message 07E5: 7E 0D 5C JMP $0D5C ; Command "UNCLE" ... end of game ; 07E8: BD 1A 2F JSR $1A2F ; Drop physical condition and out ; 07EB: 9E 38 LDX >$38 ; Oil in lamp 07ED: 8C 01 2C CMPX #$012C ; Begins to flicker at 300 07F0: 22 11 BHI $803 ; Not time to flicker 07F2: 96 0A LDA >$0A ; Lamp status 07F4: 27 0D BEQ $803 ; Lamp not on ... can't flicker 07F6: C6 0C LDB #$0C ; "LAMP" 07F8: BD 18 85 JSR $1885 ; Check pack 07FB: 24 06 BCC $803 ; Skip if not in pack 07FD: 8E 32 EF LDX #$32EF ; "THE LAMP IS FLICKERING." 0800: BD 10 66 JSR $1066 ; Print the message ; 0803: 96 13 LDA >$13 ; Enchanted aura counter 0805: 27 02 BEQ $809 ; Timed out? Skip 0807: 0A 13 DEC >$13 ; Count down until we can heal again ; 0809: 8D 04 BSR $80F ; Ground might shake 080B: BD 09 6E JSR $096E ; Move creatures once every minute 080E: 3B RTI ; Out ; Shaking ground ... here once a minute 080F: 34 76 PSHS U,Y,X,B,A ; Save params 0811: BD 06 61 JSR $0661 ; Get random number 0814: C1 40 CMPB #$40 ; Skip the quake ... 0816: 24 2E BCC $846 ; ... 3/4ths of the time 0818: 8E 2E 8A LDX #$2E8A ; "THE GROUND IS SHAKING!" 081B: BD 10 66 JSR $1066 ; Print the message 081E: 10 8E 3E 38 LDY #$3E38 ; Start of floor 3 0822: 8E 00 F3 LDX #$00F3 ; Shanking-ground blocked passage queue ; ; Maintains a list of the last 12 rooms that were blocked. As new rooms are blocked ; they go on the end of the list and the rooms at the beginning of the list are ; pulled off the list and opened. Thus "shaking ground" only affects 12 rooms at a time. 0825: 86 03 LDA #$03 ; 3 times ; 0827: BD 06 61 JSR $0661 ; Get random number (0-255) 082A: 33 A5 LEAU B,Y ; Offset from floor 3 (this is signed ... no overflow) 082C: E7 E2 STB ,-S ; Hold this room .... going on end of list 082E: BD 06 61 JSR $0661 ; Get random ... 0831: C4 3F ANDB #$3F ; ... direction bits 0833: E7 C9 01 00 STB $0100,U ; Block passages 0837: E6 84 LDB ,X ; From shift table 0839: 33 A5 LEAU B,Y ; Offset from floor 3 (this is signed ... no overflow) 083B: 6F C9 01 00 CLR $0100,U ; Remove blocked passages 083F: E6 E0 LDB ,S+ ; 12 byte shift left ... 0841: 8D 05 BSR $848 ; ... with B put on end (13th place) 0843: 4A DECA ; All done? 0844: 26 E1 BNE $827 ; No ... back for more 0846: 35 F6 PULS A,B,X,Y,U,PC; Done ; Shift the 12 bytes at X left one byte. The byte at X gets lost. The value of ; B goes on the end 13th entry. 0848: 34 16 PSHS X,B,A ; Save params 084A: C6 0C LDB #$0C ; 12 times 084C: A6 01 LDA 1,X ; Shift bytes ... 084E: A7 80 STA ,X+ ; ... left at X 0850: 5A DECB ; 12 bytes ... 0851: 26 F9 BNE $84C ; ... shifted 0853: E6 61 LDB 1,S ; B from stack 0855: E7 84 STB ,X ; Store it at the end 0857: 35 96 PULS A,B,X,PC ; Done ;##UserInput ; Arrows flip the screens. $3B holds the screen pointer to the input. ; $03 is the length of input. After 32 characters the routine automatically ; takes the input as complete. ; 0859: BD 10 90 JSR $1090 ; Print CR 085C: 0F 03 CLR >$03 ; Clear character count 085E: DC 88 LDD >$88 ; Current cursor 0860: DD 3B STD >$3B ; Hold it for now 0862: 1C EF ANDCC #$EF ; Interrupts on while waiting 0864: BD A1 B1 JSR $A1B1 ; Blink cursor and wait for key 0867: 1A 50 ORCC #$50 ; Interrupts off while processing 0869: 8E FF C6 LDX #$FFC6 ; Graphics offset register 086C: 81 5E CMPA #$5E ; UP ARROW 086E: 27 09 BEQ $879 ; Yes ... switch to upper page 0870: 81 0A CMPA #$0A ; DOWN ARROW 0872: 26 09 BNE $87D ; No ... on. 0874: A7 84 STA ,X ; F0 = 0 0876: A7 03 STA 3,X ; F1 = 1 (Address $0400) 0878: 8C ED 01 CMPX #$ED01 ; (STD +$01,X) at 0879 (Address $0200) 087B: 20 E5 BRA $862 ; Back for another key ; 087D: 81 0D CMPA #$0D ; CR? 087F: 27 36 BEQ $8B7 ; Done 0881: 81 08 CMPA #$08 ; Backspace? 0883: 27 14 BEQ $899 ; Go handle 0885: 81 20 CMPA #$20 ; Lower bounds 0887: 25 D9 BCS $862 ; Ignore invalid character 0889: 81 5A CMPA #$5A ; Upper bounds 088B: 22 D5 BHI $862 ; Ignore invalid character 088D: 0C 03 INC >$03 ; Increment the character count 088F: C6 1E LDB #$1E ; Reached the ... 0891: D1 03 CMPB >$03 ; ... Max? 0893: 23 22 BLS $8B7 ; Yes ... out 0895: 9D A6 JSR >$A6 ; Print character 0897: 20 C9 BRA $862 ; Back for more ; 0899: 0A 03 DEC >$03 ; Take a character away 089B: 2A F8 BPL $895 ; Yes ... it was there ... take it off the screen 089D: 0F 03 CLR >$03 ; Otherwise ignore ... 089F: 20 C1 BRA $862 ; ... the backspace ; Parse two words from input (off of screen) and fill 2A and 2B. Error and back to ; top of game loop if unknown verb. 08A1: 9E 3B LDX >$3B ; Start of input buffer 08A3: 86 FF LDA #$FF ; Clear ... 08A5: 97 2B STA >$2B ; ... NOUN 08A7: 8D 1B BSR $8C4 ; Parse the first word 08A9: 8D 60 BSR $90B ; Match the VERB 08AB: 24 0B BCC $8B8 ; Didn't know the verb ... error 08AD: A6 84 LDA ,X ; Next in input 08AF: 81 0D CMPA #$0D ; CR? 08B1: 27 04 BEQ $8B7 ; Yes ... no NOUN 08B3: 8D 0F BSR $8C4 ; Parse the second word 08B5: 8D 70 BSR $927 ; Match the NOUN 08B7: 39 RTS ; Done ; Unknown VERB 08B8: 8E 2A 81 LDX #$2A81 ; "I DON'T UNDERSTAND THAT." 08BB: BD 10 66 JSR $1066 ; Print the message 08BE: BD 10 90 JSR $1090 ; Print CR 08C1: 7E 0D 36 JMP $0D36 ; Next command cycle ; Copy word from X into parse buffer at 0056. Up to 16 characters are copied, and ; the buffer is blanked with 16 spaces first. 08C4: 10 8E 00 56 LDY #$0056 ; Input buffer 08C8: C6 0F LDB #$0F ; Clear out 16 spaces ... 08CA: 8D 34 BSR $900 ; ... for verb 08CC: A6 80 LDA ,X+ ; Next from screen 08CE: 81 60 CMPA #$60 ; Space? 08D0: 27 FA BEQ $8CC ; Yes ... ignore leading spaces 08D2: A7 A0 STA ,Y+ ; Store char 08D4: 5A DECB ; 16 stored? 08D5: 27 06 BEQ $8DD ; Yes ... out 08D7: A6 80 LDA ,X+ ; Get next 08D9: 81 60 CMPA #$60 ; Is it a space? 08DB: 26 F5 BNE $8D2 ; No ... keep storing up to 16 08DD: 39 RTS ; Done ; Check input buffer (at 0056) against word at X. Return ; C=0 if no match or C=1 if match. X is guaranteed to ; be before end marker if not matching. 08DE: 34 06 PSHS B,A ; Hold params 08E0: 10 8E 00 56 LDY #$0056 ; Buffer to match 08E4: A6 80 LDA ,X+ ; Byte from potential 08E6: 2B 07 BMI $8EF ; End of potential 08E8: A1 A0 CMPA ,Y+ ; Matches the input buffer? 08EA: 27 F8 BEQ $8E4 ; Yes ... keep looking 08EC: 4F CLRA ; No ... 08ED: 20 0F BRA $8FE ; ... return C=0 08EF: 84 7F ANDA #$7F ; Drop upper bit (end marker) 08F1: 30 1F LEAX -1,X ; Back up to end marker 08F3: A1 A0 CMPA ,Y+ ; Last character matches? 08F5: 26 F5 BNE $8EC ; No ... return not-matched 08F7: E6 A4 LDB ,Y ; Next in input buffer 08F9: C1 60 CMPB #$60 ; A Space? 08FB: 26 EF BNE $8EC ; No ... return not-matched 08FD: 43 COMA ; A is NOT 00 ... C=1 here 08FE: 35 86 PULS A,B,PC ; Done ; Fill buffer Y with B spaces. 0900: 34 26 PSHS Y,B,A ; Save params 0902: 86 60 LDA #$60 ; Space character 0904: A7 A0 STA ,Y+ ; Store space 0906: 5A DECB ; All done? 0907: 26 FB BNE $904 ; No ... do all 0909: 35 A6 PULS A,B,Y,PC ; Done ; Match input buffer with VERB word. ; Interesting: this looks for 65 matches but there are only 45 actual commands. ; C=0 if not found ; C=1 and B=string number if found (also to $2A). 090B: 34 30 PSHS Y,X ; Save params 090D: C6 FF LDB #$FF ; Will be 0 ... first string 090F: 8E 27 26 LDX #$2726 ; Command word table 0912: 5C INCB ; String number points to 0913: C1 40 CMPB #$40 ; All tested? 0915: 22 0D BHI $924 ; No matching word ... CLRA and return 0917: 8D C5 BSR $8DE ; Check match 0919: 25 05 BCS $920 ; Got a match 091B: BD 10 7D JSR $107D ; Skip to the end of the string 091E: 20 F2 BRA $912 ; Keep going 0920: D7 2A STB >$2A ; Command number 0922: 43 COMA ; Set C=1 0923: 21 4F BRN $974 ; (CLRA at 924 ... C=0) 0925: 35 B0 PULS X,Y,PC ; Done ; Match input buffer with NOUN word. ; C=0 if not found ; C=1 and B=string number if found (also to $2B). 0927: 34 30 PSHS Y,X ; Save params 0929: C6 FF LDB #$FF ; Will be 0 ... first string 092B: 8E 35 C6 LDX #$35C6 ; Noun strings 092E: 5C INCB ; String number X points to 092F: C1 FE CMPB #$FE ; FF ... we didn't find a match 0931: 22 0D BHI $940 ; No matching word ... CLRA and return 0933: 8D A9 BSR $8DE ; Check match 0935: 25 05 BCS $93C ; C=1 ... we found a match 0937: BD 10 7D JSR $107D ; Skip to end of string 093A: 20 F2 BRA $92E ; Keep looking 093C: D7 2B STB >$2B ; Store string number 093E: 43 COMA ; C=1 093F: 21 4F BRN $990 ; (CLRA at 940 ... C=0) 0941: 35 B0 PULS X,Y,PC ; Done ;##-IsObjInRoom ; See if object A is in room. ; C=0 not in room ; C=1 in room 0943: 34 16 PSHS X,B,A ; Save params 0945: 1F 89 TFR A,B ; To B for the check 0947: BD 1A 5A JSR $1A5A ; Get the object's descriptor 094A: A6 84 LDA ,X ; Get the object's room 094C: 91 00 CMPA >$00 ; Is object in room? 094E: 27 05 BEQ $955 ; Yes ... check it furter 0950: 4F CLRA ; C=0 ... not in room 0951: 21 43 BRN $996 ; COMA from 952 ... C=1 0953: 35 96 PULS A,B,X,PC ; Out 0955: A6 02 LDA 2,X ; Flags 0957: 84 03 ANDA #$03 ; Is this a visible object? 0959: 26 F5 BNE $950 ; No .... not in room 095B: 20 F5 BRA $952 ; Yes ... set C=1 found in room ; If object is in room print description and set C=1. 095D: 34 16 PSHS X,B,A ; Save params 095F: 1F 89 TFR A,B ; To B 0961: 8D E0 BSR $943 ; Is object in room? 0963: 24 07 BCC $96C ; No ... out 0965: BD 0E 46 JSR $0E46 ; Print description for object. 0968: BD 10 90 JSR $1090 ; Print CR 096B: 43 COMA ; C=1 096C: 35 96 PULS A,B,X,PC ; Done ; ;##MoveCreatures ;All the creatures move once every minute. ; ;##MoveMonotaur ; Moves to a random room from current position ignoring passages. May not ; move to 1st floor. 096E: BD 06 AF JSR $06AF ; Get random direction 0971: B6 3D 53 LDA $3D53 ; Minotaur room 0974: BD 0F 71 JSR $0F71 ; Calculate target room 0977: 81 40 CMPA #$40 ; Minotaur moving to 1st floor? 0979: 25 03 BCS $97E ; Yes ... don't let it 097B: B7 3D 53 STA $3D53 ; New room ; ;##MoveOracle ; Moves to a random room from current position ignoring passages. 097E: BD 06 AF JSR $06AF ; Get random direction 0981: B6 3D 56 LDA $3D56 ; Oracle room 0984: BD 0F 71 JSR $0F71 ; Calculate target room 0987: B7 3D 56 STA $3D56 ; New room ; ;##MoveTroglodyte ; Moves to a random room from current position but must follow unblocked passages. ; May not move to 4th floor. 098A: F6 3D 47 LDB $3D47 ; Troglodyte room 098D: BD 06 77 JSR $0677 ; Get random direction (following passages) 0990: B6 3D 47 LDA $3D47 ; Troglodyte room 0993: BD 0F 71 JSR $0F71 ; Calculate target room 0996: 81 C0 CMPA #$C0 ; Troglodyte moving to 4th floor? 0998: 24 03 BCC $99D ; Yes ... don't let it 099A: B7 3D 47 STA $3D47 ; New room ; ;##MoveSatyr ; Moves to a random room from current position but must follow unblocked passages. ; May not move to 1st floor. 099D: F6 3D 50 LDB $3D50 ; Satyr room 09A0: BD 06 77 JSR $0677 ; Get random direction (following passages) 09A3: B6 3D 50 LDA $3D50 ; Satyr room 09A6: BD 0F 71 JSR $0F71 ; Calculate target room 09A9: 81 40 CMPA #$40 ; Satyr moving to 1st floor? 09AB: 25 03 BCS $9B0 ; Yes ... don't let it 09AD: B7 3D 50 STA $3D50 ; New room ; ;##MoveSprite ; Does not move if dead (since it slings objects). Moves to random room from current position ; but must follow unblocked passages. It moves all movable objects in the new room to random ; rooms. It may NOT move to the 4th floor except for the treasure room (where it will redistribute ; the hard earned treasure objects). 09B0: F6 3D 46 LDB $3D46 ; Sprite flags 09B3: C5 02 BITB #$02 ; Dead? 09B5: 26 3A BNE $9F1 ; Yes ... move on 09B7: F6 3D 44 LDB $3D44 ; Sprite room 09BA: BD 06 77 JSR $0677 ; Get random direction (following passages) 09BD: B6 3D 44 LDA $3D44 ; Sprite room 09C0: BD 0F 71 JSR $0F71 ; Calculate target room 09C3: 81 CA CMPA #$CA ; Moving to treasure room? 09C5: 27 04 BEQ $9CB ; Yes ... allow it 09C7: 81 C0 CMPA #$C0 ; Moving to 4th floor? 09C9: 24 26 BCC $9F1 ; Don't let it 09CB: B7 3D 44 STA $3D44 ; New room 09CE: B1 3D 26 CMPA $3D26 ; Same room as the vial? 09D1: 27 1E BEQ $9F1 ; Yes ... move on 09D3: B1 3C F5 CMPA $3CF5 ; Same room as music? 09D6: 27 19 BEQ $9F1 ; Yes ... move on 09D8: 8E 3C FC LDX #$3CFC ; Object table 09DB: A1 84 CMPA ,X ; Object in this room? 09DD: 26 0B BNE $9EA ; No ... next object 09DF: C6 D3 LDB #$D3 ; Object ... 09E1: E5 02 BITB 2,X ; ... relocatable 09E3: 26 05 BNE $9EA ; No ... next object 09E5: BD 06 61 JSR $0661 ; Random room 09E8: E7 84 STB ,X ; Move object to random room 09EA: 30 03 LEAX 3,X ; Next object 09EC: 8C 3D 8C CMPX #$3D8C ; All done (not spells)? 09EF: 25 EA BCS $9DB ; No ... keep going ; ;##MoveScorpion ; Moves to random room from current position ignoring passages. 09F1: BD 06 AF JSR $06AF ; Random direction 09F4: B6 3D 4A LDA $3D4A ; Scorpion room 09F7: BD 0F 71 JSR $0F71 ; Calculate target room 09FA: B7 3D 4A STA $3D4A ; New room ; ;##MoveMymph ; Moves to random room from current position but must follow unblocked passages. 09FD: F6 3D 4D LDB $3D4D ; Nymph room 0A00: BD 06 77 JSR $0677 ; Random direction (following passages) 0A03: B6 3D 4D LDA $3D4D ; Nymph room 0A06: BD 0F 71 JSR $0F71 ; Move nymph 0A09: B7 3D 4D STA $3D4D ; New room 0A0C: 39 RTS ; Out ; Return C=1 if object is active. C=0 if object is out of game. 0A0D: 34 16 PSHS X,B,A ; Save params 0A0F: 1F 89 TFR A,B ; Get ... 0A11: BD 1A 5A JSR $1A5A ; ... object B 0A14: A6 02 LDA 2,X ; Get the flags 0A16: 84 03 ANDA #$03 ; Is this object active? 0A18: 26 02 BNE $A1C ; No ... C=0 0A1A: 43 COMA ; C=1 0A1B: 21 4F BRN $A6C ; CLRA 0A1D: 35 96 PULS A,B,X,PC ; Out ;##-CreaturesAttack ; Only the Minotaur, Troglodyte, Satyr, and Scorpion. ; The Nymph and Sprite do not attack. ; ;##MINOTAURAttack ; Minotaur attack is on a 10 second count. ; 1st second ... print "MINOTAUR IS HERE". ; 10th second ... Minotaur attacks. Minotaur hits with 0-70 damage. 0A1F: 86 1E LDA #$1E ; MINOTAUR 0A21: 8D EA BSR $A0D ; Is the MINOTAUR alive? 0A23: 24 38 BCC $A5D ; No Minotaur ... move on 0A25: D6 41 LDB >$41 ; Minotaur timer 0A27: 27 08 BEQ $A31 ; Count ==0 ... print description if in room and continue 0A29: C1 0A CMPB #$0A ; Count == 10 0A2B: 27 10 BEQ $A3D ; Yes ... minotaur attacks! 0A2D: 0C 41 INC >$41 ; Next in count 0A2F: 20 2C BRA $A5D ; Continue ; 0A31: BD 09 5D JSR $095D ; Print description if minotaur is in room 0A34: 24 27 BCC $A5D ; Not in room 0A36: BD 0B 03 JSR $0B03 ; Sound effect 0A39: 0C 41 INC >$41 ; Increment count 0A3B: 20 20 BRA $A5D ; Move on ; 0A3D: BD 09 43 JSR $0943 ; Is Minotaur in room with us? 0A40: 24 19 BCC $A5B ; No ... clear count and move on 0A42: C6 03 LDB #$03 ; "THE MINOTAUR IS ATTACKING." 0A44: BD 10 48 JSR $1048 ; Print message 0A47: BD 10 90 JSR $1090 ; Print CR 0A4A: C6 46 LDB #$46 ; Random number from 0 ... 0A4C: BD 06 90 JSR $0690 ; ... to 70 0A4F: 1F 98 TFR B,A ; Damage to A 0A51: BD 1A 2F JSR $1A2F ; Hit! 0A54: C1 20 CMPB #$20 ; Only a little damage? 0A56: 25 03 BCS $A5B ; Just a little ... move on 0A58: BD 0B 70 JSR $0B70 ; Lot of damage ... "OUCH THAT HURT" 0A5B: 0F 41 CLR >$41 ; Restart 10 second count ;##TROGLODYTEAttack ; TROGLODYTE is on an 12 second counter. ; On first second it attacks and hits with 60 damage ... when it hits. ; Whether it hits or not depends on a random number compared to the current ; room. The "earlier" the room the less chance of hitting. ; 0A5D: 86 1A LDA #$1A ; TROGLODYTE 0A5F: 8D AC BSR $A0D ; Is Troglodyte alive? 0A61: 24 33 BCC $A96 ; No ... reset counter and move on 0A63: D6 42 LDB >$42 ; Timer 0A65: 27 06 BEQ $A6D ; Count 0 ... attack 0A67: C1 0C CMPB #$0C ; Count 12 ? 0A69: 26 28 BNE $A93 ; No ... just move on 0A6B: 0F 42 CLR >$42 ; Reset to 0 and attack ; 0A6D: BD 09 43 JSR $0943 ; Is Troglodyte in room with us? 0A70: 24 24 BCC $A96 ; No ... clear count and move on 0A72: BD 0B 03 JSR $0B03 ; Sound effect 0A75: BD 06 61 JSR $0661 ; Random number 0A78: C4 7F ANDB #$7F ; Random number not on 4th floor 0A7A: F1 3D 47 CMPB $3D47 ; Compare to current room 0A7D: 24 14 BCC $A93 ; New room is later than current ... move on 0A7F: C6 04 LDB #$04 ; "THE TROGLODYTE IS ATTACKING" 0A81: BD 10 48 JSR $1048 ; Print message 0A84: BD 10 90 JSR $1090 ; Print CR 0A87: C6 3C LDB #$3C ; TROGLODYTE does ... 0A89: BD 1A 2A JSR $1A2A ; ... 60 damage 0A8C: C1 20 CMPB #$20 ; Only a little damage? 0A8E: 24 03 BCC $A93 ; Just a little ... move on 0A90: BD 0B 70 JSR $0B70 ; Lot of damage ... "OUCH THAT HURT" ; 0A93: 0C 42 INC >$42 ; Next in cycle 0A95: 8C 0F 42 CMPX #$0F42 ; Reset Troglodyte counter ;##SATYRAttack ; SATYRA is on an 15 second counter.. ; On first second it always hits with 30 damage. 0A98: 86 1D LDA #$1D ; Is SATYR ... 0A9A: BD 0A 0D JSR $0A0D ; ... alive? 0A9D: 24 21 BCC $AC0 ; No ... reset counter and move on 0A9F: D6 43 LDB >$43 ; Satyr counter 0AA1: 27 06 BEQ $AA9 ; Attack on 0 0AA3: C1 0F CMPB #$0F ; Count 15? 0AA5: 26 16 BNE $ABD ; No ... bump and move on 0AA7: 0F 43 CLR >$43 ; Reset to 0 ; 0AA9: BD 09 43 JSR $0943 ; Is Satyr in room with us? 0AAC: 24 12 BCC $AC0 ; No ... reset counter and move on 0AAE: 8D 53 BSR $B03 ; Sound effect 0AB0: C6 05 LDB #$05 ; THE SATYR IS ATTACKING 0AB2: BD 10 48 JSR $1048 ; Print message 0AB5: BD 10 90 JSR $1090 ; Print CR 0AB8: C6 1E LDB #$1E ; Always hit with ... 0ABA: BD 1A 2A JSR $1A2A ; ... 30 damage 0ABD: 0C 43 INC >$43 ; Next in cycle 0ABF: 8C 0F 43 CMPX #$0F43 ; Reset cycle ;##SCORPIONAttack ; SCORPION is on an 15 second counter. ; On second 0 it jumps the count to a random value 1-14. ; On econd 15 it takes action. Half the time it vanishes for 16 seconds. The other ; half of the the time it adds one poision sting count. Scorpion poison damages ; the player at 5*N per minute (N is number of stings accumulated). It starts to add up. 0AC2: 86 1B LDA #$1B ; Is SCORPION ... 0AC4: BD 0A 0D JSR $0A0D ; ... alive? 0AC7: 24 1F BCC $AE8 ; No ... reset counter and move on 0AC9: BD 09 43 JSR $0943 ; Is Scorpion in room with us? 0ACC: 24 1A BCC $AE8 ; No ... reset counter and move on 0ACE: D6 44 LDB >$44 ; Scorpion timer 0AD0: 27 26 BEQ $AF8 ; On 0 ... attack and random count 0AD2: C1 0F CMPB #$0F ; Count F? 0AD4: 26 0F BNE $AE5 ; No ... next count and move on 0AD6: BD 06 61 JSR $0661 ; Random value 0AD9: 2B 10 BMI $AEB ; 1/2 the time it vanishes for 16 seconds 0ADB: 8E 34 94 LDX #$3494 ; "THE SCORPION HAS JUST STUNG YOU." 0ADE: BD 10 66 JSR $1066 ; Print the message 0AE1: 0C 09 INC >$09 ; Add scorption sting count 0AE3: 20 0E BRA $AF3 ; Vanish for 16 seconds 0AE5: 0C 44 INC >$44 ; Next count 0AE7: 8C 0F 44 CMPX #$0F44 ; Clear count 0AEA: 39 RTS ; Done ; 0AEB: C6 0A LDB #$0A ; Print ... 0AED: BD 10 48 JSR $1048 ; ... "THE SCORPION DISAPPEARS." 0AF0: BD 10 90 JSR $1090 ; Print CR 0AF3: 86 F0 LDA #$F0 ; Vanish for ... 0AF5: 97 44 STA >$44 ; ... 16 seconds 0AF7: 39 RTS ; Done ; 0AF8: C6 0D LDB #$0D ; Random 0 ... 0AFA: BD 06 90 JSR $0690 ; ... to 13 0AFD: 5C INCB ; 1 to 14 0AFE: D7 44 STB >$44 ; Next scorpion count 0B00: 8D 01 BSR $B03 ; Sound effect 0B02: 39 RTS ; Done ; Simple 15-repeat sweep sound effect 0B03: 34 16 PSHS X,B,A ; Store params 0B05: 86 0F LDA #$0F ; Count ... 0B07: 97 53 STA >$53 ; ... of 15 0B09: C6 A2 LDB #$A2 ; High value = 101000_10 0B0B: 86 6F LDA #$6F ; Delay 0B0D: C0 14 SUBB #$14 ; Drop volume 0B0F: 8E 00 50 LDX #$0050 ; 50 cycles 0B12: 8D 0E BSR $B22 ; Play tone 0B14: 30 05 LEAX 5,X ; Next time ... 5 more cycles 0B16: 80 05 SUBA #$05 ; Raise frequency 0B18: 81 14 CMPA #$14 ; Still acceptibly low ... 0B1A: 22 F6 BHI $B12 ; ... use it 0B1C: 0A 53 DEC >$53 ; Sweep count 0B1E: 26 E9 BNE $B09 ; Do all sweeps 0B20: 35 96 PULS A,B,X,PC ; Out ; Do X cycles of a square wave. B is "high" value. 0 is the "low" value. Pause ; for count of A for high and low. 0B22: 34 06 PSHS B,A ; Save params 0B24: A6 E4 LDA ,S ; Delay 0B26: E6 61 LDB 1,S ; Sound value 0B28: F7 FF 20 STB $FF20 ; Store sound 0B2B: 4A DECA ; Do ... 0B2C: 26 FD BNE $B2B ; ... delay 0B2E: A6 E4 LDA ,S ; Delay value again 0B30: C6 02 LDB #$02 ; Minimum ... 0B32: F7 FF 20 STB $FF20 ; ... sound level 0B35: 4A DECA ; Do ... 0B36: 26 FD BNE $B35 ; ... delay 0B38: 30 1F LEAX -1,X ; Cycle count 0B3A: 26 E8 BNE $B24 ; Do all cycles 0B3C: 35 86 PULS A,B,PC ; Out ; Sound effect 0B3E: 34 16 PSHS X,B,A ; Save params 0B40: C6 1E LDB #$1E ; Random ... 0B42: BD 06 90 JSR $0690 ; ... value 0-30 0B45: CB 0F ADDB #$0F ; Value 15-45 0B47: 86 14 LDA #$14 ; Number of ... 0B49: D7 53 STB >$53 ; ... cycles 0B4B: C6 1F LDB #$1F ; Random ... 0B4D: BD 06 90 JSR $0690 ; ... 0 to 31 0B50: 58 ASLB ; Now 0 to 62 0B51: CB 10 ADDB #$10 ; Now 16 to 78 0B53: 34 04 PSHS B ; Hold delay 0B55: 86 FF LDA #$FF ; 0B57: 54 LSRB ; 0B58: 27 03 BEQ $B5D ; 0B5A: 44 LSRA ; TO DO: 0B5B: 20 FA BRA $B57 ; Figure out the sound ... 0B5D: C6 10 LDB #$10 ; ... details 0B5F: 3D MUL ; 0B60: 1F 01 TFR D,X ; 0B62: 30 08 LEAX 8,X ; 0B64: 35 02 PULS A ; Get delay 0B66: C6 A2 LDB #$A2 ; Volume 0B68: 8D B8 BSR $B22 ; Play tone 0B6A: 0A 53 DEC >$53 ; All cycles? 0B6C: 26 DD BNE $B4B ; No ... back to do them all 0B6E: 35 96 PULS A,B,X,PC ; Out 0B70: 34 10 PSHS X ; Save params 0B72: 8E 34 82 LDX #$3482 ; "OUCH!! THAT HURT." 0B75: BD 10 66 JSR $1066 ; Print the message 0B78: 35 90 PULS X,PC ; Out ; Count number of list configuration possibilities 0B7A: 34 12 PSHS X,A ; Save params 0B7C: 5F CLRB ; Start with B=0 0B7D: A6 80 LDA ,X+ ; Get protected object number 0B7F: 81 FF CMPA #$FF ; End of list? 0B81: 27 07 BEQ $B8A ; Yes ... out 0B83: 81 80 CMPA #$80 ; 80? 0B85: 26 F6 BNE $B7D ; No ... don't count this 0B87: 5C INCB ; Next 0B88: 20 F3 BRA $B7D ; Keep looking for FF 0B8A: 35 92 PULS A,X,PC ; Out ;##ConfigureProtected ; Configure all protected object from random picks of pre-defined ; configurations (ensures never a no-win configuration). 0B8C: 34 30 PSHS Y,X ; Save params 0B8E: 10 8E 3F B8 LDY #$3FB8 ; Protected object list 0B92: 8E 1D 4D LDX #$1D4D ; Protected configurations table 0B95: 8D E3 BSR $B7A ; Count objects in list 0B97: 5D TSTB ; Empty list? 0B98: 27 2C BEQ $BC6 ; Yes ... end 0B9A: BD 06 90 JSR $0690 ; Random number 0 to num slots 0B9D: A6 80 LDA ,X+ ; Copy target object ... 0B9F: A7 A0 STA ,Y+ ; ... number 0BA1: 5D TSTB ; Found the right configuration? 0BA2: 27 09 BEQ $BAD ; Yes ... go copy it 0BA4: A6 80 LDA ,X+ ; Look ... 0BA6: 81 80 CMPA #$80 ; ... for next ... 0BA8: 26 FA BNE $BA4 ; ... configuration 0BAA: 5A DECB ; Count this 0BAB: 20 F4 BRA $BA1 ; Find right list ; 0BAD: A6 80 LDA ,X+ ; Get required object 0BAF: 81 80 CMPA #$80 ; End of sublist? 0BB1: 27 08 BEQ $BBB ; Yes ... out 0BB3: 81 FF CMPA #$FF ; End of sublists? 0BB5: 27 04 BEQ $BBB ; Yes ... out 0BB7: A7 A0 STA ,Y+ ; Save object 0BB9: 20 F2 BRA $BAD ; Do all in sub list ; 0BBB: 86 FF LDA #$FF ; Terminate this ... 0BBD: A7 A0 STA ,Y+ ; ... built list 0BBF: 30 1F LEAX -1,X ; Make sure we aren't on terminator 0BC1: BD 10 84 JSR $1084 ; Find FF terminator 0BC4: 20 CF BRA $B95 ; Keep going ; 0BC6: 86 FF LDA #$FF ; Put FF ... 0BC8: A7 A4 STA ,Y ; ... on end of list 0BCA: 35 B0 PULS X,Y,PC ; Done ;##InitializeObjects 0BCC: 34 76 PSHS U,Y,X,B,A ; Save params 0BCE: 10 8E 3C F9 LDY #$3CF9 ; Object table 0BD2: 8E 20 D5 LDX #$20D5 ; Placement script 0BD5: CE 20 C5 LDU #$20C5 ; 16 possible protected-object rooms ; 0BD8: 31 23 LEAY 3,Y ; Next object 0BDA: A6 80 LDA ,X+ ; Get placement command 0BDC: 81 55 CMPA #$55 ; End flag 0BDE: 27 40 BEQ $C20 ; Out 0BE0: E6 22 LDB 2,Y ; Object flags 0BE2: C4 7C ANDB #$7C ; Make it active ... 0BE4: E7 22 STB 2,Y ; ... and not in pack 0BE6: 4D TSTA ; Placement command 0BE7: 2B 16 BMI $BFF ; If upper bit set ... place protected object 0BE9: 4A DECA ; Placement command 0BEA: 27 24 BEQ $C10 ; If 1 ... set invisible flag 0BEC: 4A DECA ; Placement command 0BED: 27 29 BEQ $C18 ; If 2 ... set spell ; ; (TYPE) Lower Upper Mask 0BEF: E6 01 LDB 1,X ; Upper bounds ... 0BF1: E0 81 SUBB ,X++ ; ... minus lower 0BF3: BD 06 90 JSR $0690 ; Get a random room in range 0BF6: E4 80 ANDB ,X+ ; Additional masking 0BF8: EB 1D ADDB -3,X ; Add to lower bounds 0BFA: 4A DECA ; Placement command 0BFB: 27 09 BEQ $C06 ; If 3 ... also set protected 0BFD: 20 0D BRA $C0C ; Assign room to plain old object ; 0BFF: C6 0F LDB #$0F ; 0-15 (16 entries) 0C01: BD 06 90 JSR $0690 ; Get random ... 0C04: E6 C5 LDB B,U ; ... valid room for a protected object 0C06: A6 22 LDA 2,Y ; Make ... 0C08: 8A 10 ORA #$10 ; ... object ... 0C0A: A7 22 STA 2,Y ; ... protected 0C0C: E7 A4 STB ,Y ; Assign room 0C0E: 20 C8 BRA $BD8 ; Keep going ; 0C10: A6 22 LDA 2,Y ; Get flags 0C12: 8A 01 ORA #$01 ; Make ... 0C14: A7 22 STA 2,Y ; ... invisible 0C16: 20 C0 BRA $BD8 ; Next object 0C18: A6 22 LDA 2,Y ; Flags 0C1A: 8A 42 ORA #$42 ; Set ... 0C1C: A7 22 STA 2,Y ; ... for spells 0C1E: 20 B8 BRA $BD8 ; Next object ; 0C20: 35 F6 PULS A,B,X,Y,U,PC; Done ; ; Initialize lamp full of oil 0C22: CC 07 08 LDD #$0708 ; Init oil level .. 0C25: DD 38 STD >$38 ; ... to 1800 second (30 minutes) ; ; Initialize Oracle's advice 0C27: 8E 1E 43 LDX #$1E43 ; Objects oracle gives advice on 0C2A: CE 00 1B LDU #$001B ; Flags in memory for advice 0C2D: A6 80 LDA ,X+ ; Advice from table 0C2F: 27 04 BEQ $C35 ; End of table ... move on 0C31: A7 C0 STA ,U+ ; Store advice object 0C33: 20 F8 BRA $C2D ; Do them all ; ; Initialize Urn and Bottle 0C35: 86 0C LDA #$0C ; Full 0C37: B7 3D 2B STA $3D2B ; Urn flags ... full 0C3A: B7 3D 01 STA $3D01 ; Bottle flags ... full 0C3D: C6 06 LDB #$06 ; Original value 0C3F: F7 3D C1 STB $3DC1 ; OPEN DRAPES changes this to 7 ; ; Initialize Packrat's trigger treasure 0C42: 8E 3C 6F LDX #$3C6F ; Treasure-held-by table 0C45: C6 0F LDB #$0F ; Random ... 0C47: BD 06 90 JSR $0690 ; ... value 0-15 0C4A: 58 ASLB ; Offset to treasure 0C4B: 5C INCB ; Treasure word 0C4C: A6 85 LDA B,X ; Set packrat's ... 0C4E: 97 2C STA >$2C ; ... trigger object 0C50: 39 RTS ; Done ;##AssignHolders ; Assign the 16 "held" treasures to an owner. Note that there are 17 possible ; owners. One of the creatures (not Minotaur) is selected at random to be "empty". 0C51: C6 05 LDB #$05 ; Get random .. 0C53: BD 06 90 JSR $0690 ; ... value 0 to 5 0C56: CB 19 ADDB #$19 ; 25 - 30 (One of the creatures) 0C58: D7 2F STB >$2F ; Hold "empty" creature 0C5A: CE 3C 5F LDU #$3C5F ; List of owners 0C5D: 8E 3C 8F LDX #$3C8F ; End of "held by" table 0C60: 86 10 LDA #$10 ; 16 things held 0C62: 6F 83 CLR ,--X ; Clear owner 0C64: 4A DECA ; All done? 0C65: 26 FB BNE $C62 ; No ... clear all owners 0C67: 86 0F LDA #$0F ; 15 0C69: A7 E2 STA ,-S ; Count on stack 0C6B: C6 0F LDB #$0F ; Random value ... 0C6D: BD 06 90 JSR $0690 ; ... from 0 to 15 0C70: 58 ASLB ; Offset in "held by" table 0C71: 6D 85 TST B,X ; Object already held? 0C73: 26 F6 BNE $C6B ; Yes ... find an object not held 0C75: A6 C6 LDA A,U ; Next owner 0C77: 91 2F CMPA >$2F ; Is this the "empty" creature? 0C79: 26 02 BNE $C7D ; No ... assign it 0C7B: 86 0B LDA #$0B ; Assign object to enter-room-r instead 0C7D: A7 85 STA B,X ; New owner 0C7F: A6 E0 LDA ,S+ ; Get counter 0C81: 4A DECA ; Do all ... 0C82: 2A E5 BPL $C69 ; ... 16 objects ; ;##PlaceSpells ; Randomly place the 8 spells ... within the limits of a range-table. 0C84: 8E 1D 3D LDX #$1D3D ; Spell location-limit table 0C87: 10 8E 3B C3 LDY #$3BC3 ; Location of 1st spell 0C8B: 86 08 LDA #$08 ; 8 spells 0C8D: E6 01 LDB 1,X ; Upper room bounds 0C8F: E0 84 SUBB ,X ; Lower room bounds 0C91: BD 06 90 JSR $0690 ; Get random room ... 0C94: EB 81 ADDB ,X++ ; Between lower and upper inclusive 0C96: E7 A4 STB ,Y ; Room of spell 0C98: 6F 21 CLR 1,Y ; Make sure spell is NOT learned 0C9A: 31 24 LEAY 4,Y ; Next spell 0C9C: 4A DECA ; All spells placed? 0C9D: 26 EE BNE $C8D ; No ... do all 0C9F: 39 RTS ; Out ;##PlaceEnterRoomActions 0CA0: 10 8E 3C 8C LDY #$3C8C ; Entering-room action table 0CA4: 8E 1D E6 LDX #$1DE6 ; Placement range table 0CA7: 86 1E LDA #$1E ; 30 actions to place 0CA9: 31 23 LEAY 3,Y ; Next action to place 0CAB: 30 03 LEAX 3,X ; Next range 0CAD: E6 01 LDB 1,X ; Get random ... 0CAF: E0 84 SUBB ,X ; ... room ... 0CB1: BD 06 90 JSR $0690 ; ... in ... 0CB4: EB 84 ADDB ,X ; ... range 0CB6: E4 02 ANDB 2,X ; Additional placement mask 0CB8: E7 A4 STB ,Y ; Store handler 0CBA: 4A DECA ; Do ... 0CBB: 26 EC BNE $CA9 ; ... all handlers ; ; Place HYDRA with its action 0CBD: B6 3C A1 LDA $3CA1 ; We just placed the HYDRA action 0CC0: 97 33 STA >$33 ; Put the HYDRA there ; ; Place SMALL PIT and JUMP to 39 with its action 0CC2: B6 3C E6 LDA $3CE6 ; We just placed the SMALL PIT action 0CC5: 97 35 STA >$35 ; Put the SMALL PIT there 0CC7: B7 3C 59 STA $3C59 ; Put the "JUMP DOWN" to room 39 with the pit ; ; Count on ISHTAR 0CCA: BD 06 61 JSR $0661 ; Random number 0CCD: C4 03 ANDB #$03 ; 0-3 0CCF: D7 34 STB >$34 ; ISHTAR can be used 1-4 times ; 0CD1: CB 04 ADDB #$04 ; 4-7 0CD3: D7 3A STB >$3A ; Number of refills in the OIL ROOM (action _v) ; 0CD5: C6 17 LDB #$17 ; Random ... 0CD7: BD 06 90 JSR $0690 ; ... value 0 to 23 0CDA: CB 10 ADDB #$10 ; Value 16 to 39 0CDC: F7 3C F5 STB $3CF5 ; Set enter-action-bb 0CDF: 39 RTS ; Done ;##GameInit ; Game starts here ... 0CE0: 20 01 BRA $CE3 ; Three bytes to change to a jump ... 0CE2: FF ; ... when debugging, I bet. 0CE3: 10 CE 01 FF LDS #$01FF ; Stack 0CE7: BD A9 28 JSR $A928 ; Clear screen 0CEA: BD A9 76 JSR $A976 ; Enables sound 0CED: 5F CLRB ; 0 0CEE: 9E 8A LDX >$8A ; Always 0 0CF0: 6F 80 CLR ,X+ ; Clear out ... 0CF2: 8C 00 66 CMPX #$0066 ; ... RAM ... 0CF5: 23 F9 BLS $CF0 ; ... up through 66 ; 0CF7: 8E 3E B8 LDX #$3EB8 ; Clear ... 0CFA: 6F 80 CLR ,X+ ; ... blocked ... 0CFC: 5A DECB ; ... pasasge ... 0CFD: 26 FB BNE $CFA ; ... table ; 0CFF: BD A9 A2 JSR $A9A2 ; SNDSEL ... sound source is DAC 0D02: 0F 68 CLR >$68 ; ? Never used ? 0D04: 0F 78 CLR >$78 ; ? Never used ? 0D06: 0A 18 DEC >$18 ; Force random number to reseed 0D08: 8E 2A D7 LDX #$2AD7 ; "WELCOME TO THE LABYRINTH!! BEWARE OF THE MINOTAUR AND GOOD LUCK." 0D0B: BD 10 66 JSR $1066 ; Print the message 0D0E: BD 06 61 JSR $0661 ; Advance random number 0D11: BD A1 C1 JSR $A1C1 ; Get a key 0D14: 27 F8 BEQ $D0E ; Keep waiting 0D16: BD 0B 8C JSR $0B8C ; Configure protected objects 0D19: BD 0B CC JSR $0BCC ; Initialize all objects 0D1C: BD 0C 22 JSR $0C22 ; Init lamp oil (0708) 0D1F: BD 0C 51 JSR $0C51 ; Assign treasures to holders 0D22: BD 0C A0 JSR $0CA0 ; Place the enter-room-actions 0D25: 0A 05 DEC >$05 ; Physical condition at max 0D27: 86 0A LDA #$0A ; Start in ... 0D29: 97 00 STA >$00 ; ... Room 10 0D2B: 97 01 STA >$01 ; Last room is Room 10 0D2D: BD A9 28 JSR $A928 ; Clear screen 0D30: BD 0E 27 JSR $0E27 ; Print room description 0D33: BD 07 2A JSR $072A ; Init ISR ;##MainGameLoop 0D36: 10 CE 01 FF LDS #$01FF ; Reset stack 0D3A: BD 08 59 JSR $0859 ; Get user input (3B points to screen where it starts) 0D3D: BD 08 A1 JSR $08A1 ; Get VERB (validate) and NOUN (don't validate) 0D40: BD 16 A7 JSR $16A7 ; Calculate score (detects win) 0D43: BD 10 90 JSR $1090 ; Print CR 0D46: 8D 23 BSR $D6B ; Execute command 0D48: 96 05 LDA >$05 ; Physical condition 0D4A: 81 28 CMPA #$28 ; Is condition 40 or better 0D4C: 24 06 BCC $D54 ; Yes .. skip message 0D4E: 8E 2A 44 LDX #$2A44 ; YOUR SIGHT IS DIM ;##CodeBug8 ; Joe Hagen found this bug. The code here calls 1066 (PrintMess). The "YOUR SIGHT IS DIM" ; message at 2A44, however, is packed. The call should be to 102F (PrintPacked). The ; message never appears in the game. Joe modified the code and verified the fix in the ; emulator. Good job, Joe. 0D51: BD 10 66 JSR $1066 ; Print the message 0D54: BD 06 C7 JSR $06C7 ; Learn any spell in our room that we can 0D57: BD 16 A7 JSR $16A7 ; Calculate score again 0D5A: 20 DE BRA $D3A ; Next command cycle ;##CommandUNCLE ; Print score and start a new game. 0D5C: 8E 34 D8 LDX #$34D8 ; "YOU PUT UP A GOOD FIGHT, BETTER LUCK NEXT TIME." 0D5F: BD 10 66 JSR $1066 ; Print message 0D62: BD 16 F8 JSR $16F8 ; Print score 0D65: BD A1 B1 JSR $A1B1 ; Blink cursor and wait for key 0D68: 7E 0C E0 JMP $0CE0 ; Start game 0D6B: 8E 27 D4 LDX #$27D4 ; Command table 0D6E: 96 2A LDA >$2A ; Command number 0D70: 48 ASLA ; Two bytes per entry 0D71: 6E 96 JMP [A,X] ; Execute the command ; Get bit number for set bit. ; Get the bit number of the first bit set from the left 0D73: 86 FF LDA #$FF ; Start at 0 0D75: 4C INCA ; Next bit number 0D76: 54 LSRB ; Shift to right 0D77: 24 FC BCC $D75 ; Not a 1 ... keep going 0D79: 39 RTS ; Done ; Get reverse direction for dir-bits in B 0D7A: 34 12 PSHS X,A ; Save params 0D7C: 8E 0D 85 LDX #$0D85 ; Reverse direction table 0D7F: 8D F2 BSR $D73 ; Direction bit to number 0D81: E6 86 LDB A,X ; Get opposite direction 0D83: 35 92 PULS A,X,PC ; Done ; Reverse direction table 0D85: 08 ; South -> North 0D86: 04 ; West -> East 0D87: 02 ; East -> West 0D88: 01 ; North -> South 0D89: 20 ; Down -> Up 0D8A: 10 ; Up -> Down ; Can we see (lamp is on and in room or pack)? ; C=1 yes ; C=0 no 0D8B: 34 16 PSHS X,B,A ; Save params 0D8D: C6 0C LDB #$0C ; Lamp 0D8F: BD 1A 5A JSR $1A5A ; Get data 0D92: A6 02 LDA 2,X ; Flags 0D94: 2B 06 BMI $D9C ; In pack ... yes it is here 0D96: A6 84 LDA ,X ; Is lamp in ... 0D98: 91 00 CMPA >$00 ; ... current room 0D9A: 26 04 BNE $DA0 ; No ... not here ... C=0 and out 0D9C: 96 0A LDA >$0A ; Lamp status 0D9E: 26 03 BNE $DA3 ; Lamp is on ... Z=0 0DA0: 4F CLRA ; C=0 ... not glowing 0DA1: 20 01 BRA $DA4 ; Out 0DA3: 43 COMA ; C=1 ... is glowing 0DA4: 35 96 PULS A,B,X,PC ; Out ; If we can't see, print message and return C=1. There is also an increasing chance ; of dieing with each step in darkness. 0DA6: 34 36 PSHS Y,X,B,A ; Save params 0DA8: 8D E1 BSR $D8B ; Can we see? 0DAA: 25 2A BCS $DD6 ; Yes ... out 0DAC: 96 00 LDA >$00 ; Current room 0DAE: 81 28 CMPA #$28 ; First 40 room .. 0DB0: 25 24 BCS $DD6 ; ... have ambient light 0DB2: 81 CA CMPA #$CA ; The forest ... 0DB4: 27 20 BEQ $DD6 ; ... has ambient light 0DB6: BD 06 61 JSR $0661 ; Random number 0DB9: BD 10 90 JSR $1090 ; Print CR 0DBC: D1 08 CMPB >$08 ; Random number smaller than current value? 0DBE: 25 0E BCS $DCE ; Yes ... we died 0DC0: 8E 2B 26 LDX #$2B26 ; "IT'S DARK AND YOU CAN'T SEE - IF YOU CONTINUE, YOU MAY FALL." 0DC3: BD 10 66 JSR $1066 ; Print the message 0DC6: D6 08 LDB >$08 ; Current value 0DC8: CB 1F ADDB #$1F ; Odds are 0 then 1/8 then 2/8 then 3/8 ... (each step better chance of falling) 0DCA: D7 08 STB >$08 ; New value 0DCC: 20 0C BRA $DDA ; Return with C=1 (can't see) ; 0DCE: 8E 2B 62 LDX #$2B62 ; "YOU HAVE JUST FALLEN INTO A PIT AND KILLED YOURSELF." 0DD1: BD 10 66 JSR $1066 ; Print the message 0DD4: 20 86 BRA $D5C ; UNCLE ... new game ; 0DD6: 0F 08 CLR >$08 ; Reset moving in darkness 0DD8: 4F CLRA ; C=0 0DD9: 21 43 BRN $E1E ; COMA 0DDB: 35 B6 PULS A,B,X,Y,PC ; Out ;##CommandBACK ; Move to last room if we haven't been here for 16 seconds. We turn off the ; "in poison room" flag if we move. 0DDD: 9E 4C LDX >$4C ; Too late to ... 0DDF: 8C 00 0F CMPX #$000F ; ... go back? 0DE2: 24 43 BCC $E27 ; Yes ... print room description and out 0DE4: 96 01 LDA >$01 ; Last room ... 0DE6: 97 00 STA >$00 ; ... to current room 0DE8: BD 07 25 JSR $0725 ; Now out of the MYSTERIOUS FOG 0DEB: 20 3A BRA $E27 ; Print room description and out ;##CommandUP ;##CommandDOWN ;##CommandNORTH ;##CommandEAST ;##CommandSOUTH ;##CommandWEST ; Move player from room to room. ; In addition to "natural" passages, there is a table of blocks. Passages may become blocked or ; ublbocked over time. ; 1 Clear mysterious fog flag and HYDRA-pushed-us flags ; 2 If direction is not natural stay here ; 3 Execute any handlers between rooms ; 4 If handler didn't deny move then make the move to the new room ; 5 If passage is blocked don't do anything (having the powerring lets you walk through blocks) ; 6 Print room description (includes picking up spells) ; 0DED: 86 20 LDA #$20 ; UP 0DEF: 8C 86 10 CMPX #$8610 ; DOWN 0DF2: 8C 86 08 CMPX #$8608 ; NORTH 0DF5: 8C 86 04 CMPX #$8604 ; EAST 0DF8: 8C 86 02 CMPX #$8602 ; SOUTH 0DFB: 8C 86 01 CMPX #$8601 ; WEST 0DFE: 97 02 STA >$02 ; Hold the bit pattern 0E00: 0F 14 CLR >$14 ; We've moved. VETAR will not work. 0E02: BD 07 25 JSR $0725 ; Now out of the MYSTERIOUS FOG 0E05: 0F 0F CLR >$0F ; HYDRA is no longer here 0E07: BD 0F 93 JSR $0F93 ; Get doors in this room 0E0A: 96 02 LDA >$02 ; Direction bit pattern 0E0C: A4 84 ANDA ,X ; Can we go in that direction? 0E0E: 26 06 BNE $E16 ; Yes ... go 0E10: 96 00 LDA >$00 ; Current room ... 0E12: 97 01 STA >$01 ; ... is last room 0E14: 20 11 BRA $E27 ; Print room description 0E16: 0F 0C CLR >$0C ; Clear the flag for "don't move us" 0E18: BD 0F 27 JSR $0F27 ; Execute any handler when moving between rooms 0E1B: 96 0C LDA >$0C ; Did handler tell us to skip moving? 0E1D: 26 08 BNE $E27 ; Yes ... bypass moving 0E1F: 17 00 B4 LBSR $0ED6 ; Open path or wearing powerring? 0E22: 25 03 BCS $E27 ; No ... bypass moving 0E24: BD 0F 84 JSR $0F84 ; Change rooms ; Print description 0E27: BD 0F E0 JSR $0FE0 ; Print "CRACKLING WITH ENCHANTMENT" if a spell is here 0E2A: BD 0D A6 JSR $0DA6 ; Check for darkness (maybe die) 0E2D: 25 05 BCS $E34 ; Dark ... nothing more to see. 0E2F: BD 0F 09 JSR $0F09 ; Print current room description 0E32: 8D 78 BSR $EAC ; Print objects in room 0E34: BD 0E EC JSR $0EEC ; Process enter-room actions 0E37: 39 RTS ; Done ; Look for noun in pack 0E38: 34 02 PSHS A ; Save params 0E3A: BD 18 CD JSR $18CD ; Convert noun to object 0E3D: 1F 89 TFR A,B ; To B 0E3F: 24 03 BCC $E44 ; Not valid ... return not valid 0E41: BD 18 85 JSR $1885 ; Return is-in-pack 0E44: 35 82 PULS A,PC ; Out ; Print description for object B 0E46: 34 10 PSHS X ; Save parameters 0E48: 8E 1E 51 LDX #$1E51 ; Object descriptions 0E4B: 8D 05 BSR $E52 ; Find right description 0E4D: BD 10 2F JSR $102F ; Print description 0E50: 35 90 PULS X,PC ; Out 0E52: 34 04 PSHS B ; Save object 0E54: A6 80 LDA ,X+ ; Object number 0E56: A1 E4 CMPA ,S ; The one we want? 0E58: 27 0E BEQ $E68 ; Yes ... return it 0E5A: 81 FF CMPA #$FF ; End of list? 0E5C: 27 04 BEQ $E62 ; Yes ... next object 0E5E: A6 80 LDA ,X+ ; Skip ... 0E60: 20 F8 BRA $E5A ; ... to end 0E62: A6 80 LDA ,X+ ; Next object 0E64: 81 FF CMPA #$FF ; End of list? 0E66: 26 EE BNE $E56 ; No ... keep looking 0E68: 35 84 PULS B,PC ; Out ; Find any object "held" by the given owner A. If A has a "held" object, ; B returns that object number. If not, B returns 0. 0E6A: 34 12 PSHS X,A ; Params 0E6C: 8E 3C 6F LDX #$3C6F ; Holding table 0E6F: C6 10 LDB #$10 ; 16 words 0E71: A6 81 LDA ,X++ ; Does it ... 0E73: A1 E4 CMPA ,S ; ... match? 0E75: 27 05 BEQ $E7C ; Yes ... get held object and out 0E77: 5A DECB ; All 16 done? 0E78: 26 F7 BNE $E71 ; No ... keep going 0E7A: 35 92 PULS A,X,PC ; Out ; 0E7C: E6 1F LDB -1,X ; Get held object 0E7E: 20 FA BRA $E7A ; Out ;##-DropHeldObj ;Drop object "held" by A into current room. ; C=1 if dropped ; C=0 if not dropped 0E80: 34 16 PSHS X,B,A ; Save params 0E82: 8D E6 BSR $E6A ; Find object held by A 0E84: 5D TSTB ; Any object held? 0E85: 27 1F BEQ $EA6 ; No ... NOTHING SPECIAL and out 0E87: BD 1A 5A JSR $1A5A ; Get pointer to object 0E8A: E6 02 LDB 2,X ; Flags 0E8C: C5 01 BITB #$01 ; Held object already visible? 0E8E: 27 16 BEQ $EA6 ; Yes ... NOTHING SPECIAL and out 0E90: C4 FC ANDB #$FC ; Make the held object visible and not in pack 0E92: E7 02 STB 2,X ; Reset flags 0E94: 96 00 LDA >$00 ; Current room 0E96: A7 84 STA ,X ; To held object's location 0E98: E6 01 LDB 1,X ; Object description 0E9A: BD 18 6D JSR $186D ; Print object name 0E9D: 8E 33 63 LDX #$3363 ; "IS NOW LAYING AT YOUR FEET!" 0EA0: BD 10 66 JSR $1066 ; Print the message 0EA3: 43 COMA ; C=1 0EA4: 35 96 PULS A,B,X,PC ; Done 0EA6: BD 10 1E JSR $101E ; "NOTHING SPECIAL HAPPENS" 0EA9: 4F CLRA ; C=0 0EAA: 35 96 PULS A,B,X,PC ; Done ;##PrintObjectsInRoom 0EAC: 8E 3C F9 LDX #$3CF9 ; Object data 0EAF: 30 03 LEAX 3,X ; Next object 0EB1: EC 84 LDD ,X ; A=Room, B=name 0EB3: C1 FF CMPB #$FF ; End of table? 0EB5: 27 1E BEQ $ED5 ; Yes ... out 0EB7: 91 00 CMPA >$00 ; Object in room? 0EB9: 26 F4 BNE $EAF ; No ... keep looking 0EBB: A6 02 LDA 2,X ; Get flags 0EBD: 2B F0 BMI $EAF ; Already in pack ... ignore 0EBF: 46 RORA ; Object invisible? 0EC0: 25 ED BCS $EAF ; Yes ... skip it 0EC2: 46 RORA ; Object invisible? 0EC3: 25 EA BCS $EAF ; Yes ... skip it 0EC5: 5F CLRB ; Zero offset (for non protected) 0EC6: A6 02 LDA 2,X ; Flags again 0EC8: 84 10 ANDA #$10 ; Protected? 0ECA: 27 02 BEQ $ECE ; No ... use zero offset 0ECC: C6 80 LDB #$80 ; Wrap around for protected objects 0ECE: EB 01 ADDB 1,X ; Get name of object 0ED0: BD 0E 46 JSR $0E46 ; Print description of object 0ED3: 20 DA BRA $EAF ; Keep going 0ED5: 39 RTS ; Done ; Return C=0 if path is open or powerring is in pack. C=1 if blocked and no powerring. 0ED6: 34 10 PSHS X ; Save params 0ED8: 96 02 LDA >$02 ; Direction bits 0EDA: A4 89 01 00 ANDA $0100,X ; Check block 0EDE: 27 09 BEQ $EE9 ; No blocks ... return C=0 0EE0: C6 2A LDB #$2A ; Powerring ... 0EE2: BD 18 85 JSR $1885 ; ... in pack? 0EE5: 25 02 BCS $EE9 ; Yes ... return C=0 0EE7: 43 COMA ; C=1 0EE8: 21 4F BRN $F39 ; CLRA C=0 0EEA: 35 90 PULS X,PC ; Out 0EEC: 34 16 PSHS X,B,A ; Save params 0EEE: 8E 3C 8F LDX #$3C8F ; Enter-room actions 0EF1: 96 00 LDA >$00 ; Current room 0EF3: A1 84 CMPA ,X ; Found an entry for this room? 0EF5: 27 09 BEQ $F00 ; Yes ... do routine 0EF7: 30 03 LEAX 3,X ; Next entry 0EF9: 8C 3C FB CMPX #$3CFB ; All done? 0EFC: 25 F3 BCS $EF1 ; No ... keep looking 0EFE: 35 96 PULS A,B,X,PC ; Out 0F00: 34 16 PSHS X,B,A ; Save params 0F02: AD 98 01 JSR [$01,X] ; Do the routine 0F05: 35 16 PULS A,B,X ; Restore 0F07: 20 EE BRA $EF7 ; Keep looking for more ; Find current room description and print 0F09: 34 10 PSHS X ; Save params 0F0B: 8E 21 65 LDX #$2165 ; Room description list 0F0E: D6 00 LDB >$00 ; Current room number 0F10: 8D 05 BSR $F17 ; Get the right description 0F12: BD 0F 9A JSR $0F9A ; Print it 0F15: 35 90 PULS X,PC ; Out ; Find desired string B (terminated by FF) 0F17: 34 06 PSHS B,A ; Save params 0F19: C6 FF LDB #$FF ; Start count with 0 0F1B: 5C INCB ; Next string 0F1C: E1 61 CMPB 1,S ; Is this the one we are looking for? 0F1E: 27 05 BEQ $F25 ; Yes ... out 0F20: BD 10 84 JSR $1084 ; Find FF terminator 0F23: 20 F6 BRA $F1B ; Keep looking 0F25: 35 86 PULS A,B,PC ; Done ; Execute any handler between the room and target room in either direction 0F27: 34 10 PSHS X ; Store params 0F29: 30 8D 2C 1D LEAX $2C1D,PC ; 3B4A 0F2D: 96 00 LDA >$00 ; Current room 0F2F: D6 02 LDB >$02 ; Direction pattern 0F31: 8D 07 BSR $F3A ; Look for a handler between the rooms 0F33: 24 03 BCC $F38 ; No handler ... out 0F35: AD 98 02 JSR [$02,X] ; Do the handler 0F38: 35 90 PULS X,PC ; Restore and out ; ; Look for match for Room/Direction or TargetRoom/ReverseDirection ; C=0 if not found ; C=1 if found 0F3A: 34 46 PSHS U,B,A ; Save params 0F3C: 1F 13 TFR X,U ; Hold X for a moment 0F3E: 8D 1C BSR $F5C ; Look for room/direction action 0F40: 25 18 BCS $F5A ; Z=0 ... found ... out 0F42: EC E4 LDD ,S ; Room A, direction B 0F44: 8D 2B BSR $F71 ; Get target room 0F46: BD 0D 7A JSR $0D7A ; Get reverse direction 0F49: 1E 89 EXG A,B ; A to B 0F4B: 8D 48 BSR $F95 ; Get passages for room B 0F4D: A5 84 BITA ,X ; Reverse direction open? 0F4F: 27 08 BEQ $F59 ; No ... Z=1 and out 0F51: 1E 89 EXG A,B ; New room A, reverse direction B 0F53: 1F 31 TFR U,X ; Restore original room 0F55: 8D 05 BSR $F5C ; Look for match 0F57: 20 01 BRA $F5A ; Return match or not 0F59: 4F CLRA ; Z=1 ... not found 0F5A: 35 C6 PULS A,B,U,PC ; Done ; 0F5C: 10 A3 84 CMPD ,X ; A=room, B=direction 0F5F: 27 08 BEQ $F69 ; Found ... Z=0 0F61: 30 04 LEAX 4,X ; Try next 0F63: 6D 01 TST 1,X ; All done? 0F65: 26 F5 BNE $F5C ; No .... keep looking 0F67: 4F CLRA ; C=0 not found 0F68: 21 43 BRN $FAD ; COMA at F69 0F6A: 39 RTS ; Out ; Geometry of room connections 0F6B: 08 ; SOUTH +8 0F6C: FF ; WEST -1 0F6D: 01 ; EAST +1 0F6E: F8 ; NORTH -8 0F6F: 40 ; DOWN +64 0F70: C0 ; UP -64 ; Calculate target room from A in direction B 0F71: 34 16 PSHS X,B,A ; Save params 0F73: 5D TSTB ; Any direction bits set? 0F74: 27 0C BEQ $F82 ; No ... out 0F76: 8E 0F 6B LDX #$0F6B ; Offset for directions 0F79: BD 0D 73 JSR $0D73 ; Get number of set bit 0F7C: A6 86 LDA A,X ; Get the offset 0F7E: AB E0 ADDA ,S+ ; Add to current room 0F80: 35 94 PULS B,X,PC ; Done ; 0F82: 35 96 PULS A,B,X,PC ; Done ; Change rooms based on direction 0F84: 96 00 LDA >$00 ; Current room ... 0F86: 97 01 STA >$01 ; ... to last room 0F88: D6 02 LDB >$02 ; Direction bits 0F8A: 8D E5 BSR $F71 ; Offset room number based on direction 0F8C: 97 00 STA >$00 ; New current room 0F8E: 0F 4C CLR >$4C ; Clear room ... 0F90: 0F 4D CLR >$4D ; ... timer for BACK 0F92: 39 RTS ; Done ; Get room doors 0F93: D6 00 LDB >$00 ; Current room number 0F95: 8E 3D B8 LDX #$3DB8 ; Room door table 0F98: 3A ABX ; Offset into table 0F99: 39 RTS ; Done ; Print "YOU ARE "+room description (with random door descriptions). 0F9A: 34 16 PSHS X,B,A ; Save params 0F9C: 86 82 LDA #$82 ; "YOU ARE 0F9E: BD 10 54 JSR $1054 ; Print ... all room descriptions start with "YOU ARE" 0FA1: BD 10 2F JSR $102F ; Get current room description 0FA4: 8D ED BSR $F93 ; Get doors (pointed to by X) 0FA6: 10 8E 3B 3E LDY #$3B3E ; Direction description table 0FAA: 86 01 LDA #$01 ; Bit 1 0FAC: 20 03 BRA $FB1 ; Skip over loop increment 0FAE: 48 ASLA ; Next direction 0FAF: 31 22 LEAY 2,Y ; Next in table; 0FB1: 81 40 CMPA #$40 ; All directions checked? 0FB3: 27 29 BEQ $FDE ; Yes ... out 0FB5: A5 84 BITA ,X ; This direction open? 0FB7: 27 F5 BEQ $FAE ; No ... skip 0FB9: 34 16 PSHS X,B,A ; Save params 0FBB: BD 06 61 JSR $0661 ; Random number 0FBE: C4 07 ANDB #$07 ; 0-7 0FC0: D7 17 STB >$17 ; Hold 0FC2: AE A4 LDX ,Y ; Pointer to passage in directions 0FC4: 86 FF LDA #$FF ; Get ... 0FC6: 4C INCA ; ... the ... 0FC7: 91 17 CMPA >$17 ; ... right 0FC9: 27 05 BEQ $FD0 ; ... message 0FCB: 17 00 B6 LBSR $1084 ; Find the FF terminator 0FCE: 20 F6 BRA $FC6 ; Keep going 0FD0: 8D 5D BSR $102F ; Print the direction string 0FD2: 35 16 PULS A,B,X ; Restore ; 0FD4: A5 89 01 00 BITA $0100,X ; Checked "blocked" table 0FD8: 27 D4 BEQ $FAE ; Directin not blocked ... keep our description 0FDA: 8D 23 BSR $FFF ; Append ", BUT IT IS BLOCKED" 0FDC: 20 D0 BRA $FAE ; Next direction ; 0FDE: 35 96 PULS A,B,X,PC ; Done 0FE0: 34 16 PSHS X,B,A ; Save params 0FE2: 8E 3B BD LDX #$3BBD ; Spell data 0FE5: 86 08 LDA #$08 ; Eight spells 0FE7: 30 04 LEAX 4,X ; Next spell 0FE9: E6 02 LDB 2,X ; Rooms 0FEB: D1 00 CMPB >$00 ; Spell in current room? 0FED: 26 0B BNE $FFA ; No ... keep looking 0FEF: E6 03 LDB 3,X ; Learned flags 0FF1: 2B 07 BMI $FFA ; We already know it ... skip 0FF3: 8E 32 C9 LDX #$32C9 ; "THE AIR IS CRACKLING WITH ENCHANTMENT." 0FF6: 8D 6E BSR $1066 ; Print the message 0FF8: 20 03 BRA $FFD ; Out 0FFA: 4A DECA ; All spells checked? 0FFB: 26 EA BNE $FE7 ; No ... check all 0FFD: 35 96 PULS A,B,X,PC ; Done 0FFF: 34 16 PSHS X,B,A ; Save params 1001: 9E 88 LDX >$88 ; Cursor 1003: 86 6C LDA #$6C ; "," 1005: D6 0B LDB >$0B ; Any skipped space 1007: C0 02 SUBB #$02 ; Back up two characters to the period 1009: A7 85 STA B,X ; Replace period with a coma 100B: 5F CLRB ; Message 0 is ... 100C: 8D 3A BSR $1048 ; ... BUT IT IS BLOCKED 100E: 35 96 PULS A,B,X,PC ; Done 1010: 34 10 PSHS X ; Align stack for return 1012: 8E 2C 85 LDX #$2C85 ; "I DON'T SEE ANYTHING INTERESTING." 1015: 20 13 BRA $102A ; Print and out 1017: 34 10 PSHS X ; Align stack for return 1019: 8E 2A 79 LDX #$2A79 ; "OK" 101C: 20 0C BRA $102A ; Print and out 101E: 34 10 PSHS X ; Align stack for return 1020: 8E 31 F1 LDX #$31F1 ; "NOTHING SPECIAL HAPPENS." 1023: 20 05 BRA $102A ; Print and out 1025: 34 10 PSHS X ; Align stack for return 1027: 8E 2C 7B LDX #$2C7B ; "WITH WHAT?" 102A: BD 10 66 JSR $1066 ; Print the message 102D: 35 90 PULS X,PC ; Done ;##-PrintPacked ; Print list of words pointed to by X. 102F: 34 06 PSHS B,A ; Save params 1031: A6 80 LDA ,X+ ; Get next word token 1033: 81 FF CMPA #$FF ; Are we done? 1035: 27 04 BEQ $103B ; Yes ... clean up 1037: 8D 1B BSR $1054 ; Print word 1039: 20 F6 BRA $1031 ; Continue ; 103B: 8D 02 BSR $103F ; Backup over last space after word and print period. 103D: 35 86 PULS A,B,PC ; Done 103F: 34 10 PSHS X ; Save param 1041: 8E 2A D5 LDX #$2AD5 ; Backspace over space and period 1044: 8D 20 BSR $1066 ; Print the message 1046: 35 90 PULS X,PC ; Out 1048: 34 16 PSHS X,B,A ; Save params 104A: 8E 29 C8 LDX #$29C8 ; Message (BUT IT IS BLOCKED) 104D: BD 0F 17 JSR $0F17 ; Find string 1050: 8D DD BSR $102F ; Print message 1052: 35 96 PULS A,B,X,PC ; Done ;##-PrintWord ; Print word number A followed by space 1054: 34 16 PSHS X,B,A ; Save params 1056: 8E 35 C6 LDX #$35C6 ; Start of word list 1059: 97 2F STA >$2F ; Hold word number 105B: C6 FF LDB #$FF ; Start count at 0 105D: 5C INCB ; Current word number 105E: D1 2F CMPB >$2F ; Have we found it? 1060: 27 06 BEQ $1068 ; Yes ... go print word 1062: 8D 19 BSR $107D ; No ... skip word 1064: 20 F7 BRA $105D ; Keep looking ;##-PrintMess ; Print message pointed to by X and then a black block character (space). 1066: 34 16 PSHS X,B,A ; Save params 1068: A6 80 LDA ,X+ ; Get character from string 106A: 2B 05 BMI $1071 ; End? Go handle end and out 106C: BD 06 00 JSR $0600 ; Print character 106F: 20 F7 BRA $1068 ; Keep going 1071: 84 7F ANDA #$7F ; Strip of terminator bit 1073: BD 06 00 JSR $0600 ; Print last character 1076: 86 20 LDA #$20 ; Print black ... 1078: BD 06 00 JSR $0600 ; ... cursor character (space) 107B: 35 96 PULS A,B,X,PC ; Done ; Skip to the end of the message 107D: 6D 80 TST ,X+ ; Find the ... 107F: 2B 02 BMI $1083 ; ... end of ... 1081: 20 FA BRA $107D ; ... the message 1083: 39 RTS ; Done ; Find the FF terminator 1084: 34 06 PSHS B,A ; Save params 1086: A6 80 LDA ,X+ ; Get the next byte 1088: 81 FF CMPA #$FF ; Found the FF? 108A: 27 02 BEQ $108E ; Yes ... out 108C: 20 F8 BRA $1086 ; No ... keep looking 108E: 35 86 PULS A,B,PC ; Done ;##-PrintCR ; Print a CR 1090: 34 02 PSHS A ; Save params 1092: 86 0D LDA #$0D ; CR 1094: BD 06 00 JSR $0600 ; Print CR 1097: 35 82 PULS A,PC ; Done ;##-ComWHAT ; Print command + " WHAT?" 1099: 8E 27 26 LDX #$2726 ; Command words 109C: 86 FF LDA #$FF ; Start with 0 109E: 4C INCA ; Next command word 109F: 91 2A CMPA >$2A ; This is the input word? 10A1: 27 04 BEQ $10A7 ; Yes ... go handle it 10A3: 8D D8 BSR $107D ; Skip to end of command word 10A5: 20 F7 BRA $109E ; Keep looking 10A7: 8D BD BSR $1066 ; Print the command word (and space) 10A9: 8E 34 1B LDX #$341B ; "WHAT?" 10AC: 20 4D BRA $10FB ; Print and return 10AE: 34 16 PSHS X,B,A ; Save params 10B0: 8E 2B 17 LDX #$2B17 ; "YOU DROPPED THE" 10B3: BD 10 66 JSR $1066 ; Print the message 10B6: BD 18 6D JSR $186D ; Print object 10B9: BD 10 3F JSR $103F ; Backspace and period 10BC: 35 96 PULS A,B,X,PC ; Out ;##CommandDROPTHROW ; Drop object in current room and adjust pack weight. 10BE: 0F 2F CLR >$2F ; Clear found-flag 10C0: 96 2B LDA >$2B ; Noun 10C2: 81 FF CMPA #$FF ; Was there a noun? 10C4: 26 02 BNE $10C8 ; Yes ... continue 10C6: 20 D1 BRA $1099 ; No ... "THROW WHAT?" ; 10C8: BD 18 CD JSR $18CD ; Convert to object number 10CB: 24 F9 BCC $10C6 ; Invalid 10CD: 81 37 CMPA #$37 ; Is this a real object (not ... 10CF: 24 F5 BCC $10C6 ; ... a spell or other?) No ... error 10D1: 8E 3C F9 LDX #$3CF9 ; Object data 10D4: 30 03 LEAX 3,X ; Next object 10D6: A6 01 LDA 1,X ; Get the word 10D8: 81 FF CMPA #$FF ; End of list 10DA: 27 18 BEQ $10F4 ; Yes ... error out 10DC: 91 07 CMPA >$07 ; Matches our noun? 10DE: 26 F4 BNE $10D4 ; No ... keep looking 10E0: A6 02 LDA 2,X ; Flags 10E2: 2A F0 BPL $10D4 ; Not in pack ... next 10E4: 0C 2F INC >$2F ; Flag we found it 10E6: D6 00 LDB >$00 ; Current room 10E8: E7 84 STB ,X ; To object's location 10EA: E6 02 LDB 2,X ; Mask off ... 10EC: C4 7F ANDB #$7F ; ... in pack 10EE: E7 02 STB 2,X ; Update flags 10F0: 8D 11 BSR $1103 ; Update bulk/weight 10F2: 20 E0 BRA $10D4 ; Do all objects ; 10F4: 96 2F LDA >$2F ; Did we find one? 10F6: 26 06 BNE $10FE ; Yes ... print OK 10F8: 8E 2A AB LDX #$2AAB ; "YOU DON'T HAVE THAT." 10FB: 7E 10 66 JMP $1066 ; Print and return ; 10FE: 8E 2A 79 LDX #$2A79 ; "OK" 1101: 20 F8 BRA $10FB ; Print and return ; Readjust carry weight/bulk for dropped object in $07 1103: 34 26 PSHS Y,B,A ; Save params 1105: BD 19 8C JSR $198C ; Get buld/weight for object 1108: 96 04 LDA >$04 ; Subtract ... 110A: A0 A0 SUBA ,Y+ ; ... dropped weight 110C: 24 01 BCC $110F ; Still something 110E: 4F CLRA ; Zero if negative weight 110F: 97 04 STA >$04 ; Store new weight 1111: 96 06 LDA >$06 ; Subtract ... 1113: A0 A4 SUBA ,Y ; ... dropped bulk 1115: 24 01 BCC $1118 ; Still something 1117: 4F CLRA ; Zero if negative bulk 1118: 97 06 STA >$06 ; New bulk 111A: 35 A6 PULS A,B,Y,PC ; Out ; Open scroll ; On 3rd or 4th floor it brings the Troglodyte to us. 111C: C6 12 LDB #$12 ; Do we have ... 111E: BD 18 85 JSR $1885 ; ... the scroll? 1121: 24 36 BCC $1159 ; No ... "OPEN WHAT?" 1123: 96 00 LDA >$00 ; Current room 1125: 2A 70 BPL $1197 ; On floor 1 or 2 ... "Nothing interesting" and out 1127: B7 3D 47 STA $3D47 ; Bring Trodlodyte to us 112A: 20 68 BRA $1194 ; "OK" and out ; Open jewlbox ; If opened in Minotaur's lair then the Minotaur comes. 112C: C6 16 LDB #$16 ; Do we haave ... 112E: BD 18 85 JSR $1885 ; ... the jewlbox 1131: 24 26 BCC $1159 ; No ... "OPEN WHAT?" 1133: 96 00 LDA >$00 ; Current room 1135: 81 9E CMPA #$9E ; In room 158 (Minotaur's lair) 1137: 26 5E BNE $1197 ; No ... "Nothing interesting" and out 1139: B7 3D 53 STA $3D53 ; Bring the Minotaur to us 113C: 20 56 BRA $1194 ; "OK" and out ;##CommandOPEN 113E: 96 2B LDA >$2B ; Noun 1140: 81 74 CMPA #$74 ; "CRYPT" ? 1142: 27 18 BEQ $115C ; Yes ... go handle crypt 1144: 81 33 CMPA #$33 ; "DRAPES" ? 1146: 27 34 BEQ $117C ; Yes ... go handle drapes 1148: 81 B7 CMPA #$B7 ; "SCROLL" ? 114A: 27 D0 BEQ $111C ; Yes ... go handle scroll 114C: 81 E5 CMPA #$E5 ; "JEWLBOX" ? 114E: 27 DC BEQ $112C ; Yes ... go handle jewlbox 1150: 81 FF CMPA #$FF ; Is it even valid? 1152: 26 05 BNE $1159 ; Yes ... "OPEN WHAT?" 1154: 8E 2A C0 LDX #$2AC0 ; "DON'T BE RIDICULOUS." 1157: 20 20 BRA $1179 ; Print and return ; 1159: 7E 10 99 JMP $1099 ; command+" WHAT?" ;##OpenCrypt ; If pys-weight is 250 or better the treasure falls out. 115C: 96 00 LDA >$00 ; Current room 115E: 81 43 CMPA #$43 ; Are we in the crypt room? 1160: 26 38 BNE $119A ; May be in the crypt of the king ; 1162: 96 05 LDA >$05 ; Physical condition ... 1164: 90 04 SUBA >$04 ; ... less than weight? 1166: 25 0E BCS $1176 ; Yes ... can't open it 1168: 81 FA CMPA #$FA ; Physical condition ... 116A: 25 0A BCS $1176 ; ... must be 250 to open 116C: 86 01 LDA #$01 ; Owner 1 is the crypt 116E: BD 0E 80 JSR $0E80 ; Drop any object owned by the crypt 1171: 8E 2E B6 LDX #$2EB6 ; "A CLOUD OF SMOKE FILLS THE ROOM AND AN EERIE HOWL ECHOS OFF THE WALLS AS THE TOP FALLS SHUT." 1174: 20 03 BRA $1179 ; Print and return 1176: 8E 2E A1 LDX #$2EA1 ; "THE TOP WON'T BUDGE." 1179: 7E 10 66 JMP $1066 ; Print and return ;##OpenDrapes ; Open drapes (1/4th chance of opening passage leading south from room 9 ... we only ; get one shot at opening). 117C: 96 00 LDA >$00 ; Current room 117E: 81 09 CMPA #$09 ; Right room? 1180: 26 D7 BNE $1159 ; No ... "OPEN WHAT?" 1182: 96 12 LDA >$12 ; Already tried passage? 1184: 26 11 BNE $1197 ; Yes ... error message 1186: 0C 12 INC >$12 ; Now we have tried (whether we succeeded or not) 1188: BD 06 61 JSR $0661 ; Random number 118B: C1 40 CMPB #$40 ; 3/4 th of the time ... 118D: 24 08 BCC $1197 ; ... nothing happens 118F: C6 07 LDB #$07 ; --UDNEWS = --000111 ... 1191: F7 3D C1 STB $3DC1 ; ... (open passage to south) 1194: 7E 10 17 JMP $1017 ; Print "OK" and return ; 1197: 7E 10 10 JMP $1010 ; Print "I DON'T SEE ANYTHING INTERESTING" and return ;##OpenCryptKing ; If phys- bulk is 250 or better or have the Powerring treasure falls out. 119A: 81 66 CMPA #$66 ; Crypt of the ancient king? 119C: 26 BB BNE $1159 ; No ... "OPEN WHAT?" 119E: C6 2A LDB #$2A ; Got the ... 11A0: BD 18 85 JSR $1885 ; ... powerring? 11A3: 25 0A BCS $11AF ; Yes ... automatically get the treasure 11A5: 96 05 LDA >$05 ; Physical condition ... 11A7: 90 06 SUBA >$06 ; ... less than bulk? 11A9: 25 CB BCS $1176 ; Yes ... can't open 11AB: 81 FA CMPA #$FA ; Takes physical condition of 250 to open 11AD: 25 C7 BCS $1176 ; Not strong enough ... error and out 11AF: 86 02 LDA #$02 ; Drop treasure held by ... 11B1: BD 0E 80 JSR $0E80 ; ... crypt of the kings 11B4: 20 BB BRA $1171 ; Print the message of the object appearing ;##CommandASK ; Print the list of "required objects" for a protected object and move oracle to a random ; room. 11B6: 96 2B LDA >$2B ; Noun 11B8: 81 AE CMPA #$AE ; "ASK ORACLE" ? 11BA: 27 03 BEQ $11BF ; Yes ... go do it 11BC: 7E 10 99 JMP $1099 ; "ASK WHAT?" and out 11BF: B6 3D 56 LDA $3D56 ; Oracle's room 11C2: 91 00 CMPA >$00 ; Oracle in current room 11C4: 27 06 BEQ $11CC ; Yes ... "ASK" is OK 11C6: 8E 2B B5 LDX #$2BB5 ; "ASK WHO?" error 11C9: 7E 10 66 JMP $1066 ; Print the message ; 11CC: 10 8E 00 1B LDY #$001B ; Flags that advice has been given and for what objects 11D0: C6 0D LDB #$0D ; Number of advices given so far. 11D2: D1 1A CMPB >$1A ; Compare 13 to number given so far 11D4: 22 0C BHI $11E2 ; Number given is less than 13 ... still have ungiven ; 11D6: 0F 1A CLR >$1A ; Reset number of advices 11D8: 5A DECB ; Reset ... 11D9: A6 A5 LDA B,Y ; ... all ... 11DB: 84 7F ANDA #$7F ; ... advice ... 11DD: A7 A5 STA B,Y ; ... given ... 11DF: 5A DECB ; ... flags ... 11E0: 2A F7 BPL $11D9 ; ... to start over with advice ; 11E2: 0C 1A INC >$1A ; Number of advices given ; 11E4: C6 0C LDB #$0C ; Number of advices (0 to C ... 13 advices) 11E6: BD 06 90 JSR $0690 ; Random advice slot 11E9: D7 51 STB >$51 ; Hold it 11EB: A6 A5 LDA B,Y ; This advice already been given? 11ED: 2B F5 BMI $11E4 ; Yes ... try again ; 11EF: 8E 2B BD LDX #$2BBD ; "A MYSTERIOUS CALM SETTLES OVER THE ROOM AS THE ORACLE SPEAKS..." 11F2: BD 10 66 JSR $1066 ; Print the message 11F5: 8E 2C A7 LDX #$2CA7 ; "TO LEARN THE SECRET OF THE" 11F8: BD 10 66 JSR $1066 ; Print the message 11FB: E6 A5 LDB B,Y ; Object 11FD: BD 18 6D JSR $186D ; Get the word 1200: 8E 2B FC LDX #$2BFC ; "YOU MUST POSSESS THE" 1203: BD 10 66 JSR $1066 ; Print the message 1206: D6 51 LDB >$51 ; Protected object number 1208: 8D 16 BSR $1220 ; Print the list of required 120A: A6 A5 LDA B,Y ; Advice flag 120C: 8A 80 ORA #$80 ; Advice has been given 120E: A7 A5 STA B,Y ; Store flag 1210: C6 07 LDB #$07 ; "THE ORACLE VANISHES" 1212: BD 10 48 JSR $1048 ; Print message 1215: BD 06 61 JSR $0661 ; Random room 1218: C4 DF ANDB #$DF ; 1st half of whichever floor 121A: F7 3D 56 STB $3D56 ; New room for oracle 121D: 7E 0B 3E JMP $0B3E ; Sound efect 1220: 34 16 PSHS X,B,A ; Save params 1222: 8E 3F B8 LDX #$3FB8 ; Protected list 1225: BD 0F 17 JSR $0F17 ; Find desired list 1228: 30 01 LEAX 1,X ; Skip target object number 122A: E6 80 LDB ,X+ ; Get next object 122C: C4 3F ANDB #$3F ; Mask off bits 122E: BD 18 6D JSR $186D ; Print object name 1231: E6 84 LDB ,X ; End of ... 1233: 5C INCB ; ... list? 1234: 27 07 BEQ $123D ; Yes .. add period and out 1236: 86 2F LDA #$2F ; "AND" 1238: BD 10 54 JSR $1054 ; Print AND 123B: 20 ED BRA $122A ; Continue ; 123D: BD 10 3F JSR $103F ; Backspace over space and period and print 1240: BD 10 90 JSR $1090 ; Print a CR 1243: 35 96 PULS A,B,X,PC ; Done ;##CommandEAT 1245: 96 2B LDA >$2B ; Noun 1247: 81 94 CMPA #$94 ; Is it FOOD? 1249: 27 1E BEQ $1269 ; Handle food 124B: 81 CA CMPA #$CA ; Is it MUSHROOM? 124D: 27 3F BEQ $128E ; Handle mushroom 124F: 81 B4 CMPA #$B4 ; Powder 1251: 27 05 BEQ $1258 ; Handle powder 1253: 8E 2A C0 LDX #$2AC0 ; "DON'T BE RIDICULOUS." 1256: 20 33 BRA $128B ; Print and out ; ;##EatPowder ; Powder goes to random room. URN and BOTTLE come to this room. 1258: C6 27 LDB #$27 ; Powder object 125A: 8D 5C BSR $12B8 ; Move it to random room if we have it 125C: 24 0F BCC $126D ; Didn't have it ... error and out 125E: 96 00 LDA >$00 ; Current room 1260: B7 3D 29 STA $3D29 ; Move the URN here 1263: B7 3C FF STA $3CFF ; Move the BOTTLE here 1266: 7E 10 17 JMP $1017 ; "OK" and out ; ;##EatFood ; Move the food to a random room and add 30 to physical condition. 1269: 8D 42 BSR $12AD ; Check for object in pack 126B: 25 05 BCS $1272 ; Got it .. go eat it 126D: 8E 2A AB LDX #$2AAB ; "YOU DON'T HAVE THAT." 1270: 20 19 BRA $128B ; Print and out 1272: 86 01 LDA #$01 ; Object FOOD 1274: BD 06 61 JSR $0661 ; Random value (new place for food) 1277: C4 5F ANDB #$5F ; Limit destination (not maze ... 1st and 2nd floor) 1279: 1E 98 EXG B,A ; Align parameters 127B: BD 12 C6 JSR $12C6 ; Drop food from pack to room A 127E: 86 1E LDA #$1E ; Add 30 ... 1280: BD 1A 4E JSR $1A4E ; ... to physical condition 1283: 8E 2C 10 LDX #$2C10 ; "THANK YOU, I NEEDED THAT." 1286: 8D 03 BSR $128B ; Print message 1288: 8E 2C 2A LDX #$2C2A ; "IT WAS YUMMY." 128B: 7E 10 66 JMP $1066 ; Print the message and out ; ;##EatMushroom ; 1/32 chance it is poison and we die. Otherwise adds 60 to physical condition. 128E: 8D 1D BSR $12AD ; Find object in pack 1290: 24 DB BCC $126D ; Didn't find it ... YOU DON'T HAVE THAT 1292: BD 06 61 JSR $0661 ; Random number 1295: C1 08 CMPB #$08 ; 1/32 chance of no damage 1297: 24 09 BCC $12A2 ; No damage 1299: 8E 31 72 LDX #$3172 ; "IT'S POISONOUS!!" 129C: BD 10 66 JSR $1066 ; Print the message 129F: 7E 0D 5C JMP $0D5C ; UNCLE and new game ; 12A2: 86 3C LDA #$3C ; Add 60 ... 12A4: BD 1A 4E JSR $1A4E ; ... to health 12A7: C6 09 LDB #$09 ; Move mushroom ... 12A9: 8D 0D BSR $12B8 ; ... from pack to random room 12AB: 20 D6 BRA $1283 ; I NEEDED THAT 12AD: BD 18 CD JSR $18CD ; Convert noun to object number 12B0: 24 05 BCC $12B7 ; Not valid ... out 12B2: D6 07 LDB >$07 ; Get object number 12B4: BD 18 85 JSR $1885 ; Check for object in pack 12B7: 39 RTS ; Done 12B8: BD 18 85 JSR $1885 ; Object B in pack? 12BB: 24 FA BCC $12B7 ; No ... out 12BD: 34 04 PSHS B ; Hold object 12BF: BD 06 61 JSR $0661 ; Random number ... 12C2: 1F 98 TFR B,A ; ... to A 12C4: 35 04 PULS B ; Object number again ; 12C6: D7 07 STB >$07 ; To parameter 12C8: BD 11 03 JSR $1103 ; Adjust weight in pack for dropping B 12CB: 34 16 PSHS X,B,A ; Save all 12CD: BD 1A 5A JSR $1A5A ; Get object data 12D0: E6 02 LDB 2,X ; Flags 12D2: C4 7F ANDB #$7F ; Not in pack anymore 12D4: E7 02 STB 2,X ; New flags 12D6: A7 84 STA ,X ; New room 12D8: 43 COMA ; Set C=1 12D9: 35 96 PULS A,B,X,PC ; Out ;##CommandDRINK 12DB: 96 2B LDA >$2B ; Noun word 12DD: 81 2D CMPA #$2D ; "WATER" 12DF: 27 4A BEQ $132B ; Go drink the water 12E1: 81 BA CMPA #$BA ; "SPRITE" 12E3: 27 0F BEQ $12F4 ; Error for drinking the sprite (get it? the soda?) 12E5: 81 B6 CMPA #$B6 ; "POTION" 12E7: 27 17 BEQ $1300 ; Yes ... go handle potion 12E9: 81 FF CMPA #$FF ; No noun? 12EB: 10 27 FD AA LBEQ $1099 ; No noun ... "DRINK WHAT?" and out 12EF: 8E 2A C0 LDX #$2AC0 ; "DON'T BE RIDICULOUS." 12F2: 20 41 BRA $1335 ; Print and out ; ;##DrinkSPRITE ; Get it ... as in the soda? Nothing happens. 12F4: B6 3D 44 LDA $3D44 ; Sprite's location 12F7: 91 00 CMPA >$00 ; Is sprite in current room? 12F9: 26 62 BNE $135D ; No ... "DRINK WHAT?" 12FB: 8E 34 6D LDX #$346D ; "YOU MUST BE KIDDING!" 12FE: 20 35 BRA $1335 ; Print and out ; ;##DirnkPotion ; Drop potion to random room. Add 200 to physical condition. If stung by scorpion, there is 7/8 ; chance of healing it. ;##CodeBug1 ; Drink POTION ; Nice bug in code here. If you don't have the POTION but try and drink it you'll ; get the error "THE BOTTLE IS EMPTY." Intersting that the bug comes in a routine ; that starts at unlucky 1300. 1300: 8D AB BSR $12AD ; Check for POTION in pack 1302: 24 50 BCC $1354 ; Not there ... "THE BOTTLE IS EMPTY" Bug! 1304: 1F 98 TFR B,A ; Align parameters 1306: BD 06 61 JSR $0661 ; Random number 1309: CA 80 ORB #$80 ; Set upper bit 130B: 1E 98 EXG B,A ; Align parameters 130D: 8D B7 BSR $12C6 ; Drop to random room 130F: 86 C8 LDA #$C8 ; Add 200 to ... 1311: BD 1A 4E JSR $1A4E ; ... physical condition 1314: D6 09 LDB >$09 ; Scorpion sting count 1316: 26 05 BNE $131D ; If stung ... there is good chance of healing 1318: 8E 2C 5D LDX #$2C5D ; "THAT IS VERY STRONG MEDICINE." 131B: 20 18 BRA $1335 ; Print message and out 131D: BD 06 61 JSR $0661 ; Random number 1320: C1 20 CMPB #$20 ; There is a 1/8 chance ... 1322: 25 F4 BCS $1318 ; ... of doing nothing 1324: 0F 09 CLR >$09 ; Remove sting 1326: 8E 2C 38 LDX #$2C38 ; "THE SCORPION'S STING HAS BEEN CURED." 1329: 20 0A BRA $1335 ; Print and out ;##DrinkWater ; Empties the bottle and adds 32 to our physical condition. We can only heal this way once ; every 16 minutes. 132B: C6 02 LDB #$02 ; Is bottle ... 132D: BD 18 85 JSR $1885 ; ... in pack? 1330: 25 06 BCS $1338 ; Yes 1332: 8E 2A AB LDX #$2AAB ; "YOU DON'T HAVE THAT." 1335: 7E 10 66 JMP $1066 ; Print the message and out 1338: BD 1A 5A JSR $1A5A ; Get object 133B: E6 02 LDB 2,X ; Get data 133D: C5 0C BITB #$0C ; Empty or full? 133F: 27 13 BEQ $1354 ; The bottle is empty 1341: C4 F3 ANDB #$F3 ; Now ... 1343: E7 02 STB 2,X ; ... it is empty 1345: D6 3E LDB >$3E ; Enough time passed since last drinking? 1347: 26 08 BNE $1351 ; No ... skip healing 1349: 86 20 LDA #$20 ; Heal ... 134B: BD 1A 4E JSR $1A4E ; ... by 32 points 134E: 44 LSRA ; Must wait ... 134F: 97 3E STA >$3E ; ... 16 minutes 1351: 7E 10 17 JMP $1017 ; Print "OK" and continue ; 1354: C6 0E LDB #$0E ; "THE BOTTLE IS EMPTY." 1356: 7E 10 48 JMP $1048 ; Print and out ;##CommandCLIMB ; If the LEDGE is here and we have the rope, drop the treasure. 1359: 96 2B LDA >$2B ; Noun 135B: 81 FD CMPA #$FD ; "LEDGE"? 135D: 10 26 FD 38 LBNE $1099 ; No .... Command+" WHAT?" 1361: 96 36 LDA >$36 ; Room of ledge 1363: 91 00 CMPA >$00 ; Current room 1365: 10 26 05 7C LBNE $18E5 ; "I DO NOT SEE ANY LEDGE" and out 1369: C6 18 LDB #$18 ; See if rope ... 136B: BD 18 85 JSR $1885 ; ... is in pack 136E: 10 24 FC B3 LBCC $1025 ; "WITH WHAT?" and out 1372: 86 06 LDA #$06 ; Drop treasure held ... 1374: 7E 0E 80 JMP $0E80 ; ... by ledge at feet ;##CommandTIE ; If tieing HYDRA and it just pushed us back and we have the rope then bind ; it with the rope. The rope is dropped from our pack and bound to the HYDRA. 1377: 96 2B LDA >$2B ; Noun 1379: 81 FC CMPA #$FC ; "HYDRA" ? 137B: 27 03 BEQ $1380 ; Yes .... handle 137D: 7E 10 99 JMP $1099 ; "TIE WHAT?" and out 1380: 96 0F LDA >$0F ; Did HYDRA just push us? 1382: 27 22 BEQ $13A6 ; No ... I DO NOT SEE and out 1384: C6 18 LDB #$18 ; See if ... 1386: D7 07 STB >$07 ; ... rope ... 1388: BD 18 85 JSR $1885 ; ... is in pack 138B: 24 16 BCC $13A3 ; No ... "WITH WHAT" and out 138D: BD 10 17 JSR $1017 ; "OK" 1390: BD 1A 5A JSR $1A5A ; Get rope object 1393: E6 02 LDB 2,X ; Get flags 1395: C4 7F ANDB #$7F ; No longer in pack 1397: CA 01 ORB #$01 ; No longer accessible 1399: E7 02 STB 2,X ; New flags 139B: BD 11 03 JSR $1103 ; Readjust pack weight/bulk for dropped rope 139E: 86 AA LDA #$AA ; Set HYDRA status to ... 13A0: 97 0E STA >$0E ; ... tied up 13A2: 39 RTS ; Out ; 13A3: 7E 10 25 JMP $1025 ; "WITH WHAT?" and out 13A6: 7E 18 E5 JMP $18E5 ; "I DO NOT SEE ANY" and out ;##CommandHELP ; Just a commical message. 13A9: 8E 32 60 LDX #$3260 ; "DON'T ASK ME FOR HELP - YOU GOT YOURSELF INTO THIS MESS!" 13AC: 7E 10 66 JMP $1066 ; Print the message ;##CommandSTAB ; If stabbing HYDRA we must be in room with it (so it must be bound). Sword requires physical ; condition of 200. Dagger requires 240. MACE and AX both miss. If physical condition is met ; then HYDRA dies and it drops treasure and rope. 13AF: 96 2B LDA >$2B ; Get noun 13B1: 81 FC CMPA #$FC ; Stabbing the "HYDRA" ? 13B3: 27 03 BEQ $13B8 ; Yes ... go stap hydra 13B5: 7E 10 99 JMP $1099 ; Command+"WHAT?" 13B8: 96 33 LDA >$33 ; Hydra's room 13BA: 91 00 CMPA >$00 ; Current room 13BC: 26 E8 BNE $13A6 ; "I DO NOT SEE ANY" and out 13BE: C6 06 LDB #$06 ; Sword in ... 13C0: BD 18 85 JSR $1885 ; ... pack? 13C3: 25 23 BCS $13E8 ; Yes .... go stab with sword 13C5: C6 03 LDB #$03 ; Dagger in ... 13C7: BD 18 85 JSR $1885 ; ... pack? 13CA: 24 0C BCC $13D8 ; No ... move on 13CC: 96 05 LDA >$05 ; Physical condition 13CE: 81 F0 CMPA #$F0 ; Must be 240 of 256 to hit Hydra with dagger 13D0: 24 1C BCC $13EE ; We are ... go do it 13D2: 8E 2E 11 LDX #$2E11 ; "YOU MISSED." 13D5: 7E 10 66 JMP $1066 ; Print the message 13D8: C6 04 LDB #$04 ; Mace in ... 13DA: BD 18 85 JSR $1885 ; ... pack? 13DD: 25 F3 BCS $13D2 ; Yes ... missed with mace 13DF: C6 05 LDB #$05 ; Ax in ... 13E1: BD 18 85 JSR $1885 ; ... pack? 13E4: 25 EC BCS $13D2 ; Yes ... missed with ax 13E6: 20 BB BRA $13A3 ; "WITH WHAT?" and out ; ; Stab hydra with sword. 13E8: 96 05 LDA >$05 ; Physical condition 13EA: 81 C8 CMPA #$C8 ; Must be 200 to hit Hydra with sword 13EC: 25 E4 BCS $13D2 ; MISSED and out 13EE: 20 00 BRA $13F0 ; Got it ; ; Hydra dies 13F0: 86 01 LDA #$01 ; HYDRA is ... 13F2: 97 0E STA >$0E ; ... dead 13F4: C6 18 LDB #$18 ; Get object ... 13F6: BD 1A 5A JSR $1A5A ; ... "ROPE" 13F9: A6 02 LDA 2,X ; Flags 13FB: 85 01 BITA #$01 ; Is flag in use on hydra? 13FD: 27 08 BEQ $1407 ; No ... leave it alone 13FF: 84 7E ANDA #$7E ; Not in pack or in use 1401: A7 02 STA 2,X ; New status 1403: 96 33 LDA >$33 ; Drop rope ... 1405: A7 84 STA ,X ; ... where HYDRA was 1407: 8E 33 07 LDX #$3307 ; "THE HYDRA IS DEAD!" 140A: BD 10 66 JSR $1066 ; Print the message 140D: 86 07 LDA #$07 ; Drop the ... 140F: 7E 0E 80 JMP $0E80 ; ... 7th object (Hydra was carying in) ;##CommandVETAR ; Take 10 damage. GET LAMP immediately after it has been blown away. ; Note the SCROLL can be used to retrieve the lamp on the 4th floor. 1412: 8D 3F BSR $1453 ; Make sure spell has been learned 1414: 24 3B BCC $1451 ; "NOTHING SPECIAL HAPPENS" 1416: 96 14 LDA >$14 ; Has VETAR been temporarily enabled? 1418: 27 37 BEQ $1451 ; No ... "NOTHING SPECIAL HAPPENS" 141A: 86 A6 LDA #$A6 ; "LAMP" word 141C: 97 2B STA >$2B ; As if typed (for GET in a sec) 141E: 96 00 LDA >$00 ; Current room 1420: B7 3D 1D STA $3D1D ; Move lamp to this room 1423: 7E 18 F7 JMP $18F7 ; "GET LAMP" ;##CommandMITRA ; Take 12 damnage. Remove scorpion sting. 1426: 8D 2B BSR $1453 ; Make sure spell has been learned 1428: 24 27 BCC $1451 ; "NOTHING SPECIAL HAPPENS" 142A: 96 09 LDA >$09 ; Poison sting 142C: 27 23 BEQ $1451 ; Not stung ... "NOTHING SPECIAL HAPPENS" 142E: 7E 13 24 JMP $1324 ; Remove scorpion sting ; 1431: 39 RTS ; Done ;##CommandOKKAN ; Take 14 damage. Get treasure from "pile of rocks" if it is here. 1432: 8D 1F BSR $1453 ; Make sure spell has been learned 1434: 24 1B BCC $1451 ; "NOTHING SPECIAL HAPPENS" 1436: 96 11 LDA >$11 ; Already done this? 1438: 26 F7 BNE $1431 ; Out 143A: 96 10 LDA >$10 ; Has pile of rocks been moved to us? 143C: 27 13 BEQ $1451 ; No ... "NOTHING SPECIAL HAPPENS" 143E: 96 37 LDA >$37 ; Location of "pile of rocks" 1440: 91 00 CMPA >$00 ; Current room 1442: 26 0D BNE $1451 ; "NOTHING SPECIAL HAPPENS" 1444: 8E 31 AB LDX #$31AB ; "THE LIGHT GROWS STRONGER UNTIL THE ENTIRE ROOM IS BATHED IN ITS GLOW." 1447: BD 10 66 JSR $1066 ; Print the message 144A: 86 08 LDA #$08 ; Drop treasure held ... 144C: 0C 11 INC >$11 ; ... by ... 144E: 7E 0E 80 JMP $0E80 ; ... pile of rocks ; 1451: 20 31 BRA $1484 ; "NOTHING SPECIAL HAPPENS" ; Make sure we have learned the spell. If we have take damage like this: ; VETAR=5*2, MITRA=6*2, OKKAN=7*2, AKHIROM=8*2, NERGAL=9*2, BELROG=10*2, ; CROM=11*2, ISHTAR=12*2 1453: D6 2A LDB >$2A ; Verb word (spell) 1455: CB D3 ADDB #$D3 ; Convert verb word to word list 1457: D7 2B STB >$2B ; Noun 1459: BD 0E 38 JSR $0E38 ; Look for noun in pack 145C: 24 07 BCC $1465 ; Dont have it ... out 145E: C0 32 SUBB #$32 ; (5 for VETAR) 1460: 58 ASLB ; * 2 1461: BD 1A 2A JSR $1A2A ; Take damage for using spell 1464: 43 COMA ; C=1 1465: 39 RTS ; Out ;##CommandAKHIROM ; Take 16 damage. If SCARAB is in pack, make us invulnerable for 3 minutes. At the ; end of that if the scarab is in the pack, move it to a random room. So be sure ; and drop the scarab while you are invulnerable or you'll have to look for it ; to do it again. Also kill the HYDRA if it is in the room (no SCARAB required). 1466: 8D EB BSR $1453 ; Make sure spell has been learned 1468: 24 1A BCC $1484 ; "NOTHING SPECIAL HAPPENS" 146A: 96 33 LDA >$33 ; Is HYDRA ... 146C: 91 00 CMPA >$00 ; ... in current room? 146E: 26 03 BNE $1473 ; No ... skip 1470: BD 13 F0 JSR $13F0 ; Kill HYDRA 1473: D6 46 LDB >$46 ; Invulnerability count 1475: 26 0D BNE $1484 ; already invulnerable ... "NOTHING SPECIAL HAPPENS" 1477: C6 15 LDB #$15 ; Is the SCARAB ... 1479: BD 18 85 JSR $1885 ; ... in the pack? 147C: 24 06 BCC $1484 ; No ... "NOTHING SPECIAL HAPPENS" 147E: 86 03 LDA #$03 ; Invulnerable ... 1480: 97 46 STA >$46 ; ... for 3 minutes 1482: 20 0F BRA $1493 ; "OK" 1484: 7E 10 1E JMP $101E ; "NOTHING SPECIAL HAPPENS" ;##CommandNERGAL ; Take 18 damage. Allows us to stay in poison room. 1487: 8D CA BSR $1453 ; Make sure spell has been learned 1489: 24 F9 BCC $1484 ; "NOTHING SPECIAL HAPPENS" 148B: 96 45 LDA >$45 ; Poision fog clock running? 148D: 27 F5 BEQ $1484 ; "NOTHING SPECIAL HAPPENS" 148F: 0F 32 CLR >$32 ; Clear in-fog-room 1491: 0F 45 CLR >$45 ; Clear time in poison fog 1493: 7E 10 17 JMP $1017 ; "OK" ;##CommandBELROG ; Take 20 damage. Make JUMP from this room without failing. 1496: 8D BB BSR $1453 ; Make sure spell has been learned 1498: 24 EA BCC $1484 ; "NOTHING SPECIAL HAPPENS" 149A: BD 19 9B JSR $199B ; Get any JUMP information 149D: 4D TSTA ; Any jump from this room? 149E: 27 E4 BEQ $1484 ; No ... "NOTHING SPECIAL HAPPENS" 14A0: A6 43 LDA 3,U ; Get jump destination 14A2: 97 00 STA >$00 ; Make jump 14A4: 7E 0E 27 JMP $0E27 ; Print room description ;##CommandCROM ; Take 22 damage. Ublocks all passages. 14A7: 8D AA BSR $1453 ; Make sure spell has been learned 14A9: 24 D9 BCC $1484 ; "NOTHING SPECIAL HAPPENS" 14AB: BD 0F 93 JSR $0F93 ; Get room doors for current room 14AE: A6 89 01 00 LDA $0100,X ; Blocks 14B2: A4 84 ANDA ,X ; Any blocks in place? 14B4: 27 CE BEQ $1484 ; No ... "NOTHING SPECIAL HAPPENS" 14B6: 6F 89 01 00 CLR $0100,X ; Remove all blocks 14BA: 8E 34 41 LDX #$3441 ; "A BOLT OF LIGHTNING UNBLOCKS THE PASSAGE!!!" 14BD: 7E 10 66 JMP $1066 ; Print the message ;##CommandISHTAR ; Take 24 damage. Move to "exit" point where we drop treasure. This has a limited ; number of uses (randomized at start to 1-4) so use it wisely. 14C0: BD 14 53 JSR $1453 ; Make sure spell has been learned 14C3: 24 BF BCC $1484 ; "NOTHING SPECIAL HAPPENS" 14C5: 0D 34 TST >$34 ; Still have an ISHTAR to use? 14C7: 2B BB BMI $1484 ; "NOTHING SPECIAL HAPPENS" 14C9: 0A 34 DEC >$34 ; One used up 14CB: 86 CA LDA #$CA ; Move to treasure room 202 ... 14CD: 97 00 STA >$00 ; ... "NEAR A GREAT FOREST" 14CF: 97 01 STA >$01 ; Back as well ;##CodeBug3 ; All the other leave-room commands reset the MYSTERIOUS FOG counters. This does not. ; If you use ISHTAR to leave the poison fog the count goes on as if you are there. 14D1: 7E 10 17 JMP $1017 ; "OK" ;##CommandRUN ; If the pack weight is greater than 7 then drop the heaviest object. Pick a random number ; of steps (1-9) and take random directions from each room in turn. No handlers or processing ; of the rooms are done of any kind except the final room. In the end we get the description ; of the last room and pick up any spells. 14D4: BD 07 25 JSR $0725 ; Out of the MYSTERIOUS FOG 14D7: 86 07 LDA #$07 ; Is pack weight ... 14D9: 91 04 CMPA >$04 ; ... less than 8 14DB: 24 03 BCC $14E0 ; Yes ... don't drop anything 14DD: BD 19 FE JSR $19FE ; Drop the heaviest object in pack 14E0: C6 08 LDB #$08 ; Get random value ... 14E2: BD 06 90 JSR $0690 ; 0-8 14E5: 5C INCB ; Make it 1-9 14E6: E7 E2 STB ,-S ; Store count 14E8: 96 00 LDA >$00 ; Current room 14EA: 1F 89 TFR A,B ; Align parameter 14EC: BD 06 77 JSR $0677 ; Get random valid direction 14EF: BD 0F 71 JSR $0F71 ; Make move 14F2: 6A E4 DEC ,S ; All steps taken? 14F4: 26 F4 BNE $14EA ; No .. do all 14F6: 97 00 STA >$00 ; New current room 14F8: 97 01 STA >$01 ; And last room 14FA: BD 0E 27 JSR $0E27 ; Print room description (maybe fall if dark) 14FD: BD 0F E0 JSR $0FE0 ; Check for spells again. Not sure why. 1500: 35 82 PULS A,PC ; Out ;##CommandFILL 1502: 96 2B LDA >$2B ; Fill ... 1504: 81 A6 CMPA #$A6 ; ... LAMP? 1506: 27 10 BEQ $1518 ; Yes ... handle 1508: 81 B8 CMPA #$B8 ; Fill BOTTLE? 150A: 27 47 BEQ $1553 ; Yes ... handle 150C: 81 A9 CMPA #$A9 ; FILL URN? 150E: 10 27 00 7B LBEQ $158D ; Yes ... handle ; 1512: 8E 2A C0 LDX #$2AC0 ; "DON'T BE RIDICULOUS." 1515: 7E 10 66 JMP $1066 ; Print the message ; ;##FillLamp ; The lamp can be refilled if it is in the pack or current room. The lamp can be filled from the URN or ; the oil-room. The oil room appears after you know ISHTAR. The URN starts with 4 fills. Either the ; URN or the lamp can be filled from the oil room. The oil room has a fixed number of refills (4-7). ; After you fill from the oil room it moves to a random room on another floor. 1518: BD 0E 38 JSR $0E38 ; Look for noun in pack 151B: 25 07 BCS $1524 ; Got it 151D: F6 3D 1D LDB $3D1D ; LAMP's room 1520: D1 00 CMPB >$00 ; In current room? 1522: 26 3B BNE $155F ; I DO NOT SEE ... and out 1524: B6 3C D7 LDA $3CD7 ; Action _v ... the oil room 1527: 91 00 CMPA >$00 ; In current room? 1529: 26 09 BNE $1534 ; No ... try URN 152B: BD 1C F8 JSR $1CF8 ; Can the lamp be refilled? ;##CodeBug7 ; If you try to fill from the URN in this room and the oil is not visible yet, you will fail. 152E: 27 04 BEQ $1534 ; No ... error 1530: 0A 3A DEC >$3A ; One less refill from oil room 1532: 20 0E BRA $1542 ; Go restore lamp 1534: B6 3D 2B LDA $3D2B ; URN flags 1537: 2A 51 BPL $158A ; Not in pack ... WITH WHAT 1539: 85 0C BITA #$0C ; Fill flags 153B: 27 4D BEQ $158A ; No oil in urn ... WITH WHAT 153D: 80 04 SUBA #$04 ; Take one of the 4 refills from the 0000_XX00 bits 153F: B7 3D 2B STA $3D2B ; New fill status 1542: 8E 07 08 LDX #$0708 ; 1800 is 30 minutes 1545: 9F 38 STX >$38 ; New oil level 1547: C6 BF LDB #$BF ; Random number ... 1549: BD 06 90 JSR $0690 ; 0 to 191 154C: CB 40 ADDB #$40 ; 64 to 255 154E: F7 3C D7 STB $3CD7 ; Move the oil room to a random room different floor 1551: 20 33 BRA $1586 ; OK and out ; 1553: BD 0E 38 JSR $0E38 ; Look for noun in pack 1556: 25 0B BCS $1563 ; Got it 1558: F6 3C FF LDB $3CFF ; Is bottle in ... 155B: D1 00 CMPB >$00 ; ... current room 155D: 27 04 BEQ $1563 ; Yes ... do it 155F: BD 18 E5 JSR $18E5 ; I DO NOT SEE ANY 1562: 39 RTS ; Out ; ;##FillBottle ; The bottle can be refilled over and over. It has two levels ... filled and empty. There ; are several rooms with water: 0, 74, 16, 17, and 130. Note the missing word from the ; error message here: "THERE IS NO HERE" ... no WATER. 1563: 96 00 LDA >$00 ; Our ...current room 1565: 81 00 CMPA #$00 ; Room 0? 1567: 27 15 BEQ $157E ; Yes ... has water 1569: 81 4A CMPA #$4A ; Room 74? 156B: 27 11 BEQ $157E ; Yes ... has water 156D: 81 10 CMPA #$10 ; Room 16? 156F: 27 0D BEQ $157E ; Yes ... has water 1571: 81 11 CMPA #$11 ; Room 17? 1573: 27 09 BEQ $157E ; Yes ... has water 1575: 81 82 CMPA #$82 ; Room 130? 1577: 27 05 BEQ $157E ; Yes ... has water 1579: C6 11 LDB #$11 ; THERE IS NO HERE (message missing a word) 157B: 7E 10 48 JMP $1048 ; Print error ; 157E: B6 3D 01 LDA $3D01 ; Bottle flags 1581: 8A 0C ORA #$0C ; Fille up 1583: B7 3D 01 STA $3D01 ; New flags 1586: BD 10 17 JSR $1017 ; OK 1589: 39 RTS ; Out 158A: 7E 10 25 JMP $1025 ; WITH WHAT and out ;##FillURN ; The urn must be in the pack to be refilled. The URN holds up to 4 refills ; from the OIL ROOM. The OIL ROOM is initialized with a random number of fills (URN or LAMP). ; It works out to 4-7 times. When we fill from the OIL ROOM it moves to a random room on ; another floor. If we are in the OIL ROOM and we fill but the URN is full, we get an OK ; but nothing happens (the OIL ROOM stays). 158D: B6 3D 2B LDA $3D2B ; URN flags 1590: 2A CD BPL $155F ; Not in pack ... "I DO NOT SEE ANY" and out 1592: F6 3C D7 LDB $3CD7 ; Are we in .. 1595: D1 00 CMPB >$00 ; ... the oil room 1597: 26 F1 BNE $158A ; No ... WITH WHAT and out 1599: BD 1C F8 JSR $1CF8 ; Can we refill the lamp? 159C: 27 EC BEQ $158A ; No ... WITH WHAT and out 159E: 1F 89 TFR A,B ; Hold flags 15A0: 84 0C ANDA #$0C ; Is the ... 15A2: 81 0C CMPA #$0C ; ... URN full? 15A4: 27 E0 BEQ $1586 ; Say OK but do nothing 15A6: 0A 3A DEC >$3A ; Remove one refill from the OIL ROOM 15A8: CB 04 ADDB #$04 ; Add one refill to the URN 15AA: F7 3D 2B STB $3D2B ; New flags 15AD: 20 98 BRA $1547 ; Move the OIL ROOM to another floor ;##LookScarab ; If we are invulnerable for 3 minutes because of ISHTAR then the SCARAB is glowing. ; At the end of the 3 minutes if the scarab is in the pack it moves to a rancom ; room -- this must be a hint to drop it before then. 15AF: BD 0E 38 JSR $0E38 ; Look for noun in pack 15B2: 24 62 BCC $1616 ; No ... "LOOK WHAT?" 15B4: 96 46 LDA >$46 ; Currently invulnerable? 15B6: 27 38 BEQ $15F0 ; No ... "I DON'T SEE ANYTING INTERESTING" 15B8: C6 12 LDB #$12 ; THE SCARAB IS GLOWING 15BA: 7E 10 48 JMP $1048 ; Print and out ;##LookTablet ; If we have the tablet in our pack it goes to a random room. If we are in room 19 (ancient ; carvings on the wall) then the ORACLE comes to us. 15BD: C6 17 LDB #$17 ; TABLET 15BF: BD 12 B8 JSR $12B8 ; Move to random room if in pack 15C2: 24 52 BCC $1616 ; Not in pack ... "LOOK WHAT?" and out 15C4: D6 00 LDB >$00 ; Current room 15C6: C1 13 CMPB #$13 ; Are we in room 19? 15C8: 26 26 BNE $15F0 ; No ... I DON'T SEE ANYTHING INTERESTING 15CA: F7 3D 56 STB $3D56 ; Bring the ORACLE to this room 15CD: 39 RTS ; Out ;##CommandLOOK 15CE: 96 2B LDA >$2B ; Noun 15D0: 81 C4 CMPA #$C4 ; TABLET? 15D2: 27 E9 BEQ $15BD ; Yes ... go handle tablet 15D4: 81 C7 CMPA #$C7 ; SCARAB? 15D6: 27 D7 BEQ $15AF ; Yes ... go handle scarab 15D8: 81 2C CMPA #$2C ; POOL? 15DA: 27 1A BEQ $15F6 ; Yes ... go handle pool 15DC: 81 A9 CMPA #$A9 ; URN? 15DE: 27 5B BEQ $163B ; Yes ... go handle urn 15E0: 81 6D CMPA #$6D ; PIT? 15E2: 27 40 BEQ $1624 ; Yes ... go handle pit 15E4: 81 B8 CMPA #$B8 ; BOTTLE? 15E6: 27 72 BEQ $165A ; Yes ... go handle bottle 15E8: 81 FF CMPA #$FF ; Nothing? 15EA: 27 07 BEQ $15F3 ; Yes ... just print room description 15EC: 81 A7 CMPA #$A7 ; PARCHMENT? 15EE: 27 29 BEQ $1619 ; Yes ... go handle parchment 15F0: 7E 10 10 JMP $1010 ; I DON'T SEE ANYTHING INTERESTING ; 15F3: 7E 0E 27 JMP $0E27 ; Reprint room and out ;##LookPool ; If we look into the pool in room 0 we see the instructions for getting the SPELLBOOK. ; The oracle doesn't give info on the SPELLBOOK ... this completes all we need to know. 15F6: 0D 00 TST >$00 ; In room 0 (pool of water) 15F8: 26 F6 BNE $15F0 ; No ... "I DON'T SEE ANYTHING INTERESTING". 15FA: 8E 2C C1 LDX #$2CC1 ; "IN A REFLECTION IN THE POOL YOU CAN READ THE FOLLOWING WORDS ON THE CEILING..." 15FD: BD 10 66 JSR $1066 ; Print the message 1600: 8E 2C A7 LDX #$2CA7 ; "TO LEARN THE SECRET OF THE" 1603: BD 10 66 JSR $1066 ; Print the message 1606: C6 23 LDB #$23 ; Print ... 1608: BD 18 6D JSR $186D ; ... "SPELLBOOK" 160B: 8E 2B FC LDX #$2BFC ; "YOU MUST POSSESS THE" 160E: BD 10 66 JSR $1066 ; Print the message 1611: C6 0D LDB #$0D ; Spell book object in managed-lists 1613: 7E 12 20 JMP $1220 ; Print required-object list for object D (spell book) ; 1616: 7E 10 99 JMP $1099 ; Command+" WHAT?" ;##LookParchment ; If we have the parchment we see it has a musical score on it. 1619: BD 0E 38 JSR $0E38 ; Look for parchment in pack 161C: 24 F8 BCC $1616 ; Not there ... "LOOK WHAT?" 161E: 8E 34 21 LDX #$3421 ; "THE PARCHMENT HAS A SCORE ON IT." 1621: 7E 10 66 JMP $1066 ; Print the message ;##LookPit ; We have to be able to see. Then 1/2 the time the treasure held by the pit will ; appear. Be persistent ... it may take a few LOOKs to get the treasure. 1624: BD 0D 8B JSR $0D8B ; Can we see? 1627: 24 2F BCC $1658 ; No ... 1629: 96 00 LDA >$00 ; Current room 162B: 91 35 CMPA >$35 ; Is the PIT in this room? 162D: 26 26 BNE $1655 ; No ... nothing interesting 162F: BD 06 61 JSR $0661 ; Random 1632: C1 80 CMPB #$80 ; We see it ... 1634: 24 1F BCC $1655 ; ... 1/2 the time 1636: 86 05 LDA #$05 ; Drop object held by the pit ... 1638: 7E 0E 80 JMP $0E80 ; ... and out ;##LookUrn ; If the urn is in the pack or room we can see if there is oil in it. 163B: BD 0E 38 JSR $0E38 ; Is urn in pack? 163E: 25 07 BCS $1647 ; Yes .. handle 1640: B6 3D 29 LDA $3D29 ; Urn in ... 1643: 91 00 CMPA >$00 ; ... current room 1645: 26 CF BNE $1616 ; No ... "LOOK WHAT?" and out 1647: BD 1A 5A JSR $1A5A ; Get object data 164A: A6 02 LDA 2,X ; Get flags 164C: 84 0C ANDA #$0C ; Any oil in it? 164E: 27 1E BEQ $166E ; No ... THERE IS NOTHING IN URN 1650: C6 09 LDB #$09 ; THE URN IS FILLED WITH OIL 1652: 7E 10 48 JMP $1048 ; Print and out 1655: 7E 10 10 JMP $1010 ; "I DON'T SEE ANYTHING INTERESTING." 1658: 20 1D BRA $1677 ; Print "YOU CAN NOT SEE IN THE DIM LIGHT" and out ;##LookBottle ; If the bottle is in the pack (not room) we can see if there is water in it. 165A: BD 0E 38 JSR $0E38 ; Is in pack? 165D: 24 B7 BCC $1616 ; No ... "LOOK WHAT?" and out 165F: BD 1A 5A JSR $1A5A ; Get object data 1662: A6 02 LDA 2,X ; Get flags 1664: 84 0C ANDA #$0C ; Any water in it? 1666: 26 03 BNE $166B ; Yes ... THE BOTTLE IS FILLED WITH WATER 1668: C6 0B LDB #$0B ; THE BOTTLE IS EMPTY 166A: 8C C6 0C CMPX #$C60C ; THE BOTTLE IS FILLED WITH WATER 166D: 8C C6 08 CMPX #$C608 ; THERE IS NOTHING IN URN 1670: 20 E0 BRA $1652 ; Do message ; This helper function prints the status of the urn. It is not called from ; anyhwere. 1672: B6 3D 2B LDA $3D2B ; Get URN flags 1675: 20 D5 BRA $164C ; Print urn status 1677: C6 0D LDB #$0D ; "YOU CAN NOT SEE IN THE DIM LIGHT." 1679: 20 D7 BRA $1652 ; Print and out ;##CommandPLAY ; We can play the flute anytime without error. But if we are in the room with action_e and ; we have the parchment then the LEDGE appears. (The LEDGE holds a treasure). 167B: 96 2B LDA >$2B ; Get noun 167D: 81 24 CMPA #$24 ; FLUTE? 167F: 10 26 01 10 LBNE $1793 ; No ... DON'T BE REDICULOUS 1683: BD 0E 38 JSR $0E38 ; Is in pack? 1686: 25 03 BCS $168B ; Yes ... handle it 1688: 7E 10 99 JMP $1099 ; "PLAY WHAT?" 168B: BD 0B 3E JSR $0B3E ; Sound effect 168E: C6 0E LDB #$0E ; Parchment 1690: BD 18 85 JSR $1885 ; Is it in pack? 1693: 24 0F BCC $16A4 ; No ... just toot along 1695: 96 00 LDA >$00 ; Current room 1697: B1 3C 9B CMPA $3C9B ; action _e room ? 169A: 26 08 BNE $16A4 ; No ... just toot along 169C: 97 36 STA >$36 ; Bring the LEDGE here 169E: 8E 2F 95 LDX #$2F95 ; "BY PLAYING THE FLUTE ACCORDING TO A SONG ON THE PARCHMENT, A SECRET LEDGE HAS BEEN EXPOSED." 16A1: 7E 10 66 JMP $1066 ; Print message and return 16A4: 7E 10 17 JMP $1017 ; OK (not really an error .. we can toot along anytime) ;##-CalculateScore ; Calculate score ; The score goes like this. There are 8 spells. We get 10 points for learning each. ; There are 16 treasures. We get 5 points if in pack OR 10 points if at entrance. ; 8*10 + 16*10 = 240 points max. ; ; The catch is that the treasure must be on the ground outside to get full credit. ; 16A7: 34 10 PSHS X ; Save params 16A9: 0F 28 CLR >$28 ; Score tally 16AB: 8E 3B BD LDX #$3BBD ; Spell data 16AE: C6 08 LDB #$08 ; Eight spells 16B0: 30 04 LEAX 4,X ; Skip to next spell 16B2: A6 03 LDA 3,X ; Skip if not ... 16B4: 2A 06 BPL $16BC ; ... learned 16B6: 96 28 LDA >$28 ; Score tally 16B8: 8B 0A ADDA #$0A ; +10 for learned spells (up to 8) 16BA: 97 28 STA >$28 ; New score 16BC: 5A DECB ; All done? 16BD: 26 F1 BNE $16B0 ; No ... check all spells ; 16BF: 8E 3D 56 LDX #$3D56 ; Treasure table 16C2: C6 10 LDB #$10 ; 16 treasures 16C4: 30 03 LEAX 3,X ; Next treasure 16C6: A6 02 LDA 2,X 16C8: 85 03 BITA #$03 16CA: 26 27 BNE $16F3 ; No ... skip it completely 16CC: 4D TSTA ; Is this in backpack? 16CD: 2A 06 BPL $16D5 ; No .... maybe in the forrest? 16CF: 96 28 LDA >$28 ; Score tally 16D1: 8B 05 ADDA #$05 ; +5 for holding treasure (up to 16) 16D3: 20 0A BRA $16DF ; Check for win (can't be if holding ... why check?) 16D5: A6 84 LDA ,X ; Get location ; ; Note ... treasure must be on the ground for full 10 points! ; 16D7: 81 CA CMPA #$CA ; Outside in forest? 16D9: 26 18 BNE $16F3 ; No ... skip 16DB: 96 28 LDA >$28 ; Score tally 16DD: 8B 0A ADDA #$0A ; +10 for treasures at entrance (up to 16) 16DF: 81 F0 CMPA #$F0 ; Reached 240? 16E1: 25 0E BCS $16F1 ; Less than ... keep going ;##Win 16E3: BD A9 28 JSR $A928 ; Clear screen 16E6: 8E 33 FF LDX #$33FF ; "CONGRATULATIONS!!! YOU WIN!" 16E9: 8D B6 BSR $16A1 ; Short way to JSR PrintMessage 16EB: BD 0B 3E JSR $0B3E ; Sound effect 16EE: 7E 0D 65 JMP $0D65 ; Blink cursor and wait for key and start game again 16F1: 97 28 STA >$28 ; Score tally 16F3: 5A DECB ; All checked? 16F4: 26 CE BNE $16C4 ; No ... back for more 16F6: 35 90 PULS X,PC ; Done ;##CommandSCORE 16F8: 34 10 PSHS X ; Save parameters 16FA: 8D AB BSR $16A7 ; Calculate score 16FC: 8E 2D 27 LDX #$2D27 ; "YOU HAVE SCORED" 16FF: BD 10 66 JSR $1066 ; Print message 1702: D6 28 LDB >$28 ; Score 1704: 8D 0F BSR $1715 ; Print number 1706: 8E 2D 36 LDX #$2D36 ; " POINTS OUT OF A TOTAL OF 240 POINTS. PHYS COND = " 1709: BD 10 66 JSR $1066 ; Print message 170C: D6 05 LDB >$05 ; Physical condition 170E: 8D 05 BSR $1715 ; Print number 1710: BD 10 90 JSR $1090 ; Print CR 1713: 35 90 PULS X,PC ; Done ; Convert number in B to string and print 1715: 34 16 PSHS X,B,A ; Save params 1717: 4F CLRA ; MSB 0 1718: 6F E2 CLR ,-S ; End of message marker on stack 171A: 8E FF FF LDX #$FFFF ; -1 171D: 83 00 0A SUBD #$000A ; Count ... 1720: 30 01 LEAX 1,X ; ... next ... 1722: 24 F9 BCC $171D ; ... digit 1724: 34 04 PSHS B ; Save converted digit 1726: 1F 10 TFR X,D ; Continue ... 1728: 26 F0 BNE $171A ; ... until 0 172A: A6 E0 LDA ,S+ ; Next in messaage 172C: 27 07 BEQ $1735 ; Yes ... out 172E: 8B 3A ADDA #$3A ; Offset from screen character '0' 1730: BD 06 00 JSR $0600 ; Print character 1733: 20 F5 BRA $172A ; Keep going 1735: 35 96 PULS A,B,X,PC ; Done ; Tape I/O error ; Vectored here by ROM ... ON ERROR GOTO COMMAND ; This is the QUIET command. 1737: C0 20 SUBB #$20 ; Should be inverse H (IO error) or other 1739: F7 04 1F STB $041F ; Upper right corner of screen 173C: BD A7 EB JSR $A7EB ; CASOFF ... Motor off ; ;##CommandQUIET ; Remember ... interrupts are only turned on during regular user input. They are off now. ; This allows us to just pause the game or SAVE or LOAD. 173F: BD A1 B1 JSR $A1B1 ; Blink cursor and wait for keystroke 1742: 10 CE 02 37 LDS #$0237 ; Need to relocate stack while we work with the area 1746: 0F 78 CLR >$78 ; File status: CLOSED 1748: 81 57 CMPA #$57 ; 'W' 174A: 27 1B BEQ $1767 ; 'W' ... ignore (return to game loop) 174C: 81 21 CMPA #$21 ; '!' ... 174E: 27 1A BEQ $176A ; ... Save engine state to tape 1750: 81 29 CMPA #$29 ; ' ')' ... reload game data 1752: 26 EB BNE $173F ; Unknown action ... go back and get a valid one ; 1754: BD A5 00 JSR $A500 ; CLOADM Load engine state 1757: BD A5 00 JSR $A500 ; CLOADM Load game state 175A: 8E 02 40 LDX #$0240 ; Restore 1st 256 bytes 175D: DE 8A LDU >$8A ; PV DUMMY - THESE TWO BYTES ARE ALWAYS ZERO 175F: 5F CLRB ; Move ... 1760: A6 80 LDA ,X+ ; ... 256 ... 1762: A7 C0 STA ,U+ ; ... bytes ... 1764: 5A DECB ; ... from 240 to ... 1765: 26 F9 BNE $1760 ; ... 0 1767: 7E 0D 36 JMP $0D36 ; Continue near top of game loop ; 176A: 8E 02 40 LDX #$0240 ; Engine state 176D: 5F CLRB ; Move ... 176E: DE 8A LDU >$8A ; ... 256 ... 1770: A6 C0 LDA ,U+ ; ... bytes ... 1772: A7 80 STA ,X+ ; ... from .... 1774: 5A DECB ; 0 to ... 1775: 26 F9 BNE $1770 ; ... 240 1777: BD 01 1D JSR $011D ; Write to tape (two files ... engine state and game state) 177A: 20 EB BRA $1767 ; Continue near top of game loop ;##CommandKILL 177C: 96 2B LDA >$2B ; Noun 177E: 81 FC CMPA #$FC ; "HYDRA?" 1780: 27 3D BEQ $17BF ; Yes ... go attack HYDRA 1782: BD 18 CD JSR $18CD ; Noun to object number 1785: 24 11 BCC $1798 ; Not an object ... "KILL WHAT?" and out 1787: 81 1E CMPA #$1E ; Higher than "MINOTAUR"? 1789: 22 04 BHI $178F ; Yes ... invalid 178B: 81 19 CMPA #$19 ; Lower than "SPRITE" ? 178D: 24 0C BCC $179B ; No ... something to attack ; 178F: 81 1F CMPA #$1F ; Killing the "ORACLE"? 1791: 27 1B BEQ $17AE ; Yes ... error message (code bug) 1793: 8E 2A C0 LDX #$2AC0 ; "DON'T BE RIDICULOUS." 1796: 20 40 BRA $17D8 ; Print and out 1798: 7E 10 99 JMP $1099 ; "KILL WHAT?" and out ;##KillCreature ; Every creature has a combination of objects you need to kill. If you don't have that ; combo you take 50 damage and miss. Otherwise the creature dies and drops its ; treasure. 179B: BD 09 43 JSR $0943 ; Is creature in room? 179E: 24 F8 BCC $1798 ; No ... "KILL WHAT?" and out 17A0: BD 0A 0D JSR $0A0D ; Creature visible? 17A3: 24 F3 BCC $1798 ; No ... "KILL WHAT?" and out 17A5: 8D 7F BSR $1826 ; Check required items to kill 17A7: 24 27 BCC $17D0 ; Didn't have the combo ... 50 from phys, YOU MISSED and out 17A9: BD 0B 3E JSR $0B3E ; Play sound effect 17AC: 20 2D BRA $17DB ; Kill the creature ;##CodeBug2 ; Tring to kill oracle ; If the Oracle is in the room and you try and kill it, you get ; 9:"THE URN IS FILLED WITH OIL." instead of 7:".. ORACLE DISAPPEARS." 17AE: BD 09 43 JSR $0943 ; Is oracle in this room? 17B1: 24 E5 BCC $1798 ; No ... "KILL WHAT?" and out 17B3: C6 09 LDB #$09 ; "THE URN IS FILLED WITH OIL". ?What? 17B5: BD 10 48 JSR $1048 ; Print message 17B8: BD 06 61 JSR $0661 ; Random number 17BB: F7 3D 56 STB $3D56 ; Oracles new room 17BE: 39 RTS ; Done ;##KillHydra ; You kill the HYDRA by stabbing it with the sword or dagger. Killing it here just lopps ; off a head and it grows back. Note the HYDRA must be in this room which means it was ; previously tied up with the rope. 17BF: 96 0E LDA >$0E ; Is HYDRA ... 17C1: 81 01 CMPA #$01 ; ... status: dead? 17C3: 27 D3 BEQ $1798 ; Yes ... "KILL WHAT?" and out 17C5: 96 33 LDA >$33 ; Is Hydra in ... 17C7: 91 00 CMPA >$00 ; ... current room? 17C9: 26 CD BNE $1798 ; No ... "KILL WHAT?" and out 17CB: 8E 30 8C LDX #$308C ; "ONE OF THE HYDRA'S HEADS IS LOPPED OFF, BUT ANOTHER ONE TAKES ITS PLACE AND SNEERS AT YOU." 17CE: 20 08 BRA $17D8 ; Print message and out 17D0: 86 32 LDA #$32 ; Takes 50 from physical condition to not-kill 17D2: BD 1A 2F JSR $1A2F ; Adjust physical condition 17D5: 8E 2E 11 LDX #$2E11 ; "YOU MISSED." 17D8: 7E 10 66 JMP $1066 ; Print the message 17DB: 34 16 PSHS X,B,A ; Save params 17DD: 8E 3C 6F LDX #$3C6F ; Random object translation 17E0: C6 10 LDB #$10 ; 16 to check 17E2: A6 81 LDA ,X++ ; Get holder 17E4: A1 E4 CMPA ,S ; Is this us? 17E6: 27 08 BEQ $17F0 ; Yes ... 17E8: 5A DECB ; All done? 17E9: 26 F7 BNE $17E2 ; No ... keep looking 17EB: BD 10 1E JSR $101E ; Nothing special happens 17EE: 35 96 PULS A,B,X,PC ; Done 17F0: E6 1F LDB -1,X ; Object number 17F2: D7 52 STB >$52 ; Hold for now 17F4: BD 1A 5A JSR $1A5A ; Get descriptor for object 17F7: A6 02 LDA 2,X ; Flags 17F9: 84 7C ANDA #$7C ; Not pack, not invisible 17FB: A7 02 STA 2,X ; Set flags 17FD: D6 00 LDB >$00 ; Current room 17FF: BD 06 77 JSR $0677 ; Random valid direction 1802: 96 00 LDA >$00 ; Current room 1804: BD 0F 71 JSR $0F71 ; Calculate target room 1807: A7 84 STA ,X ; Object thrown to here 1809: 8E 2D A9 LDX #$2DA9 ; "IN HIS DYING EFFORT THE" 180C: BD 10 66 JSR $1066 ; Print the message 180F: E6 E4 LDB ,S ; Print name ... 1811: BD 18 6D JSR $186D ; ... of the creature 1814: 8E 2D C0 LDX #$2DC0 ; "PULLS THE" 1817: BD 10 66 JSR $1066 ; Print the message 181A: D6 52 LDB >$52 ; Print name of ... 181C: 8D 4F BSR $186D ; ... object 181E: 8E 2D C9 LDX #$2DC9 ; "FROM A BAG AND THROWS IT BEFORE HE DISAPPEARS IN A PUFF OF PURPLE SMOKE." 1821: BD 10 66 JSR $1066 ; Print the message 1824: 20 C8 BRA $17EE ; Done ; Check the list of objects required to kill the creature. If they are all in the backpack, ; kill the creature. ; C=1 if creature killed ; C=0 if failed 1826: 34 36 PSHS Y,X,B,A ; Save params 1828: BD 1A DD JSR $1ADD ; Get list of things for protected item 182B: 24 0C BCC $1839 ; No list 182D: E6 A0 LDB ,Y+ ; Object from list 182F: C1 FF CMPB #$FF ; End of list? 1831: 27 09 BEQ $183C ; Yes ... finish 1833: C4 3F ANDB #$3F ; Make sure it is a valid object 1835: 8D 4E BSR $1885 ; Is it in backpack? 1837: 25 F4 BCS $182D ; Yes ... keep checking 1839: 5F CLRB ; C=0 (failed) 183A: 20 0C BRA $1848 ; Out 183C: E6 E4 LDB ,S ; Object 183E: BD 1A 5A JSR $1A5A ; Find object 1841: E6 02 LDB 2,X ; Set ... 1843: CA 02 ORB #$02 ; ... bit ... 1845: E7 02 STB 2,X ; ... 1 in flags 1847: 53 COMB ; C=1 1848: 35 B6 PULS A,B,X,Y,PC ; Done ;##CommandINV ; Print what we have in our pack. 184A: 8E 2A 9B LDX #$2A9B ; "YOU ARE HOLDING:" 184D: BD 10 66 JSR $1066 ; Print the message 1850: 0F 31 CLR >$31 ; Nothing in pack so far 1852: C6 FF LDB #$FF ; Start with 0 1854: 5C INCB ; Next object number 1855: C1 3F CMPB #$3F ; All done? 1857: 24 08 BCC $1861 ; Yes ... out 1859: 8D 2A BSR $1885 ; Check for word in pack 185B: 24 F7 BCC $1854 ; Not in pack ... skip 185D: 8D 0E BSR $186D ; Print object name 185F: 20 F3 BRA $1854 ; Next object 1861: 96 31 LDA >$31 ; Did we find at least one? 1863: 26 05 BNE $186A ; Yes ... skip "nothing" 1865: 86 93 LDA #$93 ; "NOTHING" 1867: BD 10 54 JSR $1054 ; Print word 186A: 7E 10 90 JMP $1090 ; CR and out ; Print object name 186D: 34 16 PSHS X,B,A ; Save params 186F: C1 3F CMPB #$3F ; Valid object 1871: 23 08 BLS $187B ; Yes ... print it 1873: 8E 2A 7C LDX #$2A7C ; No ... "ERROR" 1876: BD 10 66 JSR $1066 ; Print the message 1879: 20 08 BRA $1883 ; Out ; 187B: 8E 35 08 LDX #$3508 ; Noun-to-word table 187E: A6 85 LDA B,X ; Get word 1880: BD 10 54 JSR $1054 ; Print object name 1883: 35 96 PULS A,B,X,PC ; Done ;##-InPack ; Look for object described by word B in the backpack. ; Return C=0 if not found ; Return C=1 if found 1885: 34 16 PSHS X,B,A ; Sava parameters 1887: 0F 2F CLR >$2F ; Strange ... 1889: 0F 30 CLR >$30 ; ... flagging 188B: 8E 3C F9 LDX #$3CF9 ; Object data 188E: 30 03 LEAX 3,X ; Next object 1890: A6 02 LDA 2,X ; Flags 1892: 2A 0E BPL $18A2 ; Object not in pack ... next word 1894: A6 61 LDA 1,S ; Is this ... 1896: A1 01 CMPA 1,X ; ... our object word? 1898: 26 0A BNE $18A4 ; No ... next word 189A: 0C 31 INC >$31 ; Flag found object (increment if counting) 189C: DC 2F LDD >$2F ; Strange ... 189E: E3 02 ADDD 2,X ; ... way ... 18A0: DD 2F STD >$2F ; ... to flag things 18A2: A6 01 LDA 1,X ; Description 18A4: 81 FF CMPA #$FF ; End of list marker? 18A6: 26 E6 BNE $188E ; No ... keep looking 18A8: DC 2F LDD >$2F ; Did we find the object? 18AA: 27 03 BEQ $18AF ; Yes ... Z=1 18AC: 43 COMA ; C=1... found 18AD: 20 01 BRA $18B0 ; Out 18AF: 4F CLRA ; C=0 ... not found 18B0: 35 96 PULS A,B,X,PC ; Out ; Look for object matching Room=B, Word=A ; C=0 if found ; C=1 if not found 18B2: 8E 3C F9 LDX #$3CF9 ; Object data 18B5: 30 03 LEAX 3,X ; Next object 18B7: E1 84 CMPB ,X ; Room matches B? 18B9: 26 06 BNE $18C1 ; No ... next 18BB: A1 01 CMPA 1,X ; Word matches A? 18BD: 26 02 BNE $18C1 ; No next 18BF: 4F CLRA ; C=0 ... found 18C0: 39 RTS ; Done ; 18C1: 34 02 PSHS A ; Hold A 18C3: A6 01 LDA 1,X ; End of ... 18C5: 81 FF CMPA #$FF ; ... list? 18C7: 35 02 PULS A ; Restore A 18C9: 26 EA BNE $18B5 ; No ... keep looking 18CB: 43 COMA ; C=1 ... not found 18CC: 39 RTS ; Done ; Convert noun to object number 18CD: 34 10 PSHS X ; Save params 18CF: 8E 35 08 LDX #$3508 ; Noun-to-object map 18D2: 86 FF LDA #$FF ; First is 0 18D4: 4C INCA ; Next object number 18D5: E6 80 LDB ,X+ ; Get noun number 18D7: 27 09 BEQ $18E2 ; End of map ... error and out 18D9: D1 2B CMPB >$2B ; Is this our word? 18DB: 26 F7 BNE $18D4 ; No keep looking 18DD: 97 07 STA >$07 ; Yes ... hold object number 18DF: 53 COMB ; Z=0 18E0: 35 90 PULS X,PC ; Done 18E2: 5F CLRB ; Z=1 18E3: 20 FB BRA $18E0 ; Out ; Print "I DO NOT SEE ANY "+valid noun word. 18E5: 34 10 PSHS X ; Save params 18E7: 8E 2A 49 LDX #$2A49 ; "I DO NOT SEE ANY" 18EA: BD 10 66 JSR $1066 ; Print the message 18ED: 96 2B LDA >$2B ; Nound word 18EF: BD 10 54 JSR $1054 ; Print word 18F2: BD 10 90 JSR $1090 ; Print CR 18F5: 35 90 PULS X,PC ; Out ;##CommandGETTAKEGRAB ; Get and Take and Grab. If the object is protected, you must have the right combination ; of items. If the object+packWeight is too bulky or too heavy then you can't carry it. 18F7: 34 10 PSHS X ; Save params 18F9: 96 2B LDA >$2B ; Nound word 18FB: 81 FF CMPA #$FF ; If there is a noun ... 18FD: 26 05 BNE $1904 ; ... go handle it 18FF: BD 10 99 JSR $1099 ; Command+what ... "GET WHAT?" 1902: 20 7C BRA $1980 ; Out 1904: 8D C7 BSR $18CD ; Convert noun to object number 1906: 24 7F BCC $1987 ; Invalid word ... DON'T BE REDICULOUS 1908: D6 00 LDB >$00 ; Current room 190A: 8D A6 BSR $18B2 ; Look for object B=room, A=word 190C: 24 04 BCC $1912 ; Found it ... move on ; 190E: 8D D5 BSR $18E5 ; "I DO NOT SEE ANY "+word 1910: 20 6E BRA $1980 ; Done ; 1912: A6 02 LDA 2,X ; Flags 1914: 2B 71 BMI $1987 ; Already got it ... "DON'T BE REDICULOUS" and out 1916: 85 40 BITA #$40 1918: 26 6D BNE $1987 ; Print "DON'T BE REDICULOUS" and out 191A: 85 01 BITA #$01 191C: 26 F0 BNE $190E ; Print "I DO NOT SEE ANY "+word and out 191E: 85 02 BITA #$02 1920: 26 EC BNE $190E ; Print "I DO NOT SEE ANY "+word and out 1922: 85 10 BITA #$10 ; Protected? 1924: 27 21 BEQ $1947 ; No ... we can do it 1926: 96 07 LDA >$07 ; Object number 1928: BD 1A DD JSR $1ADD ; Get list of required objects 192B: 24 1A BCC $1947 ; There are none ... get it 192D: E6 A0 LDB ,Y+ ; Next required object 192F: C1 FF CMPB #$FF ; End of list? 1931: 27 14 BEQ $1947 ; Yes ... we can do it 1933: C4 3F ANDB #$3F ; Mask off for safety 1935: BD 18 85 JSR $1885 ; Object in pack? 1938: 25 F3 BCS $192D ; Yes ... check them all 193A: 8E 20 74 LDX #$2074 ; Protected messages 193D: D6 07 LDB >$07 ; Object number 193F: BD 0E 52 JSR $0E52 ; Get message for protection 1942: BD 10 2F JSR $102F ; Print protection phrase 1945: 20 39 BRA $1980 ; Out 1947: 8D 43 BSR $198C ; Get object weight/buld 1949: 96 04 LDA >$04 ; Current weight 194B: AB A4 ADDA ,Y ; Add object weight 194D: 25 33 BCS $1982 ; Over 255 is "TOO HEAVY" 194F: 91 05 CMPA >$05 ; Physical condition 1951: 22 2F BHI $1982 ; Not strong enough to carry it 1953: D6 06 LDB >$06 ; Bulk 1955: EB 21 ADDB 1,Y ; Add object bulk 1957: 25 04 BCS $195D ; Over 255 is "TOO BULKY" 1959: D1 05 CMPB >$05 ; Physical condition 195B: 23 05 BLS $1962 ; OK ; 195D: 8E 2A 59 LDX #$2A59 ; "IT'S TOO BULKY." 1960: 20 1B BRA $197D ; Print message and out ; 1962: 97 2F STA >$2F ; Hold weight 1964: A6 02 LDA 2,X ; Flags 1966: 85 40 BITA #$40 ; Spells, creatures, protected things? 1968: 26 1D BNE $1987 ; "DON'T BE REDICULOUS." 196A: 85 10 BITA #$10 ; Protected? 196C: 27 02 BEQ $1970 ; No ... skip 196E: 84 EF ANDA #$EF ; Turn off protection 1970: 8A 80 ORA #$80 ; Now in pack 1972: A7 02 STA 2,X ; New flags 1974: 96 2F LDA >$2F ; New weight 1976: 97 04 STA >$04 ; Store new weight 1978: D7 06 STB >$06 ; Store new bulk 197A: 8E 2A 79 LDX #$2A79 ; "OK" 197D: BD 10 66 JSR $1066 ; Print the message 1980: 35 90 PULS X,PC ; Done 1982: 8E 2A 69 LDX #$2A69 ; "IT'S TOO HEAVY." 1985: 20 F6 BRA $197D ; Print message and out 1987: 8E 2A C0 LDX #$2AC0 ; "DON'T BE RIDICULOUS." 198A: 20 F1 BRA $197D ; Print message and out ; Y points to weight/bulk for object number in $07 198C: 34 06 PSHS B,A ; Save params 198E: 96 07 LDA >$07 ; Object number 1990: C6 02 LDB #$02 ; Two byes ... 1992: 3D MUL ; ... per entry 1993: 10 8E 35 48 LDY #$3548 ; Weight/bulk 1997: 31 AB LEAY D,Y ; Point Y 1999: 35 86 PULS A,B,PC ; Out ; Find jump-info entry for current room. 199B: CE 3B DC LDU #$3BDC ; Jump info table 199E: 33 45 LEAU 5,U ; Next entry 19A0: A6 C4 LDA ,U ; Get "from" room 19A2: 27 04 BEQ $19A8 ; End of list ... out 19A4: 91 00 CMPA >$00 ; Matches our room? 19A6: 26 F6 BNE $199E ; No ... next entry 19A8: 39 RTS ; Out 19A9: 7E 10 99 JMP $1099 ; Command + " WHAT?" ;##CommandJUMP ; There is a table of jump info that describes the jumps from various room and ; where they go. Each jump has a dexterity associated with it. If your phys-weight ; is less than value you fail the jump. If your phys-bulk is less than value you ; leave the heaviest object behind as you jump. Each jump describes what to do ; if the jump fails. Could be a fixed damage. Could be a fumble. Could be death. 19AC: BD 0D A6 JSR $0DA6 ; Make sure we can see 19AF: 24 04 BCC $19B5 ; Yes ... skip the hurt 19B1: 86 20 LDA #$20 ; Jumping in the dark ... 19B3: 8D 7A BSR $1A2F ; ... take 32 damage 19B5: 8D E4 BSR $199B ; Look for entry in table 19B7: 4D TSTA ; Is there one? 19B8: 27 EF BEQ $19A9 ; No ... "JUMP WHAT?" and out 19BA: A6 44 LDA 4,U ; Thing we are jumping 19BC: 91 2B CMPA >$2B ; Did we ask to jump it? 19BE: 26 E9 BNE $19A9 ; No ... "JUMP WHAT?" and out 19C0: 96 05 LDA >$05 ; Physical condition ... 19C2: 90 04 SUBA >$04 ; ... minus weight of pack 19C4: 25 17 BCS $19DD ; Phys cond less ... bad jump 19C6: A1 41 CMPA 1,U ; Required extra to make jump 19C8: 23 13 BLS $19DD ; Not enough ... bad jump 19CA: 96 05 LDA >$05 ; Physical condition ... 19CC: 90 06 SUBA >$06 ; ... minus bulk of pack 19CE: 25 26 BCS $19F6 ; Phys cond less ... jump but drop heaviest 19D0: A1 41 CMPA 1,U ; Required extra to make jump 19D2: 23 22 BLS $19F6 ; Not enough ... jump but drop heaviest 19D4: A6 43 LDA 3,U ; Get target room 19D6: 97 01 STA >$01 ; Set last room ... 19D8: 97 00 STA >$00 ; ... and current room 19DA: 7E 0E 27 JMP $0E27 ; Print room description and out ; Failed jump 19DD: A6 42 LDA 2,U ; Failed jump flags 19DF: 26 09 BNE $19EA ; Not death ; ; Fall 19E1: 8E 33 B0 LDX #$33B0 ; "YOUR JUMPING ABILITY IS NOT AS GOOD AS IT ONCE WAS - YOU HAVE FALLEN AND DIED." 19E4: BD 10 66 JSR $1066 ; Print the message 19E7: 7E 0D 5C JMP $0D5C ; UNCLE ... new game ; 19EA: 2B 0A BMI $19F6 ; Upper bit ... fumble (make jump but drop heaviest) ; ; Stumble ... take damage and go nowhere 19EC: 8E 2F 13 LDX #$2F13 ; "YOU HAVE STUMBLED AND FALLEN." 19EF: BD 10 66 JSR $1066 ; Print the message 19F2: 8D 3B BSR $1A2F ; Value is damage ... take damage 19F4: 20 E4 BRA $19DA ; Print room description (stay in room) ; Fumble ... make jump but drop heaviest 19F6: 8D 06 BSR $19FE ; Drop heaviest object 19F8: 86 06 LDA #$06 ; Take ... 19FA: 8D 33 BSR $1A2F ; ... 6 damage 19FC: 20 D6 BRA $19D4 ; Land in target room ; Drop the heaviest object in pack. If it is an incidental object then ; there is a 1/8th chance of it getting lost forever. 19FE: 34 16 PSHS X,B,A ; Save params 1A00: 8D 6C BSR $1A6E ; Find heaviest and bulkiest in pack 1A02: 5D TSTB ; Pack empty? 1A03: 27 23 BEQ $1A28 ; No ... out 1A05: 1F 89 TFR A,B ; Weightiest object 1A07: C1 0C CMPB #$0C ; Is it the lamp? 1A09: 26 02 BNE $1A0D ; No 1A0B: 0C 14 INC >$14 ; Flag lamp has been torn from player 1A0D: 96 00 LDA >$00 ; Current room 1A0F: BD 12 C6 JSR $12C6 ; Adjust pack for dropping object 1A12: BD 10 AE JSR $10AE ; Drop the object 1A15: 8D 43 BSR $1A5A ; Get the object data 1A17: A6 02 LDA 2,X ; Flags 1A19: 85 20 BITA #$20 ; Is this object required 1A1B: 27 0B BEQ $1A28 ; Yes ... can't drop it 1A1D: BD 06 61 JSR $0661 ; Random number 1A20: C1 20 CMPB #$20 ; 7/8 of time ... 1A22: 22 04 BHI $1A28 ; ... nothing happens 1A24: 8A 01 ORA #$01 ; Remove object ... 1A26: A7 02 STA 2,X ; ... from game 1A28: 35 96 PULS A,B,X,PC ; Done ; Take random damage 0 to B and drop heaviest object 1A2A: BD 06 90 JSR $0690 ; Random number 0 to B 1A2D: 1F 98 TFR B,A ; Damage to A ; ; Take damage and drop heaviest object 1A2F: 34 02 PSHS A ; Hold adjustment 1A31: 96 46 LDA >$46 ; Temporarily invulnerable (AKHIROM)? 1A33: 26 17 BNE $1A4C ; Yes ... no damage 1A35: 96 05 LDA >$05 ; Current physical condition 1A37: A0 E4 SUBA ,S ; Subtract adjustment 1A39: 24 09 BCC $1A44 ; Still OK ... continue 1A3B: 8E 2F 30 LDX #$2F30 ; "YOU HAVE DIED FROM EXHAUSTION AND WOUNDS." 1A3E: BD 10 66 JSR $1066 ; Print the message 1A41: 7E 0D 5C JMP $0D5C ; Command "UNCLE" ... end of game 1A44: 97 05 STA >$05 ; New physical condition 1A46: 91 04 CMPA >$04 ; Compare to weight of pack 1A48: 24 02 BCC $1A4C ; Still OK 1A4A: 8D B2 BSR $19FE ; Drop heaviest object in pack 1A4C: 35 82 PULS A,PC ; Done ; Add to physical condition (max out at 255) 1A4E: 34 02 PSHS A ; Save params 1A50: 9B 05 ADDA >$05 ; Increase the physical condition 1A52: 24 02 BCC $1A56 ; OK to use 1A54: 86 FF LDA #$FF ; Max out at 255 1A56: 97 05 STA >$05 ; New physical condition 1A58: 35 82 PULS A,PC ; Done ;##-GetObject ; Get 3-byte descriptor for object B 1A5A: 34 06 PSHS B,A ; Save params 1A5C: 5D TSTB ; Object ... 1A5D: 27 0D BEQ $1A6C ; ... invalid ... out 1A5F: C1 3F CMPB #$3F ; Object ... 1A61: 22 09 BHI $1A6C ; ... invalid ... out 1A63: 5A DECB ; Object are base 1 1A64: 86 03 LDA #$03 ; 3 bytes per ... 1A66: 3D MUL ; ... object 1A67: 8E 3C FC LDX #$3CFC ; Offset into ... 1A6A: 30 8B LEAX D,X ; ... object table 1A6C: 35 86 PULS A,B,PC ; Out ;Find heaviest (A) and bulkiest (B) objects in pack. 1A6E: 34 30 PSHS Y,X ; Save params 1A70: 32 7C LEAS -4,S ; Reserve 4 params 1A72: 6F E4 CLR ,S ; Current heaviest object 1A74: 6F 61 CLR 1,S ; Current bulkiest object 1A76: 6F 62 CLR 2,S ; Heaviest object 1A78: 6F 63 CLR 3,S ; Bulkiest object 1A7A: 5F CLRB ; Start with 1 1A7B: 5C INCB ; Next object 1A7C: C1 3F CMPB #$3F ; All done? 1A7E: 24 20 BCC $1AA0 ; Yes ... return what we found 1A80: BD 18 85 JSR $1885 ; Is object in pack? 1A83: 24 F6 BCC $1A7B ; No ... next object 1A85: D7 07 STB >$07 ; Param 1A87: BD 19 8C JSR $198C ; Get object weight/bulk 1A8A: A6 A4 LDA ,Y ; Weight 1A8C: A1 E4 CMPA ,S ; Compare to current highest 1A8E: 23 04 BLS $1A94 ; Lighter ... move on 1A90: E7 62 STB 2,S ; New heaviest object 1A92: A7 E4 STA ,S ; New heaviest weight 1A94: A6 21 LDA 1,Y ; Get bulk 1A96: A1 61 CMPA 1,S ; Compare to current bulkiest 1A98: 23 E1 BLS $1A7B ; Not as bulkiy ... move on 1A9A: E7 63 STB 3,S ; New bulkiest objet 1A9C: A7 61 STA 1,S ; New bulkiest bulk 1A9E: 20 DB BRA $1A7B ; Continue ; 1AA0: EC 62 LDD 2,S ; A=heaviest, B=bulkiest 1AA2: 32 64 LEAS 4,S ; Remove params from stack 1AA4: 35 B0 PULS X,Y,PC ; Out ;##CommandLAMP ; Turn lamp on or off. 1AA6: B6 3D 1F LDA $3D1F ; Lamp in pack? 1AA9: 2B 0E BMI $1AB9 ; Yes ... we can fiddle with it 1AAB: 96 00 LDA >$00 ; Current room 1AAD: B1 3D 1D CMPA $3D1D ; Lamp in this room? 1AB0: 27 07 BEQ $1AB9 ; yes ... we can fiddle with it 1AB2: 86 A6 LDA #$A6 ; "LAMP" 1AB4: 97 2B STA >$2B ; To noun 1AB6: 7E 18 E5 JMP $18E5 ; "I DON'T SEE ANY LAMP HERE." and out 1AB9: 96 2B LDA >$2B ; Input token 1ABB: 81 8F CMPA #$8F ; "OFF" 1ABD: 27 0A BEQ $1AC9 ; Yes ... OFF 1ABF: 81 34 CMPA #$34 ; "ON" 1AC1: 27 0C BEQ $1ACF ; Yes ... ON 1AC3: 8E 2A 81 LDX #$2A81 ; "I DON'T UNDERSTAND THAT." 1AC6: 7E 10 66 JMP $1066 ; Print the message and out ; Lamp off 1AC9: 0F 0A CLR >$0A ; Lamp off 1ACB: C6 01 LDB #$01 ; "THE LAMP IS OFF" 1ACD: 20 0B BRA $1ADA ; Print and out ; Lamp on 1ACF: 9E 38 LDX >$38 ; Oil in lamp 1AD1: 27 05 BEQ $1AD8 ; No oil left ... error and out 1AD3: 97 0A STA >$0A ; Non-zero value 1AD5: C6 02 LDB #$02 ; "THE LAMP IS ON" 1AD7: 8C C6 06 CMPX #$C606 ; "THERE IS NO OIL IN THE LAMP" 1ADA: 7E 10 48 JMP $1048 ; Print and out ; Get list of things needed for protected item 1ADD: 34 02 PSHS A ; Save params 1ADF: 10 8E 3F B8 LDY #$3FB8 ; Built in memory 1AE3: A6 A0 LDA ,Y+ ; Get item number 1AE5: A1 E4 CMPA ,S ; Is this our list? 1AE7: 27 0F BEQ $1AF8 ; Yes. C=1 ... found 1AE9: A6 A0 LDA ,Y+ ; Skip .... 1AEB: 81 FF CMPA #$FF ; ... to ... 1AED: 26 FA BNE $1AE9 ; ... end 1AEF: A6 A4 LDA ,Y ; End of all ... 1AF1: 81 FF CMPA #$FF ; ... lists? 1AF3: 26 EE BNE $1AE3 ; No ... keep looking 1AF5: 4F CLRA ; C=0 ... not found 1AF6: 35 82 PULS A,PC ; Done 1AF8: 43 COMA ; C=1 ... found 1AF9: 20 FB BRA $1AF6 ; Done ;##BetweenRoomA ; If phys minus weight is less than random 64-191 then a climb-up fails. ;##BetweenRoomC ; If phys minus weight is less than 192 then a climb-up fails. ;##BetweenRoomD ; If phys minus weight is less than 64 then a climb-up fails. ;##BetweenRoomE ; If phys minus weight is less than 128 then a climb-up fails. 1AFB: BD 06 61 JSR $0661 ; Random number 1AFE: C4 7F ANDB #$7F ; 0 - 7F 1B00: CB 40 ADDB #$40 ; 40 - BF ; 1B02: 8C C6 C0 CMPX #$C6C0 ; LDB #$C0 Handler C 1B05: 8C C6 40 CMPX #$C640 ; LDB #$40 Handler D 1B08: 8C C6 80 CMPX #$C680 ; LDB #$80 Handler E 1B0B: D7 2E STB >$2E ; Hold handler value 1B0D: 96 02 LDA >$02 ; Direction bit pattern 1B0F: 81 20 CMPA #$20 ; Up into this room? 1B11: 26 0C BNE $1B1F ; No ... do nothing 1B13: 96 05 LDA >$05 ; Compare ... 1B15: 90 04 SUBA >$04 ; ... phys - weight ;##CodeBug4 ; I think if we are overburdeoned it should jump to 1B1D and fail the move. 1B17: 25 06 BCS $1B1F ; Overburdoned ... nothing happens 1B19: 91 2E CMPA >$2E ; Compare excess phys to value 1B1B: 24 02 BCC $1B1F ; Excess is greater than value ... do nothing 1B1D: 0C 0C INC >$0C ; Flag for main handler to skip moving us 1B1F: 39 RTS ; Done ;##BetweenRoomB ; Most of time this moves us to room 10 ... the start room. But there is a 20% chance that ; it moves us to a random room 0-F. Either way we tell the game loop to skip moving us 1B20: BD 06 61 JSR $0661 ; Random number 1B23: C1 D0 CMPB #$D0 ; Compare to 208 ... less than? 1B25: 25 05 BCS $1B2C ; Most likely so ... move to room 10 (start) 1B27: C4 0F ANDB #$0F ; Random room 0-15 1B29: 1F 98 TFR B,A ; Align params 1B2B: 8C 86 0A CMPX #$860A ; LDA #$0A Handler 1B2E: 97 00 STA >$00 ; Current room ... 1B30: 97 01 STA >$01 ; ... and last room 1B32: 20 E9 BRA $1B1D ; Flag for skipping moving us ;##BetweenRoomF ; If the lamp is in our pack this moves us to a totally random room. 1B34: C6 0C LDB #$0C ; Is lamp ... 1B36: BD 18 85 JSR $1885 ; ... in pack? 1B39: 24 07 BCC $1B42 ; No ... out 1B3B: BD 06 61 JSR $0661 ; Random number 1B3E: D7 00 STB >$00 ; Current room ... 1B40: D7 01 STB >$01 ; ... and last room 1B42: 39 RTS ; Done ;##BetweenRoomH ; There is a 50/50 chance of going to a random room in the maze on a random floor. We flag the main ; routine to skip movement. 1B43: BD 06 61 JSR $0661 ; Random number 1B46: C4 1F ANDB #$1F ; Greatly increase our odds of not going to the maze 1B48: 20 03 BRA $1B4D ; Go to the maze if the odds are right ;##BetweenRoomI ; There is a 35 in 36 chance of moving to a random room in the maze on a random floor. ; We flag the main routine to skip movement. 1B4A: BD 06 61 JSR $0661 ; Random number 1B4D: C1 0B CMPB #$0B ; Slim chance ... 1B4F: 23 0D BLS $1B5E ; ... of doing nothing 1B51: BD 06 61 JSR $0661 ; Random room 1B54: C4 CF ANDB #$CF ; Limt to 1st 16 rooms of any floor 1B56: CA 30 ORB #$30 ; Make it random room in maze 1B58: D7 00 STB >$00 ; Current room 1B5A: D7 01 STB >$01 ; Last room 1B5C: 0C 0C INC >$0C ; Flag main to skip movement 1B5E: 39 RTS ; Out ;##BetweenRoomG ; There is a 50/50 chance of moving to a random room in the first half of the last two floors. 1B5F: BD 06 61 JSR $0661 ; Random number 1B62: 2B FA BMI $1B5E ; Half the time do nothing 1B64: BD 06 61 JSR $0661 ; Random floor 1B67: C4 DF ANDB #$DF ; 1st half of whichever floor 1B69: CA C0 ORB #$C0 ; Floor 3 and 4 1B6B: 20 EB BRA $1B58 ; Move and flag skip movement ;##EnteringRoomAction_a ; _a Cave in to next floor (32 damage) if pack heavier than 192. If so move a and b to random rooms. ;##EnteringRoomAction_b ; _b Cave in to next floor (32 damage) if pack heavier than 128. If so move a and b to random rooms. ;##EnteringRoomAction_c ; _c Cave in to next floor (32 damage) if pack heavier than 95. If so move a and b to random rooms. 1B6D: 86 C0 LDA #$C0 ; Weight 192 1B6F: 8C 86 80 CMPX #$8680 ; 128 1B72: 8C 86 5F CMPX #$865F ; 95 1B75: 91 04 CMPA >$04 ; Pack weighs more? 1B77: 23 01 BLS $1B7A ; Yes ... fall to next level 1B79: 39 RTS ; No ... done ; 1B7A: 96 00 LDA >$00 ; Current room 1B7C: 8B 40 ADDA #$40 ; Drop a level 1B7E: 97 00 STA >$00 ; Current room ... 1B80: 97 01 STA >$01 ; ... and last room 1B82: BD 06 61 JSR $0661 ; Random 1B85: F7 3C 8F STB $3C8F ; Move first handler to another room 1B88: BD 06 61 JSR $0661 ; Random 1B8B: F7 3C 92 STB $3C92 ; Move second handler to another room 1B8E: 86 20 LDA #$20 ; Caved-in floor ... 1B90: BD 1A 2F JSR $1A2F ; ... takes 32 from physical condition 1B93: 8E 2D 68 LDX #$2D68 ; "THE FLOOR UNDER YOU HAS JUST CAVED IN!!" 1B96: BD 10 66 JSR $1066 ; Print the message 1B99: 7E 19 FE JMP $19FE ; Drop heaviest object and out ;##EnteringRoomAction_d ; _d If we have VETAR make the pile-of-rocks appear in this room (it stays here). 1B9C: C6 37 LDB #$37 ; Do we have ... 1B9E: BD 18 85 JSR $1885 ; ... VETAR? 1BA1: 24 55 BCC $1BF8 ; No ... ignore 1BA3: 96 11 LDA >$11 ; Have we already exposed the pile of rocks? 1BA5: 26 51 BNE $1BF8 ; Yes ... ignore 1BA7: 0C 10 INC >$10 ; Mark pile of rocks moved to us 1BA9: 96 00 LDA >$00 ; Current room 1BAB: 97 37 STA >$37 ; Room of "pile of rocks" 1BAD: 8E 2F 59 LDX #$2F59 ; "A DULL, EERIE GLOW IS EMANATING FROM BEHIND A PILE OF ROCKS." 1BB0: 7E 10 66 JMP $1066 ; Print the message ;##EnteringRoomAction_e ; _e Play sound effect (same as bb). If we play the flute and have the parchment then the LEDGE appears here. 1BB3: 4F CLRA ; Something int the code taken out? This has no effect in sound routine. ;##EnteringRoomAction_z ; _z Room with music (init to room 16 to 39). The sprite can't move objects here. 1BB4: 7E 0B 3E JMP $0B3E ; Sound effect ;##EnteringRoomAction_f ; _f Powerful gust blows lamp out of grasp. ; No lamp in pack ... do nothing. Otherwise: ; 1/2 the time do nothing. The other half: ; - Take 30 from physical condition ; - Move the lamp to a neighboring room ; - Spill 256 seconds of oil from the lamp ; - Turn the lamp off ; - Enable VETAR until next move ; - 1/4th of the time move the handler to a room on level 0,1, or 2 1BB7: C6 0C LDB #$0C ; Is lamp ... 1BB9: BD 18 85 JSR $1885 ; ... in pack? 1BBC: 24 3A BCC $1BF8 ; No ... out 1BBE: BD 06 61 JSR $0661 ; Random 1BC1: 2B 35 BMI $1BF8 ; Do nothing 1/2 the time 1BC3: C6 1E LDB #$1E ; Take 30 from ... 1BC5: BD 1A 2A JSR $1A2A ; ... physical condition 1BC8: D6 00 LDB >$00 ; Current room 1BCA: BD 06 77 JSR $0677 ; Get a valid direction out of this room 1BCD: 96 00 LDA >$00 ; Current room 1BCF: BD 0F 71 JSR $0F71 ; Get target room in random direction 1BD2: C6 0C LDB #$0C ; Drop ... 1BD4: BD 12 C6 JSR $12C6 ; ... the lamp in target room 1BD7: 8E 2F F1 LDX #$2FF1 ; "A POWERFUL GUST OF WIND HAS BLOWN THE LAMP OUT OF YOUR GRASP." 1BDA: 0C 14 INC >$14 ; VETAR will work until next move 1BDC: BD 10 66 JSR $1066 ; Print the message 1BDF: BD 06 61 JSR $0661 ; Random 1BE2: C1 3F CMPB #$3F ; 1/4th of the time ... 1BE4: 22 05 BHI $1BEB ; ... room stays here 1BE6: CB 40 ADDB #$40 ; New room is NOT on bottom floor 1BE8: F7 3C 9E STB $3C9E ; New location for this handler 1BEB: DC 38 LDD >$38 ; Oil level 1BED: 83 01 00 SUBD #$0100 ; This spills 256 seconds (4.3 minutes) from the lamp 1BF0: 24 02 BCC $1BF4 ; Didn't underflow 1BF2: 4F CLRA ; All ... 1BF3: 5F CLRB ; ... oil ... 1BF4: DD 38 STD >$38 ; ... from lamp 1BF6: 0F 0A CLR >$0A ; Lamp off 1BF8: 39 RTS ; Done ;##EnteringRoomAction_g ; _g Hydra is here. If it is free it pushes us back to last room. 1BF9: 96 0E LDA >$0E ; Hydra status ... free? 1BFB: 26 0E BNE $1C0B ; No ... see if it is dead 1BFD: 0C 0F INC >$0F ; HYDRA is now in current room 1BFF: 8E 30 2F LDX #$302F ; "A NINE-HEADED HYDRA BLOCKS YOUR PASSAGE." 1C02: 0C 0D INC >$0D ; ? nobody ever uses this ? 1C04: 96 01 LDA >$01 ; Move back ... 1C06: 97 00 STA >$00 ; ... to last room 1C08: 7E 10 66 JMP $1066 ; Print the message 1C0B: 81 AA CMPA #$AA ; Is HYDRA tied up? 1C0D: 26 E9 BNE $1BF8 ; No ... must be dead ... out 1C0F: 8E 32 0A LDX #$320A ; "A VERY MAD HYDRA IS TIED UP HERE." 1C12: 7E 10 66 JMP $1066 ; Print the message ;##EnteringRoomAction_h ; _h If we know VETAR or have the SCEPTER, nothing happens. Otherwise we do command RUN. 1C15: C6 37 LDB #$37 ; Do we know ... 1C17: BD 18 85 JSR $1885 ; ... VETAR? 1C1A: 25 DC BCS $1BF8 ; Yes ... out 1C1C: C6 0B LDB #$0B ; Do we have ... 1C1E: BD 18 85 JSR $1885 ; ... the scepter? 1C21: 25 D5 BCS $1BF8 ; Yes ... out 1C23: 8E 30 E7 LDX #$30E7 ; "A VERY POWERFUL MAGIC FORCE STRIKES YOU AND DRIVES YOU BACK." 1C26: BD 10 66 JSR $1066 ; Print the message 1C29: 7E 14 D4 JMP $14D4 ; Command RUN ;##EnteringRoomAction_i ; _i Do nothing if we have VETAR. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_j ; _j Do nothing if we have MITRA. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_k ; _k Do nothing if we have OKKAN. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_l ; _l Do nothing if we have AKHIROM. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_m ; _m Do nothing if we have NERGAL. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_n ; _n Do nothing if we have BELROG. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_o ; _o Do nothing if we have CROM. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ;##EnteringRoomAction_p ; _p Do nothing if we have ISHTAR. If random number > phys condition or 1/2 the time we RUN and take 5 damage. ; If we have the right spell, this does nothing. If a random number is greater than ; physical condition, we get pushed back. Otherwise we get pushed back 1/2 the time. ; Pushing backs takes us to last room and subtracts 5 from physical condition. 1C2C: C6 37 LDB #$37 ; VETAR 1C2E: 8C C6 38 CMPX #$C638 ; MITRA 1C31: 8C C6 39 CMPX #$C639 ; OKKAN 1C34: 8C C6 3A CMPX #$C63A ; AKHIROM 1C37: 8C C6 3B CMPX #$C63B ; NERGAL 1C3A: 8C C6 3C CMPX #$C63C ; BELROG 1C3D: 8C C6 3D CMPX #$C63D ; CROM 1C40: 8C C6 3E CMPX #$C63E ; ISHTAR 1C43: BD 18 85 JSR $1885 ; Do we know the spell? 1C46: 25 31 BCS $1C79 ; Yes ... nothing happens 1C48: BD 06 61 JSR $0661 ; Random number 1C4B: D0 04 SUBB >$04 ; Random number greater than physical condition 1C4D: 25 04 BCS $1C53 ; Yes ... push back 1C4F: C1 80 CMPB #$80 ; 1/2 the time ... 1C51: 24 26 BCC $1C79 ; ... do nothing 1C53: 96 01 LDA >$01 ; Last room 1C55: 91 00 CMPA >$00 ; Moved back to last room? 1C57: 27 20 BEQ $1C79 ; Yes ... that's OK 1C59: 8E 30 58 LDX #$3058 ; "A MAGIC SPELL HAS PUSHED YOU BACK OUT OF THIS ROOM." 1C5C: BD 10 66 JSR $1066 ; Print the message 1C5F: 0C 0D INC >$0D ; ? Nobody ever checks this ? 1C61: 97 00 STA >$00 ; Back to last room 1C63: C6 05 LDB #$05 ; Take ... 1C65: 7E 1A 2A JMP $1A2A ; ... damage of 5 ;##EnteringRoomAction_q ; _q Start the poison clock (we can't stay here long). 1/3 of the time we give the clock an extra tick. 1C68: 8E 31 24 LDX #$3124 ; "A MYSTERIOUS FOG BEGINS RISING FROM THE FLOOR!" 1C6B: BD 10 66 JSR $1066 ; Print the message 1C6E: 0C 45 INC >$45 ; Start poison time count 1C70: BD 06 61 JSR $0661 ; Random number 1C73: C1 55 CMPB #$55 ; 2/3 of the time ... 1C75: 24 02 BCC $1C79 ; ... nothing happens 1C77: 0C 32 INC >$32 ; 1/3 of the time give it a double increment 1C79: 39 RTS ; Out ;##EnteringRoomAction_r ; _r When we enter this room 3 times the treasure is released. 1C7A: 96 15 LDA >$15 ; Has treasure "$0B" been released? 1C7C: 26 FB BNE $1C79 ; Yes ... ignore 1C7E: 0C 47 INC >$47 ; Increment count entering this room 1C80: 96 47 LDA >$47 ; Have we been here ... 1C82: 81 03 CMPA #$03 ; ... three times now? 1C84: 25 F3 BCS $1C79 ; No ... out 1C86: 0C 15 INC >$15 ; Flag treaure released 1C88: 86 0B LDA #$0B ; Drop ... 1C8A: 7E 0E 80 JMP $0E80 ; .... treasure "$0B" ;##EnteringRoomAction_s ; _s If we have the lamp and it is off then the room drops its treasure. ; If the lamp is on we see the walls are a strange color. 1C8D: C6 0C LDB #$0C ; Is lamp ... 1C8F: BD 18 85 JSR $1885 ; ... in pack? 1C92: 24 6B BCC $1CFF ; No ... out 1C94: 96 0A LDA >$0A ; Lamp status 1C96: 26 0B BNE $1CA3 ; Lamp is on ... can't see the glow 1C98: 8E 32 2C LDX #$322C ; "AN EERIE PHOSPHORESCENT GLOW FILLS THE ENTIRE ROOM!" 1C9B: BD 10 66 JSR $1066 ; Print the message 1C9E: 86 09 LDA #$09 ; Drop treasure held by ... 1CA0: 7E 0E 80 JMP $0E80 ; ... eerie phosphorescent glow ; 1CA3: 8E 33 7F LDX #$337F ; "THE WALLS OF THIS ROOM ARE A VERY STRANGE COLOR!" 1CA6: 7E 10 66 JMP $1066 ; Print the message ;##EnteringRoomAction_t ; _t If we are holding the packrat's trigger treasure (randomized at start) then the ; packrat drops his treasure. If the packrat holds his own trigger then he ; drops it immediately. 1CA9: 86 0A LDA #$0A ; Get object ... 1CAB: BD 0E 6A JSR $0E6A ; ... held by packrat 1CAE: D1 2C CMPB >$2C ; Is its treasure the trigger? 1CB0: 27 0D BEQ $1CBF ; Yes ... go drop treasure 1CB2: D6 2C LDB >$2C ; Is trigger object ... 1CB4: BD 18 85 JSR $1885 ; ... in backpack? 1CB7: 25 06 BCS $1CBF ; Yes ... go drop treasure 1CB9: 8E 33 1A LDX #$331A ; "A PACKRAT SCURRIES INTO A SMALL HOLE." 1CBC: 7E 10 66 JMP $1066 ; Print the message ; 1CBF: 86 0A LDA #$0A ; Drop treasure ... 1CC1: BD 0E 80 JSR $0E80 ; ... held by rat 1CC4: 24 39 BCC $1CFF ; Nothing held ... out 1CC6: 8E 33 3F LDX #$333F ; "THANK THE PACKRAT FOR THIS TREASURE!" 1CC9: 7E 10 66 JMP $1066 ; Print the message ;##EnteringRoomAction_u ; _u If we can see you instantly get the treasure. 1CCC: BD 0D 8B JSR $0D8B ; Can we see? 1CCF: 24 2E BCC $1CFF ; No move on 1CD1: 86 03 LDA #$03 ; Drop the ... 1CD3: 7E 0E 80 JMP $0E80 ; ... treasure ;##EnteringRoomAction_33 ; _33 If we can see you instantly get the treasure. 1CD6: BD 0D 8B JSR $0D8B ; Can we see? 1CD9: 24 24 BCC $1CFF ; No move on 1CDB: 86 04 LDA #$04 ; Drop the ... 1CDD: 7E 0E 80 JMP $0E80 ; ... treasure ;##EnteringRoomAction_32 ; _32 If we can't see we take 30 damage. 1CE0: BD 0D 8B JSR $0D8B ; Can we see? 1CE3: 25 1A BCS $1CFF ; Yes ... out 1CE5: 8E 2F 13 LDX #$2F13 ; "YOU HAVE STUMBLED AND FALLEN." 1CE8: BD 10 66 JSR $1066 ; Print the message 1CEB: C6 1E LDB #$1E ; Take damage ... 1CED: 7E 1A 2A JMP $1A2A ; ... of 30 ;##EnteringRoomAction_v ; _v Print POOL OF OIL if the pool has oil in it. ; There are a limited number of refills (number chosen at init) and ; the oil does not appear until we know ISHTAR. 1CF0: 8D 06 BSR $1CF8 ; Get number of times left to refill lamp 1CF2: 27 0B BEQ $1CFF ; None ... out 1CF4: C6 10 LDB #$10 ; Print ... 1CF6: 20 2C BRA $1D24 ; ... POOL OF OIL ; 1CF8: F6 3B E0 LDB $3BE0 ; ISHTAR flags 1CFB: 27 02 BEQ $1CFF ; Have not learned it ... out 1CFD: D6 3A LDB >$3A ; Number of times lamp can be refilled 1CFF: 39 RTS ; Out ;##EnteringRoomAction_x ; _x Add 40 to health and move us a short distance away. 10 minutes must pass before again. 1D00: 96 13 LDA >$13 ; Have we recently visited healed up here? 1D02: 26 FB BNE $1CFF ; Yes ... not again 1D04: 86 0A LDA #$0A ; Can heal again ... 1D06: 97 13 STA >$13 ; ... in 10 seconds 1D08: BD 06 61 JSR $0661 ; Random room number 1D0B: C4 3F ANDB #$3F ; 00-3F 1D0D: C0 1F SUBB #$1F ; Offset from -1F to 20 1D0F: DB 00 ADDB >$00 ; Move to new room 1D11: C4 DF ANDB #$DF ; 1st half of whichever floor 1D13: D7 00 STB >$00 ; Current room 1D15: D7 01 STB >$01 ; And last room 1D17: 86 28 LDA #$28 ; Add 40 to ... 1D19: BD 1A 4E JSR $1A4E ; ... health 1D1C: 8E 32 99 LDX #$3299 ; "YOU HAVE JUST WALKED THROUGH AN ENCHANTED AURA." 1D1F: 7E 10 66 JMP $1066 ; Print the message ;##EnteringRoomAction_203 ; _203 Print SMALL PIT IN CORNER OF ROOM. 1D22: C6 0F LDB #$0F ; "THERE IS A SMALL PIT IN THE CORNER OF THE ROOM." 1D24: 7E 10 48 JMP $1048 ; Print the mesage ;##EnteringRoomAction_213 ; _213 Print LAYER OF MIST EAST WALL. 1D27: 8E 31 83 LDX #$3183 ; "A LAYER OF MIST OBSCURES THE EAST WALL." 1D2A: 7E 10 66 JMP $1066 ; Print the message ;##EnteringRoomAction_232 ; _232 If we came south to this room and we are carying the pendant then move the ; pendant to a random room and move us to (or near) the start. 1D2D: 96 02 LDA >$02 ; Direction we took to get here 1D2F: 81 08 CMPA #$08 ; Did we come south to this room? 1D31: 26 09 BNE $1D3C ; No ... out 1D33: C6 0A LDB #$0A ; Move the pandant ... 1D35: BD 12 B8 JSR $12B8 ; ... from pack to a random room 1D38: 10 25 FD E4 LBCS $1B20 ; If we did move pendant do BetweenRoomB ... move us to or near start 1D3C: 39 RTS ; Done ;##SpellLocationLimits ; This table describes where a spell can be placed at random. The last 24 ; rooms on floors 1-3 and all of 4th floor is the maze (except for exit ; room on 4th floor). The given spell must be placed between the start and ; stop values (inclusive). 1D3D: 00 27 ; VETRA 0 - 39 1st floor (except last 24 rooms ... the maze) 1D3F: 40 67 ; MITRA 64 - 103 2nd floor (except last 24 rooms ... the maze) 1D41: 40 67 ; OKKAN 64 - 103 2nd floor (except last 24 rooms ... the maze) 1D43: 40 67 ; AKHIROM 64 - 103 2nd floor (except last 24 rooms ... the maze) 1D45: 80 A7 ; NERGAL 128 - 167 3rd floor (except last 24 rooms ... the maze) 1D47: 80 A7 ; BELROG 128 - 167 3rd floor (except last 24 rooms ... the maze) 1D49: 80 FF ; CROM 128 - 255 anywhere on 3rd or 4th floor 1D4B: 80 FF ; ISHTAR 128 - 255 anywhere on 3rd or 4th floor ;##ProtectedObjectConfiguration ; There are 14 objects in the game that require us to have a combination ; of objects to kill/get. This table lists a number of configurations ; for each of these objects. On initialization, a random list is chosen ; from the possibile lists for each object. ; ; Note that none of these are treasures, so the game can't be unwinnable because a ; creature carries the object needed to kill it. ; ; These lists are carefully constructed so that we can never have an unwinnable ; game because two objects require one another to get. 1D4D: 1A ; TROGLODYTE 1D4E: 45 0B 38 80 ; AX (plus bits), SCEPTER, MITRA 1D52: 23 7D 80 ; SPELLBOOK, CROM (plus bits) 1D55: 43 07 3B FF ; DAGGER (plus bits), SHIELD, NERGAL 1D59: 1D ; SATYR 1D5A: 46 3B 80 ; SWORD (plus bits), NERGAL 1D5D: 44 2B 38 80 ; MACE (plus bits), LIGHTRING, MITRA 1D61: 23 77 FF ; SPELLBOOK, VETAR (plus bits) 1D64: 1E ; MINOTAUR 1D65: 46 07 2A 80 ; SWORD (plus bits), SHIELD, POWERRING 1D69: 44 0F 0B 38 80 ; MACE (plus bits), VIAL, SCEPTER, MITRA 1D6E: 45 3B FF ; AX (plus bits), NERGAL 1D71: 1B ; SCORPION 1D72: 48 3B 80 ; FLUTE (plus bits), NERGAL 1D75: 14 3D 80 ; SKULL, CROM 1D78: 51 2A FF ; TALISMAN (plus bits), POWERRING 1D7B: 1C ; NYMPH 1D7C: 49 2C 80 ; MUSHROOM (plus bits), TRUTHRING 1D7F: 41 0A 80 ; FOOD (plus bits), PENDANT 1D82: 48 39 FF ; FLUTE (plus bits), OKKAN 1D85: 19 ; SPRITE 1D86: 54 2A 80 ; SKULL (plus bits), POWERRING 1D89: 41 3B 80 ; FOOD (plus bits), NERGAL 1D8C: 43 3A FF ; DAGGER (plus bits), AKHIROM ; 1D8F: 06 ; SWORD 1D90: 18 80 ; ROPE 1D92: 38 80 ; MITRA 1D94: 0E FF ; PARCHMENT 1D96: 0F ; VIAL 1D97: 09 77 80 ; MUSHROOM, VETAR (plus bits) 1D9A: 0E 38 80 ; PARCHMENT, MITRA 1D9D: 11 38 FF ; TALISMAN, MITRA 1DA0: 07 ; SHIELD 1DA1: 06 80 ; SWORD 1DA3: 04 80 ; MACE 1DA5: 03 FF ; DAGGER 1DA7: 14 ; SKULL 1DA8: 11 0A 80 ; TALISMAN, PENDANT 1DAB: 39 80 ; OKKAN 1DAD: 0B FF ; SCEPTER 1DAF: 2A ; POWERRING 1DB0: 7C 80 ; BELROG (plus bits) 1DB2: 07 0B 0E 79 80 ; SHIELD, SCEPTER, PARCHMENT, OKKAN (plus bits) 1DB7: 07 04 14 78 80 ; SHIELD, MACE, SKULL, MITRA (plus bits) 1DBC: 07 06 7A FF ; SHIELD, SWORD, AKHIROM (plus bits) 1DC0: 2B ; LIGHTRING 1DC1: 2A 7D 11 80 ; POWERRING, CROM (plus bits), TALISMAN 1DC5: 2A 05 39 80 ; POWERRING, AX, OKKAN 1DC9: 2A 18 7B FF ; POWERRING, ROPE, NERGAL (plus bits) 1DCD: 2C ; TRUTHRING 1DCE: 2B 7D 0D 80 ; LIGHTRING, CROM (plus bits), BASKET 1DD2: 2B 05 39 80 ; LIGHTRING, AX, OKKAN 1DD6: 2B 08 7A FF ; LIGHTRING, FLUTE, AKHIROM (plus bits) 1DDA: 23 ; SPELLBOOK 1DDB: 14 08 80 ; SKULL, FLUTE 1DDE: 0A 7D 80 ; PENDANT, CROM (plus bits) 1DE1: 09 13 7C 80 ; MUSHROOM, GOBLET, BELROG (plus bits) 1DE5: 2A 7B FF ; POWERRING, NERGAL (plus bits) 1DE8: FF ;##EnteringRoomActionPlacment ; The first 30 entering-room-actions are placed using this table. The first two ; bytes are the lower and upper bounds of room numbers (inclusive) it can appear. ; The third byte is ANDed with the room number. ; The DF limits the room to the 1st half of the floor (away from the maze). ; ; Room Mask Action 1DE9: 00 7F FF ; 0 - 127 & FF _a 1DEC: 00 7F FF ; 0 - 127 & FF _b 1DEF: 00 7F FF ; 0 - 127 & FF _c 1DF2: C0 FF FF ; 192 - 255 & FF _d 1DF5: C0 FF FF ; 192 - 255 & FF _e 1DF8: 40 7F FF ; 64 - 127 & FF _f 1DFB: 40 7F DF ; 64 - 127 & DF _g (not maze) 1DFE: 40 7F DF ; 64 - 127 & DF _h (not maze) 1E01: E0 FF DF ; 224 - 255 & DF _i (not maze) 1E04: C0 DF DF ; 192 - 223 & DF _j (not maze) 1E07: A0 BF DF ; 160 - 191 & DF _k (not maze) 1E0A: 80 9F DF ; 128 - 159 & DF _l (not maze) 1E0D: 60 7F DF ; 96 - 127 & DF _m (not maze) 1E10: 40 5F DF ; 64 - 95 & DF _n (not maze) 1E13: 20 3F DF ; 32 - 63 & DF _o (not maze) 1E16: 00 1F DF ; 0 - 31 & DF _p (not maze) 1E19: 00 FF DF ; 0 - 255 & DF _q (not maze) 1E1C: 00 7F FF ; 0 - 127 & FF _r 1E1F: 00 FF FF ; 0 - 255 & FF _q 1E22: 00 FF FF ; 0 - 255 & FF _q 1E25: 40 BF DF ; 64 - 191 & DF _s (not maze) 1E28: 80 FF FF ; 128 - 255 & FF _t 1E2B: 80 FF FF ; 128 - 255 & FF _q 1E2E: 00 3F DF ; 0 - 63 & DF _u (not maze) 1E31: 40 FF FF ; 64 - 255 & FF _v 1E34: 80 BF FF ; 128 - 191 & FF _f 1E37: C0 FF FF ; 192 - 255 & FF _32 (reused from below) 1E3A: 40 7F FF ; 64 - 127 & FF _x 1E3D: 80 BF FF ; 128 - 191 & FF _x 1E40: C0 FF FF ; 192 - 255 & FF _203 (reused from below) ; ; _213 ; _32 ; _33 ; _203 ; _z (music room) 16 - 39 ; _232 ;##OracleAdviceTable ; This table lists the objects the Oracle will give advice on. They are ; all protected objects listed in the order they appear in the config ; table. Note that the spellbook is missing. 1E43: 1A ; TROGLODYTE 1E44: 1D ; SATYR 1E45: 1E ; MINOTAUR 1E46: 1B ; SCORPION 1E47: 1C ; NYMPH 1E48: 19 ; SPRITE 1E49: 06 ; SWORD 1E4A: 0F ; VIAL 1E4B: 07 ; SHIELD 1E4C: 14 ; SKULL 1E4D: 2A ; POWERRING 1E4E: 2B ; LIGHTRING 1E4F: 2C ; TRUTHRING ; Missing SPELLBOOK ... no advice 1E50: 00 ;##ItemDescriptions ;Item Descriptions 1E51: 00 FF ; Message 0 "" 1E53: 01 30 8C 94 85 FF ; Message 1 "THERE IS FOOD HERE." 1E59: 02 64 B8 8C 89 34 35 40 FF ; Message 2 "A BOTTLE IS RESTING ON THE FLOOR." 1E62: 03 64 1D 26 8C 34 35 40 FF ; Message 3 "A SMALL DAGGER IS ON THE FLOOR." 1E6B: 04 64 C9 8C 22 35 10 67 35 C8 FF ; Message 4 "A MACE IS IN THE CENTER OF THE PATH." 1E76: 05 64 29 5F 8C 21 22 35 40 FF ; Message 5 "A GREAT AX IS STUCK IN THE FLOOR." 1E80: 06 64 8E 52 8C 85 FF ; Message 6 "A BRONZE SWORD IS HERE." 1E87: 07 64 87 53 8C 92 91 8A FF ; Message 7 "A LEATHER SHIELD IS AT YOUR FEET." 1E90: 08 64 81 24 88 22 35 0F FF ; Message 8 "A GOLD FLUTE SITS IN THE CORNER." 1E99: 09 30 08 CA 34 35 40 FF ; Message 9 "THERE IS A MUSHROOM ON THE FLOOR." 1EA1: 0A 64 A4 8C 22 64 1D 9F A0 95 35 0C FF ; Message 10 "A PENDANT IS IN A SMALL HOLE RECESSED INTO THE WALL." 1EAE: 0B 30 8C 64 A5 34 35 40 FF ; Message 11 "THERE IS A SCEPTER ON THE FLOOR." 1EB7: 0C 30 8C 64 1D A6 89 8B 35 0C FF ; Message 12 "THERE IS A SMALL LAMP RESTING AGAINST THE WALL." 1EC2: 0D 64 27 8C 22 35 10 67 35 40 FF ; Message 13 "A BASKET IS IN THE CENTER OF THE FLOOR." 1ECD: 0E EE 65 A7 8C 89 34 64 2A FF ; Message 14 "AN ANCIENT PARCHMENT IS RESTING ON A STONE." 1ED7: 0F 64 1D A8 88 22 35 0F FF ; Message 15 "A SMALL VIAL SITS IN THE CORNER." 1EE0: 10 EE A9 8C 89 34 64 1E 79 2A FF ; Message 16 "AN URN IS RESTING ON A LARGE SMOOTH STONE." 1EEB: 11 64 23 C1 88 34 35 70 67 35 CD FF ; Message 17 "A MAGIC TALISMAN SITS ON THE EDGE OF THE PATH." 1EF7: 12 64 4A B7 8C 89 8B 35 0C FF ; Message 18 "A MUSTY SCROLL IS RESTING AGAINST THE WALL." 1F01: 13 30 8C 64 C2 34 35 40 FF ; Message 19 "THERE IS A GOBLET ON THE FLOOR." 1F0A: 14 64 66 88 22 64 1D 9F 22 35 40 FF ; Message 20 "A SKULL SITS IN A SMALL HOLE IN THE FLOOR." 1F16: 15 64 81 C7 8C CB 22 35 CC 14 FF ; Message 21 "A GOLD SCARAB IS SPARKLING IN THE DIM LIGHT." 1F21: 16 EE 65 E5 D0 84 35 D1 67 64 CD FF ; Message 22 "AN ANCIENT JEWELBOX LAYS TO THE SIDE OF A PATH." 1F2D: 17 64 4D 7A C4 8C 9C 89 8B 64 2A FF ; Message 23 "A BROKEN MARBLE TABLET IS GENTLY RESTING AGAINST A STONE." 1F39: 18 64 20 CE 8C 34 35 40 FF ; Message 24 "A LONG ROPE IS ON THE FLOOR." 1F42: 19 64 BA 88 34 64 3A 22 35 0F 67 35 3C FF ; Message 25 "A SPRITE SITS ON A CHAIR IN THE CORNER OF THE ROOM." 1F50: 1A 64 1E BB 8C 22 35 3C FF ; Message 26 "A LARGE TROGLODYTE IS IN THE ROOM." 1F59: 1B 35 AB 8C 85 FF ; Message 27 "THE SCORPION IS HERE." 1F5F: 1C 35 AC 8C 85 FF ; Message 28 "THE NYMPH IS HERE." 1F65: 1D 35 AD 8C 85 FF ; Message 29 "THE SATYR IS HERE." 1F6B: 1E 35 7F 8C 85 FF ; Message 30 "THE MINOTAUR IS HERE." 1F71: 1F 35 AE 8C 85 FF ; Message 31 "THE ORACLE IS HERE." 1F77: 20 30 8C 81 34 35 40 FF ; Message 32 "THERE IS GOLD ON THE FLOOR." 1F7F: 21 64 8D 67 25 8C 85 FF ; Message 33 "A BAG OF SILVER IS HERE." 1F87: 22 CB AF 8C 22 64 1D 9F 22 35 0C FF ; Message 34 "SPARKLING DIAMOND IS IN A SMALL HOLE IN THE WALL." 1F93: 23 35 B0 8C 85 FF ; Message 35 "THE SPELLBOOK IS HERE." 1F99: 24 64 1E BF D0 84 35 D1 67 35 CD 22 35 CF FF ; Message 36 "A LARGE RUBY LAYS TO THE SIDE OF THE PATH IN THE DIRT." 1FA8: 25 64 81 B2 D0 34 64 1D 39 FF ; Message 37 "A GOLD FLEECE LAYS ON A SMALL TABLE." 1FB2: 26 64 1D 25 B3 D0 34 35 40 FF ; Message 38 "A SMALL SILVER TIARA LAYS ON THE FLOOR." 1FBC: 27 64 8D 67 23 B4 8C 34 64 39 FF ; Message 39 "A BAG OF MAGIC POWDER IS ON A TABLE." 1FC7: 28 64 1D B5 8C 34 35 40 FF ; Message 40 "A SMALL AMULET IS ON THE FLOOR." 1FD0: 29 64 1D B8 38 64 23 B6 22 D2 8C 85 FF ; Message 41 "A SMALL BOTTLE WITH A MAGIC POTION IN IT IS HERE." 1FDD: 2A 35 BC 8C CB 34 35 90 FF ; Message 42 "THE POWERRING IS SPARKLING ON THE TRAIL." 1FE6: 2B 35 BD 8C CB 34 35 CD FF ; Message 43 "THE LIGHTRING IS SPARKLING ON THE PATH." 1FEF: 2C 35 BE 8C CB 34 35 40 FF ; Message 44 "THE TRUTHRING IS SPARKLING ON THE FLOOR." 1FF8: 2D 64 81 C0 8C 89 22 64 3E 67 CF FF ; Message 45 "A GOLD CROWN IS RESTING IN A PILE OF DIRT." 2004: 2E 64 1E FA 8C CB 22 35 14 FF ; Message 46 "A LARGE OPAL IS SPARKLING IN THE LIGHT." 200E: 2F 64 1E FB D0 8B 35 70 67 64 2A FF ; Message 47 "A LARGE SAPPHIRE LAYS AGAINST THE EDGE OF A STONE." 201A: 86 64 23 52 8C 21 22 64 1E 2A FF ; Message 134 "A MAGIC SWORD IS STUCK IN A LARGE STONE." 2025: 87 64 87 53 8C DA 34 35 0C FF ; Message 135 "A LEATHER SHIELD IS HANGING ON THE WALL." 202F: 8F 64 60 A8 8C DB 22 35 D3 FF ; Message 143 "A GLASS VIAL IS SUSPENDED IN THE AIR." 2039: 94 64 66 8C 89 22 35 10 67 64 66 39 FF ; Message 148 "A SKULL IS RESTING IN THE CENTER OF A SKULL TABLE." 2046: A3 64 23 B0 88 34 35 70 67 64 0B 39 FF ; Message 163 "A MAGIC SPELLBOOK SITS ON THE EDGE OF A SHALLOW TABLE." 2053: AA 35 BC 8C 34 64 D4 3A FF ; Message 170 "THE POWERRING IS ON A VELVET CHAIR." 205C: AB 35 BD 88 34 64 3E 67 3F FF ; Message 171 "THE LIGHTRING SITS ON A PILE OF BONES." 2066: AC 35 BE 8C DC 22 35 10 67 64 60 2A FF ; Message 172 "THE TRUTHRING IS BURIED IN THE CENTER OF A GLASS STONE." 2073: FF ;##ItemProtectedMessages ; Item-is-protected Messages 2074: 06 35 52 E4 D5 E1 FF ; Message 6 "THE SWORD WILL NOT MOVE." 207B: 07 9B DE D5 D6 35 53 FF ; Message 7 "YOU CAN NOT REACH THE SHIELD." 2083: 0F 35 A8 8C 9E 67 D6 FF ; Message 15 "THE VIAL IS OUT OF REACH." 208B: 14 64 23 D9 DF 9B D7 35 66 FF ; Message 20 "A MAGIC FORCE KEEPS YOU FROM THE SKULL." 2095: 23 35 B0 E0 9E 67 D6 DD 9B E1 E2 D2 FF ; Message 35 "THE SPELLBOOK FLOATS OUT OF REACH WHEN YOU MOVE NEAR IT." 20A2: 2A 35 BC 97 DD 9B E1 E2 D2 FF ; Message 42 "THE POWERRING DISAPPEARS WHEN YOU MOVE NEAR IT." 20AC: 2B 64 17 86 05 D7 35 3F 2F DF 9B D7 35 BD FF ; Message 43 "A SKELETON SPRINGS UP FROM THE BONES AND KEEPS YOU FROM THE LIGHTRING." 20BB: 2C 35 60 2A 8C E3 D8 23 FF ; Message 44 "THE GLASS STONE IS PROTECTED BY MAGIC." 20C4: FF ;##PossibleProtectedObjectLocations ; 16 different rooms that protected objects may be placed in. It is likely that ; multiple protected objects will be dropped in the same room. 20C5: 64 ; 100 20C6: 96 ; 150 20C7: 5A ; 90 20C8: 4D ; 77 20C9: A2 ; 162 20CA: 10 ; 16 20CB: 73 ; 115 20CC: 90 ; 144 20CD: 38 ; 56 20CE: 19 ; 25 20CF: 2C ; 44 20D0: 87 ; 135 20D1: DE ; 222 20D2: 4F ; 79 20D3: 85 ; 133 20D4: 9E ; 158 ;##ObjectPlacementScript ; This script controls how objects are placed and how the flags are initialized. ; For range placment the room is ((u-l)&mask)+lower. Table for table placement ; is above. Protection does OR #$10. Invisible object does OR #$01. ; Weights and Bulk values are copied from the table at 354A. ; weight Bulk 20D5: 00 00 3F 1F ; 07 07 FOOD Random range 0 to 63 mask=1F(1st 4 rows 1st floor) 20D9: 00 00 3F 1F ; 07 07 BOTTLE Random range 0 to 63 mask=1F(1st 4 rows 1st floor) 20DD: 00 00 3F 1F ; 28 14 DAGGER Random range 0 to 63 mask=1F(1st 4 rows 1st floor) 20E1: 00 80 BF 1F ; 3C 3C MACE Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 20E5: 00 80 BF 1F ; 3C 3C AX Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 20E9: 80 ; 46 28 SWORD Random location from table AND PROTECTED 20EA: 03 00 3F DF ; 3C 32 SHIELD Random range 0 to 63 mask=DF(1st 4 rows any floor) AND PROTECTED 20EE: 00 40 7F 1F ; 1E 14 FLUTE Random range 64 to 127 mask=1F(1st 4 rows 1st floor) 20F2: 00 80 BF 1F ; 32 1E MUSHROOM Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 20F6: 00 80 BF 1F ; 1E 28 PENDANT Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 20FA: 00 C0 FF FF ; 32 41 SCEPTER Random range 192 to 255 mask=FF(anywhere) 20FE: 00 00 0C 0B ; 06 06 LAMP Random range 0 to 12 mask=0B(early 1st level) 2102: 00 80 BF 1F ; 14 00 BASKET Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 2106: 00 C0 FF FF ; 23 28 PARCHMENT Random range 192 to 255 mask=FF(anywhere) 210A: 80 ; 2D 32 VIAL Random location from table AND PROTECTED 210B: 00 40 7F 1F ; 32 6E URN Random range 64 to 127 mask=1F(1st 4 rows 1st floor) 210F: 00 C0 FF FF ; 28 28 TALISMAN Random range 192 to 255 mask=FF(anywhere) 2113: 01 ; 28 32 SCROLL Carried object 2114: 00 C0 FF FF ; 28 46 GOBLET Random range 192 to 255 mask=FF(anywhere) 2118: 03 40 7F DF ; 28 28 SKULL Random range 64 to 127 mask=DF(1st 4 rows any floor) AND PROTECTED 211C: 01 ; 1E 32 SCARAB Carried object 211D: 01 ; 1E 46 JEWELBOX Carried object 211E: 01 ; 32 55 TABLET Carried object 211F: 00 C0 FF DF ; 28 3C ROPE Random range 192 to 255 mask=DF(1st 4 rows any floor) 2123: 00 00 7F DF ; SPRITE Random range 0 to 127 mask=DF(1st 4 rows any floor) 2127: 00 80 BF 1F ; TROGLODYTE Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 212B: 00 40 BF DF ; SCORPION Random range 64 to 191 mask=DF(1st 4 rows any floor) 212F: 00 40 7F 1F ; NYMPH Random range 64 to 127 mask=1F(1st 4 rows 1st floor) 2133: 00 80 BF 1F ; SATYR Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 2137: 00 80 BF 1F ; MINOTAUR Random range 128 to 191 mask=1F(1st 4 rows 1st floor) 213B: 00 00 7F DF ; ORACLE Random range 0 to 127 mask=DF(1st 4 rows any floor) 213F: 01 ; 64 1E GOLD Carried object 2140: 01 ; 46 32 SILVER Carried object 2141: 01 ; 28 32 DIAMOND Carried object 2142: 03 00 FF FF ; 46 50 SPELLBOOK Random range 0 to 255 mask=FF(anywhere) AND PROTECTED 2146: 01 ; 28 3C RUBY Carried object 2147: 01 ; 5A 50 FLEECE Carried object 2148: 01 ; 32 37 TIARA Carried object 2149: 01 ; 3C 28 POWDER Carried object 214A: 01 ; 5A 2D AMULET Carried object 214B: 01 ; 46 46 POTION Carried object 214C: 03 80 BF DF ; 5A 5A POWERRING Random range 128 to 191 mask=DF(1st 4 rows any floor) AND PROTECTED 2150: 80 ; 5A 5A LIGHTRING Random location from table AND PROTECTED 2151: 80 ; 5A 5A TRUTHRING Random location from table AND PROTECTED 2152: 01 ; 50 32 CROWN Carried object 2153: 01 ; 28 28 OPAL Carried object 2154: 01 ; 3C 3C SAPPHIRE Carried object ; 2155: 02 ; NORTH OR with 0x42 SPELL 2156: 02 ; NORTH OR with 0x42 SPELL 2157: 02 ; NORTH OR with 0x42 SPELL 2158: 02 ; NORTH OR with 0x42 SPELL 2159: 02 ; NORTH OR with 0x42 SPELL 215A: 02 ; NORTH OR with 0x42 SPELL 215B: 02 ; NORTH OR with 0x42 SPELL ; 215C: 02 ; VETAR OR with 0x42 SPELL 215D: 02 ; MITRA OR with 0x42 SPELL 215E: 02 ; OKKAN OR with 0x42 SPELL 215F: 02 ; AKHIROM OR with 0x42 SPELL 2160: 02 ; NERGAL OR with 0x42 SPELL 2161: 02 ; BELROG OR with 0x42 SPELL 2162: 02 ; CROM OR with 0x42 SPELL 2163: 02 ; ISHTAR OR with 0x42 SPELL 2164: 55 ; End of list ;##BaseRoomDescriptions ; List of base room descriptions ; Room 0 ; [YOU ARE] IN A GREAT STONE TOWER WITH A LOW BROKEN CEILING ; AND A POOL OF WATER IN THE CORNER. 2165: 22 64 29 2A 2B 38 64 0E 4D 0A 2F 64 2C 67 2D 22 35 0F FF ; Room 1 ; [YOU ARE] IN A SMALL EMPTY ROOM WITH A BROKEN FLOOR. 2178: 22 64 1D 47 3C 38 64 4D 40 FF ; Room 2 ; [YOU ARE] IN THE GUARD ROOM WITH A GREAT WOOD PILE. 2182: 22 35 3B 3C 38 64 29 3D 3E FF ; Room 3 ; [YOU ARE] IN THE CENTER OF A NARROW HALL WAY AND THERE IS A ; PILE OF BONES ON THE FLOOR. 218C: 22 35 10 67 64 28 37 1C 2F 30 8C 64 3E 67 3F 34 35 40 FF ; Room 4 ; [YOU ARE] IN A SMALL CLEAN ROOM WITH A TORCH HIGH ON THE ; WALL. 219F: 22 64 1D 42 3C 38 64 16 0D 34 35 0C FF ; Room 5 ; [YOU ARE] IN THE TROPHY ROOM WITH A LARGE WOOD PILE IN THE ; CORNER. 21AC: 22 35 46 3C 38 64 1E 3D 3E 22 35 0F FF ; Room 6 ; [YOU ARE] IN AN EMPTY CLOSET. 21B9: 22 EE 47 48 FF ; Room 7 ; [YOU ARE] IN A GREAT SLOPING SHAFT. 21BE: 22 64 29 9D 71 FF ; Room 8 ; [YOU ARE] ON A NARROW PASSAGE WAY WITH A MARBLE FLOOR. 21C4: 34 64 28 1B 1C 38 64 7A 40 FF ; Room 9 ; [YOU ARE] IN A SMALL ROOM WITH DRAPES ON THE SOUTH WALL AND ; NARCISSUS PLANTS IN THE CORNER. 21CE: 22 64 1D 3C 38 33 34 35 02 0C 2F 18 19 22 35 0F FF ; Room 10 ; [YOU ARE] IN A NARROW HALL WAY WITH A TABLE AND CHAIR. 21DF: 22 64 28 37 1C 38 64 39 2F 3A FF ; Room 11 ; [YOU ARE] IN A PASSAGE WAY WITH A GREAT PAINTING ON THE ; NORTH WALL. 21EA: 22 64 1B 1C 38 64 29 49 34 35 01 0C FF ; Room 12 ; [YOU ARE] IN A MUSTY ROOM FILLED WITH RATS AND BROKEN GLASS. 21F7: 22 64 4A 3C 36 38 4C 2F 4D 60 FF ; Room 13 ; [YOU ARE] IN A GLASS HALL WAY WITH BROKEN TILES ON THE ; FLOOR. 2202: 22 64 60 37 1C 38 4D 4E 34 35 40 FF ; Room 14 ; [YOU ARE] IN THE ROYAL BED ROOM WITH A SHALLOW CEILING. 220E: 22 35 4F 50 3C 38 64 0B 0A FF ; Room 15 ; [YOU ARE] IN A SMALL DARK CHAMBER WITH NO WINDOWS. 2218: 22 64 1D 15 5C 38 44 45 FF ; Room 16 ; [YOU ARE] AT THE WEST END OF A GREAT POOL OF WATER. 2221: 92 35 03 77 67 64 29 2C 67 2D FF ; Room 17 ; [YOU ARE] AT THE EAST END OF A GREAT POOL OF WATER. 222C: 92 35 04 77 67 64 29 2C 67 2D FF ; Room 18 ; [YOU ARE] IN A SMALL LIBRARY. 2237: 22 64 1D 54 FF ; Room 19 ; [YOU ARE] IN A NARROW DAMP MUSTY CHAMBER WITH ANCIENT ; CARVINGS HIGH ON THE WALL. 223C: 22 64 28 63 4A 5C 38 65 13 0D 34 35 0C FF ; Room 20 ; [YOU ARE] IN A GREEN MARBLE HALL. 224A: 22 64 32 7A 37 FF ; Room 21 ; [YOU ARE] IN A WINE CELLAR. 2250: 22 64 55 56 FF ; Room 22 ; [YOU ARE] IN THE CENTER OF THE CHAMBER OF THE KING. 2255: 22 35 10 67 35 5C 67 35 75 FF ; Room 23 ; [YOU ARE] IN A DAMP CHILL HALL WAY WITH MIST SWIRLING ON THE ; FLOOR. 225F: 22 64 63 6A 37 1C 38 6B 6C 34 35 40 FF ; Room 24 ; [YOU ARE] IN A WIDE HALL WAY WITH A GREAT WOOD TABLE AND A ; GLASS OF WINE. 226C: 22 64 1A 37 1C 38 64 29 3D 39 2F 64 60 67 55 FF ; Room 25 ; [YOU ARE] AT THE EAST END OF A GREAT MARBLE PORTAL. 227C: 92 35 04 77 67 64 29 7A 57 FF ; Room 26 ; [YOU ARE] IN A GREAT ROYAL COURT YARD. 2286: 22 64 29 4F 58 59 FF ; Room 27 ; [YOU ARE] IN A CLOISTER HALL AND THE VOICES OF THE DEAD ARE ; NEAR. 228D: 22 64 5A 37 2F 35 C6 67 35 76 31 E2 FF ; Room 28 ; [YOU ARE] IN A SMALL DARK CHAMBER. 229A: 22 64 1D 15 5C FF ; Room 29 ; [YOU ARE] IN A DAMP PASSAGE WAY WITH GREEN MIST SWIRLING ; DOWN THE WALL. 22A0: 22 64 63 1B 1C 38 32 6B 6C 06 35 0C FF ; Room 30 ; [YOU ARE] IN A LARGE BED ROOM WITH A LONG BROKEN SHADOW ; STRETCHING ACROSS THE FLOOR. 22AD: 22 64 1E 50 3C 38 64 20 4D EC ED EB 35 40 FF ; Room 31 ; [YOU ARE] IN A LARGE PASSAGE WAY AND THE CEILING IS GENTLY ; SLOPING OUT OF SIGHT. 22BC: 22 64 1E 1B 1C 2F 35 0A 8C 9C 9D 9E 67 96 FF ; Room 32 ; [YOU ARE] IN A NARROW TWISTING STAIR WAY WITH NO WINDOWS. 22CB: 22 64 28 2E 61 1C 38 44 45 FF ; Room 33 ; [YOU ARE] IN A DARK SMALL TOWER ROOM WITH NO WINDOWS. 22D5: 22 64 15 1D 2B 3C 38 44 45 FF ; Room 34 ; [YOU ARE] IN A ROOM WITH A LOW SLOPING CEILING AND A DARK ; SUNKEN PIT AT THE EAST END. 22DF: 22 64 3C 38 64 0E 9D 0A 2F 64 15 6E 6D 92 35 04 77 FF ; Room 35 ; [YOU ARE] IN A DARK SERVANT CHAMBER WITH A LOW CEILING AND A ; SHALLOW HOLE AT THE WEST END. 22F1: 22 64 15 5B 5C 38 64 0E 0A 2F 64 0B 9F 92 35 03 77 FF ; Room 36 ; [YOU ARE] IN A PANTRY FILLED WITH RATS AND BROKEN GLASS. 2303: 22 64 5D 36 38 4C 2F 4D 60 FF ; Room 37 ; [YOU ARE] IN THE GREAT BEER HALL. 230D: 22 35 29 5E 37 FF ; Room 38 ; [YOU ARE] IN A LARGE EMPTY CHAMBER AND THE WALL DISAPPEARS ; INTO THE MIST. 2313: 22 64 1E 47 5C 2F 35 0C 97 95 35 6B FF ; Room 39 ; [YOU ARE] IN THE TEMPLE OF ZEUS. 2320: 22 35 E6 67 E7 FF ; Room 40 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2326: E8 FF ; Room 41 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2328: E8 FF ; Room 42 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 232A: E8 FF ; Room 43 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 232C: E8 FF ; Room 44 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS AND THERE IS A SMALL PIT WHICH DISAPPEARS ; INTO THE MIST. 232E: E8 2F 30 8C 64 1D 6D C5 97 95 35 6B FF ; Room 45 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 233B: E8 FF ; Room 46 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 233D: E8 FF ; Room 47 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 233F: E8 FF ; Room 48 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2341: E8 FF ; Room 49 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2343: E8 FF ; Room 50 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2345: E8 FF ; Room 51 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2347: E8 FF ; Room 52 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2349: E8 FF ; Room 53 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 234B: E8 FF ; Room 54 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 234D: E8 FF ; Room 55 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 234F: E8 FF ; Room 56 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2351: E8 FF ; Room 57 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2353: E8 FF ; Room 58 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2355: E8 FF ; Room 59 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2357: E8 FF ; Room 60 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2359: E8 FF ; Room 61 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 235B: E8 FF ; Room 62 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 235D: E8 FF ; Room 63 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 235F: E8 FF ; Room 64 ; [YOU ARE] IN A LARGE CHAMBER WITH A GREAT PIT STRETCHING ; ACROSS THE SOUTH WALL. 2361: 22 64 1E 5C 38 64 29 6D ED EB 35 02 0C FF ; Room 65 ; [YOU ARE] IN A NARROW CORRIDOR WITH A STONE WALL. 236F: 22 64 28 11 38 64 2A 0C FF ; Room 66 ; [YOU ARE] IN A SMALL ROOM WITH A HIGH CEILING. 2378: 22 64 1D 3C 38 64 0D 0A FF ; Room 67 ; [YOU ARE] IN A DAMP ROOM WITH A WOOD FLOOR AND A GREAT CRYPT ; IN THE CENTER. 2381: 22 64 63 3C 38 64 3D 40 2F 64 29 74 22 35 10 FF ; Room 68 ; [YOU ARE] IN A STONE PASSAGE WAY WITH BONES IN THE WALL. 2391: 22 64 2A 1B 1C 38 3F 22 35 0C FF ; Room 69 ; [YOU ARE] IN A GREAT LONG HALL WITH A CHILL MIST FLOWING ; DOWN THE EAST WALL. 239C: 22 64 29 20 37 38 64 6A 6B 7D 06 35 04 0C FF ; Room 70 ; [YOU ARE] IN A LARGE ROOM WITH A FOUL SMELLING SUNKEN PIT AT ; THE NORTH END. 23AB: 22 64 1E 3C 38 64 7B 7C 6E 6D 92 35 01 77 FF ; Room 71 ; [YOU ARE] AT THE EDGE OF A GREAT STONE SHAFT. 23BA: 92 35 70 67 64 29 2A 71 FF ; Room 72 ; [YOU ARE] IN THE HALL OF THE ROYAL COURT. 23C3: 22 35 37 67 35 4F 58 FF ; Room 73 ; [YOU ARE] IN A GREAT EMPTY CHAMBER. 23CB: 22 64 29 47 5C FF ; Room 74 ; [YOU ARE] IN A ROOM WITH A LARGE POOL OF WATER. 23D1: 22 64 3C 38 64 1E 2C 67 2D FF ; Room 75 ; [YOU ARE] IN A LARGE CAVERN WITH A CHILL MIST SWIRLING ON ; THE FLOOR. 23DB: 22 64 1E 68 38 64 6A 6B 6C 34 35 40 FF ; Room 76 ; [YOU ARE] IN A NARROW TWISTING PASSAGE WHICH GENTLY WINDS ; INTO A GREAT CAVERN. 23E8: 22 64 28 2E 1B C5 9C 99 95 64 29 68 FF ; Room 77 ; [YOU ARE] IN A SMALL ROOM WITH A SHALLOW HOLE. 23F5: 22 64 1D 3C 38 64 0B 9F FF ; Room 78 ; [YOU ARE] IN A DAMP SUNKEN ROOM WITH A DARK STONE WALL AND A ; CHASM AT THE SOUTH END. 23FE: 22 64 63 6E 3C 38 64 15 2A 0C 2F 64 41 92 35 02 77 FF ; Room 79 ; [YOU ARE] IN A CHAMBER WITH A HIGH STONE CEILING AND ; CARVINGS ON THE EAST WALL. 2410: 22 64 5C 38 64 0D 2A 0A 2F 13 34 35 04 0C FF ; Room 80 ; [YOU ARE] IN A TWISTING MUSTY CORRIDOR. 241F: 22 64 2E 4A 11 FF ; Room 81 ; [YOU ARE] IN A SUNKEN ROOM WITH GREAT A STONE TABLE. 2425: 22 64 6E 3C 38 29 64 2A 39 FF ; Room 82 ; [YOU ARE] IN A LARGE CORRIDOR WITH A BROKEN STONE WALL AND A ; CHILL DAMP FLOOR. 242F: 22 64 1E 11 38 64 4D 2A 0C 2F 64 6A 63 40 FF ; Room 83 ; [YOU ARE] IN A CAVERN WITH A LOW STONE CEILING. 243E: 22 64 68 38 64 0E 2A 0A FF ; Room 84 ; [YOU ARE] IN A NARROW WINDING PASSAGE. 2447: 22 64 28 6F 1B FF ; Room 85 ; [YOU ARE] IN A TWISTING WINDING PASSAGE. 244D: 22 64 2E 6F 1B FF ; Room 86 ; [YOU ARE] IN A SMALL CHAMBER WITH A CHASM AT THE NORTH END. 2453: 22 64 1D 5C 38 64 41 92 35 01 77 FF ; Room 87 ; [YOU ARE] IN A CAVE WITH A LARGE SHALLOW PIT IN THE CENTER. 245F: 22 64 69 38 64 1E 0B 6D 22 35 10 FF ; Room 88 ; [YOU ARE] IN A MUSTY TWISTING CORRIDOR. 246B: 22 64 4A 2E 11 FF ; Room 89 ; [YOU ARE] ON A TWISTING PASSAGE WAY ON THE EDGE OF A GREAT ; SHAFT. 2471: 34 64 2E 1B 1C 34 35 70 67 64 29 71 FF ; Room 90 ; [YOU ARE] IN A TOMB OF THE SKULL. 247E: 22 64 72 67 35 66 FF ; Room 91 ; [YOU ARE] IN A PASSAGE OF STONE TILES. 2485: 22 64 1B 67 2A 4E FF ; Room 92 ; [YOU ARE] IN A WIDE ROOM WITH A SMALL PIT IN THE CENTER. 248C: 22 64 1A 3C 38 64 1D 6D 22 35 10 FF ; Room 93 ; [YOU ARE] IN A WOOD PASSAGE WAY. 2498: 22 64 3D 1B 1C FF ; Room 94 ; [YOU ARE] IN A WIDE HALL WAY WITH A SMALL PIT IN THE CORNER. 249E: 22 64 1A 37 1C 38 64 1D 6D 22 35 0F FF ; Room 95 ; [YOU ARE] IN THE CENTER OF A WINDING STONE TUNNEL. 24AB: 22 35 10 67 64 6F 2A 78 FF ; Room 96 ; [YOU ARE] IN A TWISTING MUSTY PASSAGE WAY. 24B4: 22 64 2E 4A 1B 1C FF ; Room 97 ; [YOU ARE] IN A MUSTY TWISTING PASSAGE WAY. 24BB: 22 64 4A 2E 1B 1C FF ; Room 98 ; [YOU ARE] IN A TWISTING MUSTY BROKEN PASSAGE. 24C2: 22 64 2E 4A 4D 1B FF ; Room 99 ; [YOU ARE] IN A GREAT CAVERN WITH BROKEN STONE EVERYWHERE. 24C9: 22 64 29 68 38 4D 2A 73 FF ; Room 100 ; [YOU ARE] IN A LONG DAMP TWISTING PASSAGE WITH A STONE ; CHAPEL ON THE SOUTH WALL. 24D2: 22 64 20 63 2E 1B 38 64 2A 43 34 35 02 0C FF ; Room 101 ; [YOU ARE] IN A LONG PASSAGE WAY. 24E1: 22 64 20 1B 1C FF ; Room 102 ; [YOU ARE] IN A CRYPT OF THE ANCIENT KING AND THE VOICES OF ; THE DEAD ARE HERE. 24E7: 22 64 74 67 35 65 75 2F 35 C6 67 35 76 31 85 FF ; Room 103 ; [YOU ARE] IN A SMALL CAVE FILLED WITH VOICES. 24F7: 22 64 1D 69 36 38 C6 FF ; Room 104 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 24FF: E8 FF ; Room 105 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2501: E8 FF ; Room 106 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2503: E8 FF ; Room 107 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2505: E8 FF ; Room 108 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2507: E8 FF ; Room 109 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2509: E8 FF ; Room 110 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 250B: E8 FF ; Room 111 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 250D: E8 FF ; Room 112 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 250F: E8 FF ; Room 113 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2511: E8 FF ; Room 114 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2513: E8 FF ; Room 115 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2515: E8 FF ; Room 116 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2517: E8 FF ; Room 117 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2519: E8 FF ; Room 118 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 251B: E8 FF ; Room 119 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 251D: E8 FF ; Room 120 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 251F: E8 FF ; Room 121 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2521: E8 FF ; Room 122 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2523: E8 FF ; Room 123 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2525: E8 FF ; Room 124 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2527: E8 FF ; Room 125 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2529: E8 FF ; Room 126 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 252B: E8 FF ; Room 127 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 252D: E8 FF ; Room 128 ; [YOU ARE] IN A NARROW TUNNEL. 252F: 22 64 28 78 FF ; Room 129 ; [YOU ARE] IN A SMALL CHAMBER WITH A SMOOTH MARBLE WALL. 2534: 22 64 1D 5C 38 64 79 7A 0C FF ; Room 130 ; [YOU ARE] IN A GREAT HALL WITH A POOL OF WATER IN THE ; CORNER. 253E: 22 64 29 37 38 64 2C 67 2D 22 35 0F FF ; Room 131 ; [YOU ARE] IN A STONE CORRIDOR. 254B: 22 64 2A 11 FF ; Room 132 ; [YOU ARE] IN A DAMP TUNNEL WITH A PATH OF TRACKS WHICH ; DISAPPEARS INTO MIST ON THE EAST WALL. 2550: 22 64 63 78 38 64 CD 67 E9 C5 97 95 6B 34 35 04 0C FF ; Room 133 ; [YOU ARE] ON THE WEST EDGE OF A DEEP PIT FILLED WITH MIST. 2562: 34 35 03 70 67 64 EA 6D 36 38 6B FF ; Room 134 ; [YOU ARE] IN A DEAD END CHAMBER. 256E: 22 64 76 77 5C FF ; Room 135 ; [YOU ARE] IN A SMALL CAVE FILLED WITH MINOTAUR TRACKS. 2574: 22 64 1D 69 36 38 7F E9 FF ; Room 136 ; [YOU ARE] IN A SMALL CAVERN. 257D: 22 64 1D 68 FF ; Room 137 ; [YOU ARE] IN A GREAT STONE TUNNEL. 2582: 22 64 29 2A 78 FF ; Room 138 ; [YOU ARE] IN A DARK CHAMBER. 2588: 22 64 15 5C FF ; Room 139 ; [YOU ARE] IN A TWISTING WINDING NARROW TUNNEL. 258D: 22 64 2E 6F 28 78 FF ; Room 140 ; [YOU ARE] IN A WINDING NARROW TWISTING TUNNEL. 2594: 22 64 6F 28 2E 78 FF ; Room 141 ; [YOU ARE] IN A NARROW TWISTING WINDING TUNNEL. 259B: 22 64 28 2E 6F 78 FF ; Room 142 ; [YOU ARE] IN A MUSTY CHAMBER WITH A PILE OF BONES ; EVERYWHERE. 25A2: 22 64 4A 5C 38 64 3E 67 3F 73 FF ; Room 143 ; [YOU ARE] IN A SMALL CAVE ON THE NORTH SIDE OF A DEEP PIT. 25AD: 22 64 1D 69 34 35 01 D1 67 64 EA 6D FF ; Room 144 ; [YOU ARE] ON A HIGH NARROW PATH AND THERE IS MIST ; EVERYWHERE. 25BA: 34 64 0D 28 CD 2F 30 8C 6B 73 FF ; Room 145 ; [YOU ARE] IN A FOUL SMELLING MUSTY PASSAGE. 25C5: 22 64 7B 7C 4A 1B FF ; Room 146 ; [YOU ARE] IN A NARROW TUNNEL WITH MIST FLOWING DOWN THE ; WALL. 25CC: 22 64 28 78 38 6B 7D 06 35 0C FF ; Room 147 ; [YOU ARE] IN A NARROW TWISTING CORRIDOR. 25D7: 22 64 28 2E 11 FF ; Room 148 ; [YOU ARE] IN A TWISTING WINDING TUNNEL. 25DD: 22 64 2E 6F 78 FF ; Room 149 ; [YOU ARE] IN A NARROW WINDING TWISTING TUNNEL. 25E3: 22 64 28 6F 2E 78 FF ; Room 150 ; [YOU ARE] IN THE LAIR OF THE DEAD. 25EA: 22 35 7E 67 35 76 FF ; Room 151 ; [YOU ARE] IN A TWISTING HALL WAY ON THE SOUTH SIDE OF A DEEP ; PIT. 25F1: 22 64 2E 37 1C 34 35 02 D1 67 64 EA 6D FF ; Room 152 ; [YOU ARE] IN A GREAT TUNNEL. 25FF: 22 64 29 78 FF ; Room 153 ; [YOU ARE] IN A LARGE CAVERN. 2604: 22 64 1E 68 FF ; Room 154 ; [YOU ARE] IN A GREAT STONE HALL WAY. 2609: 22 64 29 2A 37 1C FF ; Room 155 ; [YOU ARE] IN A WIDE TWISTING CORRIDOR. 2610: 22 64 1A 2E 11 FF ; Room 156 ; [YOU ARE] IN A LARGE CAVERN WITH BONES EVERYWHERE. 2616: 22 64 1E 68 38 3F 73 FF ; Room 157 ; [YOU ARE] IN A WINDING TWISTING NARROW TUNNEL. 261E: 22 64 6F 2E 28 78 FF ; Room 158 ; [YOU ARE] IN THE LAIR OF THE MINOTAUR. 2625: 22 35 7E 67 35 7F FF ; Room 159 ; [YOU ARE] ON A GENTLY SLOPING TRAIL. 262C: 34 64 9C 9D 90 FF ; Room 160 ; [YOU ARE] IN A GREAT TUNNEL WITH BROKEN BONES EVERYWHERE. 2632: 22 64 29 78 38 4D 3F 73 FF ; Room 161 ; [YOU ARE] IN A LARGE STONE CHAMBER. 263B: 22 64 1E 2A 5C FF ; Room 162 ; [YOU ARE] IN A HALL WITH A LARGE STONE CROSS IN THE CENTER. 2641: 22 64 37 38 64 1E 2A 1F 22 35 10 FF ; Room 163 ; [YOU ARE] IN A LARGE WIDE CAVERN. 264D: 22 64 1E 1A 68 FF ; Room 164 ; [YOU ARE] ON A NARROW PATH OVERLOOKING A GREAT PIT. 2653: 34 64 28 CD 80 64 29 6D FF ; Room 165 ; [YOU ARE] AT THE EDGE OF A GREAT BURIED TEMPLE. 265C: 92 35 70 67 64 29 DC E6 FF ; Room 166 ; [YOU ARE] IN A SHALLOW DARK CAVERN. 2665: 22 64 0B 15 68 FF ; Room 167 ; [YOU ARE] IN A GREAT CAVERN FILLED WITH MIST. 266B: 22 64 29 68 36 38 6B FF ; Room 168 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2673: E8 FF ; Room 169 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2675: E8 FF ; Room 170 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2677: E8 FF ; Room 171 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2679: E8 FF ; Room 172 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 267B: E8 FF ; Room 173 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 267D: E8 FF ; Room 174 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 267F: E8 FF ; Room 175 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2681: E8 FF ; Room 176 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2683: E8 FF ; Room 177 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2685: E8 FF ; Room 178 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2687: E8 FF ; Room 179 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2689: E8 FF ; Room 180 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 268B: E8 FF ; Room 181 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 268D: E8 FF ; Room 182 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 268F: E8 FF ; Room 183 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2691: E8 FF ; Room 184 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2693: E8 FF ; Room 185 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2695: E8 FF ; Room 186 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2697: E8 FF ; Room 187 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2699: E8 FF ; Room 188 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 269B: E8 FF ; Room 189 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 269D: E8 FF ; Room 190 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 269F: E8 FF ; Room 191 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26A1: E8 FF ; Room 192 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26A3: E8 FF ; Room 193 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26A5: E8 FF ; Room 194 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26A7: E8 FF ; Room 195 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26A9: E8 FF ; Room 196 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26AB: E8 FF ; Room 197 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26AD: E8 FF ; Room 198 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26AF: E8 FF ; Room 199 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26B1: E8 FF ; Room 200 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26B3: E8 FF ; Room 201 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26B5: E8 FF ; Room 202 ; [YOU ARE] NEAR A GREAT FOREST. 26B7: E2 64 29 B9 FF ; Room 203 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26BC: E8 FF ; Room 204 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26BE: E8 FF ; Room 205 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26C0: E8 FF ; Room 206 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26C2: E8 FF ; Room 207 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26C4: E8 FF ; Room 208 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26C6: E8 FF ; Room 209 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26C8: E8 FF ; Room 210 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26CA: E8 FF ; Room 211 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26CC: E8 FF ; Room 212 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26CE: E8 FF ; Room 213 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26D0: E8 FF ; Room 214 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26D2: E8 FF ; Room 215 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26D4: E8 FF ; Room 216 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26D6: E8 FF ; Room 217 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26D8: E8 FF ; Room 218 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26DA: E8 FF ; Room 219 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26DC: E8 FF ; Room 220 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26DE: E8 FF ; Room 221 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26E0: E8 FF ; Room 222 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26E2: E8 FF ; Room 223 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26E4: E8 FF ; Room 224 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26E6: E8 FF ; Room 225 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26E8: E8 FF ; Room 226 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26EA: E8 FF ; Room 227 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26EC: E8 FF ; Room 228 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26EE: E8 FF ; Room 229 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26F0: E8 FF ; Room 230 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26F2: E8 FF ; Room 231 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26F4: E8 FF ; Room 232 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26F6: E8 FF ; Room 233 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26F8: E8 FF ; Room 234 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26FA: E8 FF ; Room 235 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26FC: E8 FF ; Room 236 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 26FE: E8 FF ; Room 237 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2700: E8 FF ; Room 238 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2702: E8 FF ; Room 239 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2704: E8 FF ; Room 240 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2706: E8 FF ; Room 241 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2708: E8 FF ; Room 242 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 270A: E8 FF ; Room 243 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 270C: E8 FF ; Room 244 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 270E: E8 FF ; Room 245 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2710: E8 FF ; Room 246 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2712: E8 FF ; Room 247 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2714: E8 FF ; Room 248 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2716: E8 FF ; Room 249 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2718: E8 FF ; Room 250 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 271A: E8 FF ; Room 251 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 271C: E8 FF ; Room 252 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 271E: E8 FF ; Room 253 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2720: E8 FF ; Room 254 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2722: E8 FF ; Room 255 ; [YOU ARE] IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ; ALL DIRECTIONS. 2724: E8 FF ;##CommandWords 2726: D5 ; 0 "U" 2727: C4 ; 1 "D" 2728: CE ; 2 "N" 2729: C5 ; 3 "E" 272A: D7 ; 4 "W" 272B: D3 ; 5 "S" 272C: 55 D0 ; 6 "UP" 272E: 44 4F 57 CE ; 7 "DOWN" 2732: 4E 4F 52 54 C8 ; 8 "NORTH" 2737: 45 41 53 D4 ; 9 "EAST" 273B: 57 45 53 D4 ; 10 "WEST" 273F: 53 4F 55 54 C8 ; 11 "SOUTH" 2744: 47 45 D4 ; 12 "GET" 2747: 49 4E D6 ; 13 "INV" 274A: 44 52 4F D0 ; 14 "DROP" 274E: 42 41 43 CB ; 15 "BACK" 2752: 4A 55 4D D0 ; 16 "JUMP" 2756: 4C 41 4D D0 ; 17 "LAMP" 275A: 44 52 49 4E CB ; 18 "DRINK" 275F: 45 41 D4 ; 19 "EAT" 2762: 46 49 4C CC ; 20 "FILL" 2766: 41 53 CB ; 21 "ASK" 2769: 4C 4F 4F CB ; 22 "LOOK" 276D: 53 43 4F 52 C5 ; 23 "SCORE" 2772: 4B 49 4C CC ; 24 "KILL" 2776: 52 55 CE ; 25 "RUN" 2779: 4F 50 45 CE ; 26 "OPEN" 277D: 48 45 4C D0 ; 27 "HELP" 2781: 43 4C 49 4D C2 ; 28 "CLIMB" 2786: 54 49 C5 ; 29 "TIE" 2789: 53 54 41 C2 ; 30 "STAB" 278D: 56 45 54 41 D2 ; 31 "VETAR" 2792: 4D 49 54 52 C1 ; 32 "MITRA" 2797: 4F 4B 4B 41 CE ; 33 "OKKAN" 279C: 41 4B 48 49 52 4F CD ; 34 "AKHIROM" 27A3: 4E 45 52 47 41 CC ; 35 "NERGAL" 27A9: 42 45 4C 52 4F C7 ; 36 "BELROG" 27AF: 43 52 4F CD ; 37 "CROM" 27B3: 49 53 48 54 41 D2 ; 38 "ISHTAR" 27B9: 50 4C 41 D9 ; 39 "PLAY" 27BD: 54 48 52 4F D7 ; 40 "THROW" 27C2: 54 41 4B C5 ; 41 "TAKE" 27C6: 47 52 41 C2 ; 42 "GRAB" 27CA: 51 55 49 45 D4 ; 43 "QUIET" 27CF: 55 4E 43 4C C5 ; 44 "UNCLE" ;##CommandTable ; Pointers to commands 27D4: 0D ED ; U 27D6: 0D F0 ; D 27D8: 0D F3 ; N 27DA: 0D F6 ; E 27DC: 0D F9 ; W 27DE: 0D FC ; S 27E0: 0D ED ; UP 27E2: 0D F0 ; DOWN 27E4: 0D F3 ; NORTH 27E6: 0D F6 ; EAST 27E8: 0D F9 ; WEST 27EA: 0D FC ; SOUTH 27EC: 18 F7 ; GET 27EE: 18 4A ; INV 27F0: 10 BE ; DROP 27F2: 0D DD ; BACK 27F4: 19 AC ; JUMP 27F6: 1A A6 ; LAMP 27F8: 12 DB ; DRINK 27FA: 12 45 ; EAT 27FC: 15 02 ; FILL 27FE: 11 B6 ; ASK 2800: 15 CE ; LOOK 2802: 16 F8 ; SCORE 2804: 17 7C ; KILL 2806: 14 D4 ; RUN 2808: 11 3E ; OPEN 280A: 13 A9 ; HELP 280C: 13 59 ; CLIMB 280E: 13 77 ; TIE 2810: 13 AF ; STAB 2812: 14 12 ; VETAR 2814: 14 26 ; MITRA 2816: 14 32 ; OKKAN 2818: 14 66 ; AKHIROM 281A: 14 87 ; NERGAL 281C: 14 96 ; BELROG 281E: 14 A7 ; CROM 2820: 14 C0 ; ISHTAR 2822: 16 7B ; PLAY 2824: 10 BE ; THROW 2826: 18 F7 ; TAKE 2828: 18 F7 ; GRAB 282A: 17 3F ; QUIET 282C: 0D 5C ; UNCLE ;##PassageDescriptions ; Descriptions of all the passages out of a room ... the one used is random ; ; Message 0 ; HIGH CHAMBER A SMALL OPENING WINDS OUT OF SIGHT TO THE ; SOUTH. 282E: 64 1D 9A 99 9E 67 96 84 35 02 FF ; Message 1 ; A GREAT DOORWAY IS ON THE SOUTH WALL. 2839: 64 29 00 8C 34 35 02 0C FF ; Message 2 ; A GENTLY SLOPING TRAIL WINDS SOUTH. 2842: 64 9C 9D 90 99 02 FF ; Message 3 ; THERE IS A PASSAGE WAY TO THE SOUTH. 2849: 30 8C 64 1B 1C 84 35 02 FF ; Message 4 ; A LARGE DOORWAY IS RECESSED INTO THE SOUTH WALL. 2852: 64 1E 00 8C A0 95 35 02 0C FF ; Message 5 ; A DOORWAY TO THE SOUTH WINDS INTO A CHAMBER. 285C: 64 00 84 35 02 99 95 64 5C FF ; Message 6 ; A SLOPING PASSAGE LEADS TO THE SOUTH. 2866: 64 9D 1B 98 84 35 02 FF ; Message 7 ; A WINDING PASSAGE DISAPPEARS TO THE SOUTH. 286E: 64 6F 1B 97 84 35 02 FF ; Message 8 ; A GREAT DOORWAY IS ON THE WEST WALL. 2876: 64 29 00 8C 34 35 03 0C FF ; Message 9 ; THERE IS A NARROW PASSAGE WAY TO THE WEST. 287F: 30 8C 64 28 1B 1C 84 35 03 FF ; Message 10 ; THERE IS A PASSAGE WAY TO THE WEST. 2889: 30 8C 64 1B 1C 84 35 03 FF ; Message 11 ; A BROKEN TRAIL LEADS WEST. 2892: 64 4D 90 98 03 FF ; Message 12 ; A DOORWAY TO THE WEST WINDS INTO A CHAMBER. 2898: 64 00 84 35 03 99 95 64 5C FF ; Message 13 ; SWIRLING MIST WINDS OUT OF A DOORWAY TO THE WEST. 28A2: 6C 6B 99 9E 67 64 00 84 35 03 FF ; Message 14 ; A WINDING PASSAGE DISAPPEARS TO THE WEST. 28AD: 64 6F 1B 97 84 35 03 FF ; Message 15 ; A TWISTING TRAIL LEADS WEST. 28B5: 64 2E 90 98 03 FF ; Message 16 ; THERE IS A NARROW PASSAGE WAY TO THE EAST. 28BB: 30 8C 64 28 1B 1C 84 35 04 FF ; Message 17 ; THERE IS A GREAT HOLE IN THE EAST WALL. 28C5: 30 8C 64 29 9F 22 35 04 0C FF ; Message 18 ; A BROKEN TRAIL LEADS EAST. 28CF: 64 4D 90 98 04 FF ; Message 19 ; A WIDE OPENING ON THE EAST WALL DISAPPEARS INTO THE DARK. 28D5: 64 1A 9A 34 35 04 0C 97 95 35 15 FF ; Message 20 ; SWIRLING MIST WINDS OUT OF A DOORWAY TO THE EAST. 28E1: 6C 6B 99 9E 67 64 00 84 35 04 FF ; Message 21 ; A GREAT HALL DISAPPEARS TO THE EAST. 28EC: 64 29 37 97 84 35 04 FF ; Message 22 ; A TWISTING TRAIL LEADS EAST. 28F4: 64 2E 90 98 04 FF ; Message 23 ; A SUNKEN TRAIL LEADS EAST. 28FA: 64 6E 90 98 04 FF ; Message 24 ; A SMALL OPENING WINDS OUT OF SIGHT TO THE NORTH. 2900: 64 1D 9A 99 9E 67 96 84 35 01 FF ; Message 25 ; THERE IS A GREAT HOLE IN THE NORTH WALL. 290B: 30 8C 64 29 9F 22 35 01 0C FF ; Message 26 ; A GENTLY SLOPING TRAIL WINDS NORTH. 2915: 64 9C 9D 90 99 01 FF ; Message 27 ; A WIDE OPENING ON THE NORTH WALL DISAPPEARS INTO THE DARK. 291C: 64 1A 9A 34 35 01 0C 97 95 35 15 FF ; Message 28 ; A LARGE DOORWAY IS RECESSED INTO THE NORTH WALL. 2928: 64 1E 00 8C A0 95 35 01 0C FF ; Message 29 ; A GREAT HALL DISAPPEARS TO THE NORTH. 2932: 64 29 37 97 84 35 01 FF ; Message 30 ; A SLOPING PASSAGE LEADS TO THE NORTH. 293A: 64 9D 1B 98 84 35 01 FF ; Message 31 ; A SUNKEN TRAIL LEADS NORTH. 2942: 64 6E 90 98 01 FF ; Message 32 ; A SWIRLING MIST WINDS UP A STAIR WAY. 2948: 64 6C 6B 99 05 64 61 1C FF ; Message 33 ; THERE IS A HOLE IN THE FLOOR. 2951: 30 8C 64 9F 22 35 40 FF ; Message 34 ; THERE IS A LARGE OPENING IN THE FLOOR. 2959: 30 8C 64 1E 9A 22 35 40 FF ; Message 35 ; A LARGE OPENING LEADS DOWN. 2962: 64 1E 9A 98 06 FF ; Message 36 ; YOU ARE AT THE TOP OF A TWISTING STAIR WAY. 2968: 9B 31 92 35 A2 67 64 2E 61 1C FF ; Message 37 ; A STAIR WAY LEADS DOWN. 2973: 64 61 1C 98 06 FF ; Message 38 ; YOU ARE AT THE TOP OF A PIT. 2979: 9B 31 92 35 A2 67 64 6D FF ; Message 39 ; A TWISTING TRAIL LEADS DOWN. 2982: 64 2E 90 98 06 FF ; Message 40 ; A SWIRLING MIST WINDS DOWN A STAIR WAY. 2988: 64 6C 6B 99 06 64 61 1C FF ; Message 41 ; THERE IS A HOLE IN THE CEILING. 2991: 30 8C 64 9F 22 35 0A FF ; Message 42 ; THERE IS A LARGE OPENING IN THE CEILING. 2999: 30 8C 64 1E 9A 22 35 0A FF ; Message 43 ; A LARGE OPENING LEADS UP. 29A2: 64 1E 9A 98 05 FF ; Message 44 ; YOU ARE AT THE BOTTOM OF A TWISTING STAIR WAY. 29A8: 9B 31 92 35 A1 67 64 2E 61 1C FF ; Message 45 ; A STAIR WAY LEADS UP. 29B3: 64 61 1C 98 05 FF ; Message 46 ; YOU ARE AT THE BOTTOM OF A PIT. 29B9: 9B 31 92 35 A1 67 64 6D FF ; Message 47 ; A TWISTING TRAIL LEADS UP. 29C2: 64 2E 90 98 05 FF ;##MiscStrings ; Misc Strings ; Message 0 ; BUT IT IS BLOCKED. 29C8: 07 D2 8C 09 FF ; Message 1 ; THE LAMP IS OFF. 29CD: 35 A6 8C 8F FF ; Message 2 ; THE LAMP IS ON. 29D2: 35 A6 8C 34 FF ; Message 3 ; THE MINOTAUR IS ATTACKING. 29D7: 35 7F 8C F0 FF ; Message 4 ; THE TROGLODYTE IS ATTACKING. 29DC: 35 BB 8C F0 FF ; Message 5 ; THE SATYR IS ATTACKING. 29E1: 35 AD 8C F0 FF ; Message 6 ; THERE IS NO OIL IN THE LAMP. 29E6: 30 8C 44 F1 22 35 A6 FF ; Message 7 ; THE ROOM IS FILLED WITH MIST AND THE ORACLE DISAPPEARS. 29EE: 35 3C 8C 36 38 6B 2F 35 AE 97 FF ; Message 8 ; THERE IS NOTHING IN THE URN. 29F9: 30 8C 93 22 35 A9 FF ; Message 9 ; THE URN IS FILLED WITH OIL. 2A00: 35 A9 8C 36 38 F1 FF ; Message 10 ; THE SCORPION DISAPPEARS. 2A07: 35 AB 97 FF ; Message 11 ; THE BOTTLE IS EMPTY. 2A0B: 35 B8 8C 47 FF ; Message 12 ; THE BOTTLE IS FILLED WITH WATER. 2A10: 35 B8 8C 36 38 2D FF ; Message 13 ; YOU CAN NOT SEE IN THE DIM LIGHT. 2A17: 9B DE D5 62 22 35 CC 14 FF ; Message 14 ; THE BOTTLE IS EMPTY. 2A20: 35 B8 8C 47 FF ; Message 15 ; THERE IS A SMALL PIT IN THE CORNER OF THE ROOM. 2A25: 30 8C 64 1D 6D 22 35 0F 67 35 3C FF ; Message 16 ; THERE IS A POOL OF OIL ON THE FLOOR. 2A31: 30 08 2C 67 F1 34 35 40 FF ;##CodeBug5 ; This message is only used for "THERE IS NO WATER HERE." The ; word "WATER" was left out. ; Message 17 ; THERE IS NO HERE. 2A3A: 30 8C 44 85 FF ; Message 18 ; THE SCARAB IS GLOWING. 2A3F: 35 C7 8C EF FF ; Message 19 ; YOUR SIGHT IS DIM. 2A44: 91 96 8C CC FF ;##PhraseList 2A49: 49 20 44 4F 20 4E 4F 54 20 53 45 45 20 41 4E D9 ; 0 "I DO NOT SEE ANY" 2A59: 49 54 27 53 20 54 4F 4F 20 42 55 4C 4B 59 2E 8D ; 1 "IT'S TOO BULKY.*" 2A69: 49 54 27 53 20 54 4F 4F 20 48 45 41 56 59 2E 8D ; 2 "IT'S TOO HEAVY.*" 2A79: 4F 4B 8D ; 3 "OK*" 2A7C: 45 52 52 4F D2 ; 4 "ERROR" 2A81: 00 0D 49 20 44 4F 4E 27 54 20 55 4E 44 45 52 53 54 41 4E 44 20 54 48 41 54 AE ; 5 "**I DON'T UNDERSTAND THAT." 2A9B: 59 4F 55 20 41 52 45 20 48 4F 4C 44 49 4E 47 BA ; 6 "YOU ARE HOLDING:" 2AAB: 59 4F 55 20 44 4F 4E 27 54 20 48 41 56 45 20 54 48 41 54 2E 8D ; 7 "YOU DON'T HAVE THAT.*" 2AC0: 44 4F 4E 27 54 20 42 45 20 52 49 44 49 43 55 4C 4F 55 53 2E 8D ; 8 "DON'T BE RIDICULOUS.*" 2AD5: 08 AE ; 9 "*." 2AD7: 57 45 4C 43 4F 4D 45 20 54 4F 20 54 48 45 20 4C 41 42 59 52 49 4E 54 48 21 21 20 42 45 57 41 52 45 20 4F 46 20 54 48 45 20 4D 49 4E 4F 54 41 55 52 20 41 4E 44 20 47 4F 4F 44 20 4C 55 43 4B AE ; 10 "WELCOME TO THE LABYRINTH!! BEWARE OF THE MINOTAUR AND GOOD LUCK." 2B17: 59 4F 55 20 44 52 4F 50 50 45 44 20 54 48 C5 ; 11 "YOU DROPPED THE" 2B26: 49 54 27 53 20 44 41 52 4B 20 41 4E 44 20 59 4F 55 20 43 41 4E 27 54 20 53 45 45 20 2D 20 49 46 20 59 4F 55 20 43 4F 4E 54 49 4E 55 45 2C 20 59 4F 55 20 4D 41 59 20 46 41 4C 4C AE ; 12 "IT'S DARK AND YOU CAN'T SEE - IF YOU CONTINUE, YOU MAY FALL." 2B62: 59 4F 55 20 48 41 56 45 20 4A 55 53 54 20 46 41 4C 4C 45 4E 20 49 4E 54 4F 20 41 20 50 49 54 20 41 4E 44 20 4B 49 4C 4C 45 44 20 59 4F 55 52 53 45 4C 46 2E 8D ; 13 "YOU HAVE JUST FALLEN INTO A PIT AND KILLED YOURSELF.*" 2B97: 0D 59 4F 55 52 20 4C 41 4D 50 20 48 41 53 20 4A 55 53 54 20 47 4F 4E 45 20 4F 46 46 2E 8D ; 14 "*YOUR LAMP HAS JUST GONE OFF.*" 2BB5: 41 53 4B 20 57 48 4F BF ; 15 "ASK WHO?" 2BBD: 41 20 4D 59 53 54 45 52 49 4F 55 53 20 43 41 4C 4D 20 53 45 54 54 4C 45 53 20 4F 56 45 52 20 54 48 45 20 52 4F 4F 4D 20 41 53 20 54 48 45 20 4F 52 41 43 4C 45 20 53 50 45 41 4B 53 2E 2E AE ; 16 "A MYSTERIOUS CALM SETTLES OVER THE ROOM AS THE ORACLE SPEAKS..." 2BFC: 59 4F 55 20 4D 55 53 54 20 50 4F 53 53 45 53 53 20 54 48 C5 ; 17 "YOU MUST POSSESS THE" 2C10: 54 48 41 4E 4B 20 59 4F 55 2C 20 49 20 4E 45 45 44 45 44 20 54 48 41 54 2E 8D ; 18 "THANK YOU, I NEEDED THAT.*" 2C2A: 49 54 20 57 41 53 20 59 55 4D 4D 59 2E 8D ; 19 "IT WAS YUMMY.*" 2C38: 54 48 45 20 53 43 4F 52 50 49 4F 4E 27 53 20 53 54 49 4E 47 20 48 41 53 20 42 45 45 4E 20 43 55 52 45 44 2E 8D ; 20 "THE SCORPION'S STING HAS BEEN CURED.*" 2C5D: 54 48 41 54 20 49 53 20 56 45 52 59 20 53 54 52 4F 4E 47 20 4D 45 44 49 43 49 4E 45 2E 8D ; 21 "THAT IS VERY STRONG MEDICINE.*" 2C7B: 57 49 54 48 20 57 48 41 54 BF ; 22 "WITH WHAT?" 2C85: 49 20 44 4F 4E 27 54 20 53 45 45 20 41 4E 59 54 48 49 4E 47 20 49 4E 54 45 52 45 53 54 49 4E 47 2E 8D ; 23 "I DON'T SEE ANYTHING INTERESTING.*" 2CA7: 54 4F 20 4C 45 41 52 4E 20 54 48 45 20 53 45 43 52 45 54 20 4F 46 20 54 48 C5 ; 24 "TO LEARN THE SECRET OF THE" 2CC1: 49 4E 20 41 20 52 45 46 4C 45 43 54 49 4F 4E 20 49 4E 20 54 48 45 20 50 4F 4F 4C 20 59 4F 55 20 43 41 4E 20 52 45 41 44 20 54 48 45 20 46 4F 4C 4C 4F 57 49 4E 47 20 57 4F 52 44 53 20 4F 4E 20 54 48 45 20 43 45 49 4C 49 4E 47 2E 2E AE ; 25 "IN A REFLECTION IN THE POOL YOU CAN READ THE FOLLOWING WORDS ON THE CEILING..." 2D0F: 54 48 45 20 55 52 4E 20 49 53 20 46 55 4C 4C 20 4F 46 20 4F 49 4C 2E 8D ; 26 "THE URN IS FULL OF OIL.*" 2D27: 59 4F 55 20 48 41 56 45 20 53 43 4F 52 45 C4 ; 27 "YOU HAVE SCORED" 2D36: 20 50 4F 49 4E 54 53 20 4F 55 54 20 4F 46 20 41 20 54 4F 54 41 4C 20 4F 46 20 32 34 30 20 50 4F 49 4E 54 53 2E 0D 50 48 59 53 20 43 4F 4E 44 20 3D A0 ; 28 " POINTS OUT OF A TOTAL OF 240 POINTS.*PHYS COND = " 2D68: 54 48 45 20 46 4C 4F 4F 52 20 55 4E 44 45 52 20 59 4F 55 20 48 41 53 20 4A 55 53 54 20 43 41 56 45 44 20 49 4E 21 21 8D ; 29 "THE FLOOR UNDER YOU HAS JUST CAVED IN!!*" 2D90: 59 4F 55 20 44 4F 4E 27 54 20 48 41 56 45 20 54 48 45 20 4C 41 4D 50 2E 8D ; 30 "YOU DON'T HAVE THE LAMP.*" 2DA9: 49 4E 20 48 49 53 20 44 59 49 4E 47 20 45 46 46 4F 52 54 20 54 48 C5 ; 31 "IN HIS DYING EFFORT THE" 2DC0: 50 55 4C 4C 53 20 54 48 C5 ; 32 "PULLS THE" 2DC9: 46 52 4F 4D 20 41 20 42 41 47 20 41 4E 44 20 54 48 52 4F 57 53 20 49 54 20 42 45 46 4F 52 45 20 48 45 20 44 49 53 41 50 50 45 41 52 53 20 49 4E 20 41 20 50 55 46 46 20 4F 46 20 50 55 52 50 4C 45 20 53 4D 4F 4B 45 AE ; 33 "FROM A BAG AND THROWS IT BEFORE HE DISAPPEARS IN A PUFF OF PURPLE SMOKE." 2E11: 59 4F 55 20 4D 49 53 53 45 44 2E 8D ; 34 "YOU MISSED.*" 2E1D: 59 4F 55 20 4E 4F 57 20 4B 4E 4F 57 20 54 48 45 20 53 45 43 52 45 54 20 4F 46 20 54 48 45 20 4D 41 47 49 43 20 53 50 45 4C CC ; 35 "YOU NOW KNOW THE SECRET OF THE MAGIC SPELL" 2E47: 2D 20 59 4F 55 20 57 49 4C 4C 20 44 49 53 43 4F 56 45 52 20 54 48 45 20 53 45 43 52 45 54 20 4F 46 20 54 48 45 20 4E 45 58 54 20 53 50 45 4C 4C 20 49 46 20 59 4F 55 20 50 4F 53 53 45 53 53 20 54 48 C5 ; 36 "- YOU WILL DISCOVER THE SECRET OF THE NEXT SPELL IF YOU POSSESS THE" 2E8A: 54 48 45 20 47 52 4F 55 4E 44 20 49 53 20 53 48 41 4B 49 4E 47 21 8D ; 37 "THE GROUND IS SHAKING!*" 2EA1: 54 48 45 20 54 4F 50 20 57 4F 4E 27 54 20 42 55 44 47 45 2E 8D ; 38 "THE TOP WON'T BUDGE.*" 2EB6: 41 20 43 4C 4F 55 44 20 4F 46 20 53 4D 4F 4B 45 20 46 49 4C 4C 53 20 54 48 45 20 52 4F 4F 4D 20 41 4E 44 20 41 4E 20 45 45 52 49 45 20 48 4F 57 4C 20 45 43 48 4F 53 20 4F 46 46 20 54 48 45 20 57 41 4C 4C 53 20 41 53 20 54 48 45 20 54 4F 50 20 46 41 4C 4C 53 20 53 48 55 54 2E 8D ; 39 "A CLOUD OF SMOKE FILLS THE ROOM AND AN EERIE HOWL ECHOS OFF THE WALLS AS THE TOP FALLS SHUT.*" 2F13: 59 4F 55 20 48 41 56 45 20 53 54 55 4D 42 4C 45 44 20 41 4E 44 20 46 41 4C 4C 45 4E AE ; 40 "YOU HAVE STUMBLED AND FALLEN." 2F30: 59 4F 55 20 48 41 56 45 20 44 49 45 44 20 46 52 4F 4D 20 45 58 48 41 55 53 54 49 4F 4E 20 41 4E 44 20 57 4F 55 4E 44 53 AE ; 41 "YOU HAVE DIED FROM EXHAUSTION AND WOUNDS." 2F59: 41 20 44 55 4C 4C 2C 20 45 45 52 49 45 20 47 4C 4F 57 20 49 53 20 45 4D 41 4E 41 54 49 4E 47 20 46 52 4F 4D 20 42 45 48 49 4E 44 20 41 20 50 49 4C 45 20 4F 46 20 52 4F 43 4B 53 AE ; 42 "A DULL, EERIE GLOW IS EMANATING FROM BEHIND A PILE OF ROCKS." 2F95: 42 59 20 50 4C 41 59 49 4E 47 20 54 48 45 20 46 4C 55 54 45 20 41 43 43 4F 52 44 49 4E 47 20 54 4F 20 41 20 53 4F 4E 47 20 4F 4E 20 54 48 45 20 50 41 52 43 48 4D 45 4E 54 2C 20 41 20 53 45 43 52 45 54 20 4C 45 44 47 45 20 48 41 53 20 42 45 45 4E 20 45 58 50 4F 53 45 44 2E 8D ; 43 "BY PLAYING THE FLUTE ACCORDING TO A SONG ON THE PARCHMENT, A SECRET LEDGE HAS BEEN EXPOSED.*" 2FF1: 41 20 50 4F 57 45 52 46 55 4C 20 47 55 53 54 20 4F 46 20 57 49 4E 44 20 48 41 53 20 42 4C 4F 57 4E 20 54 48 45 20 4C 41 4D 50 20 4F 55 54 20 4F 46 20 59 4F 55 52 20 47 52 41 53 50 2E 8D ; 44 "A POWERFUL GUST OF WIND HAS BLOWN THE LAMP OUT OF YOUR GRASP.*" 302F: 41 20 4E 49 4E 45 2D 48 45 41 44 45 44 20 48 59 44 52 41 20 42 4C 4F 43 4B 53 20 59 4F 55 52 20 50 41 53 53 41 47 45 2E 8D ; 45 "A NINE-HEADED HYDRA BLOCKS YOUR PASSAGE.*" 3058: 41 20 4D 41 47 49 43 20 53 50 45 4C 4C 20 48 41 53 20 50 55 53 48 45 44 20 59 4F 55 20 42 41 43 4B 20 4F 55 54 20 4F 46 20 54 48 49 53 20 52 4F 4F 4D 2E 8D ; 46 "A MAGIC SPELL HAS PUSHED YOU BACK OUT OF THIS ROOM.*" 308C: 4F 4E 45 20 4F 46 20 54 48 45 20 48 59 44 52 41 27 53 20 48 45 41 44 53 20 49 53 20 4C 4F 50 50 45 44 20 4F 46 46 2C 20 42 55 54 20 41 4E 4F 54 48 45 52 20 4F 4E 45 20 54 41 4B 45 53 20 49 54 53 20 50 4C 41 43 45 20 41 4E 44 20 53 4E 45 45 52 53 20 41 54 20 59 4F 55 2E 8D ; 47 "ONE OF THE HYDRA'S HEADS IS LOPPED OFF, BUT ANOTHER ONE TAKES ITS PLACE AND SNEERS AT YOU.*" 30E7: 41 20 56 45 52 59 20 50 4F 57 45 52 46 55 4C 20 4D 41 47 49 43 20 46 4F 52 43 45 20 53 54 52 49 4B 45 53 20 59 4F 55 20 41 4E 44 20 44 52 49 56 45 53 20 59 4F 55 20 42 41 43 4B 2E 8D ; 48 "A VERY POWERFUL MAGIC FORCE STRIKES YOU AND DRIVES YOU BACK.*" 3124: 41 20 4D 59 53 54 45 52 49 4F 55 53 20 46 4F 47 20 42 45 47 49 4E 53 20 52 49 53 49 4E 47 20 46 52 4F 4D 20 54 48 45 20 46 4C 4F 4F 52 21 8D ; 49 "A MYSTERIOUS FOG BEGINS RISING FROM THE FLOOR!*" 3153: 54 48 45 20 50 4F 49 53 4F 4E 20 46 4F 47 20 48 41 53 20 4B 49 4C 4C 45 44 20 59 4F 55 21 8D ; 50 "THE POISON FOG HAS KILLED YOU!*" 3172: 49 54 27 53 20 50 4F 49 53 4F 4E 4F 55 53 21 21 8D ; 51 "IT'S POISONOUS!!*" 3183: 41 20 4C 41 59 45 52 20 4F 46 20 4D 49 53 54 20 4F 42 53 43 55 52 45 53 20 54 48 45 20 45 41 53 54 20 57 41 4C 4C 2E 8D ; 52 "A LAYER OF MIST OBSCURES THE EAST WALL.*" 31AB: 54 48 45 20 4C 49 47 48 54 20 47 52 4F 57 53 20 53 54 52 4F 4E 47 45 52 20 55 4E 54 49 4C 20 54 48 45 20 45 4E 54 49 52 45 20 52 4F 4F 4D 20 49 53 20 42 41 54 48 45 44 20 49 4E 20 49 54 53 20 47 4C 4F 57 2E 8D ; 53 "THE LIGHT GROWS STRONGER UNTIL THE ENTIRE ROOM IS BATHED IN ITS GLOW.*" 31F1: 4E 4F 54 48 49 4E 47 20 53 50 45 43 49 41 4C 20 48 41 50 50 45 4E 53 2E 8D ; 54 "NOTHING SPECIAL HAPPENS.*" 320A: 41 20 56 45 52 59 20 4D 41 44 20 48 59 44 52 41 20 49 53 20 54 49 45 44 20 55 50 20 48 45 52 45 2E 8D ; 55 "A VERY MAD HYDRA IS TIED UP HERE.*" 322C: 41 4E 20 45 45 52 49 45 20 50 48 4F 53 50 48 4F 52 45 53 43 45 4E 54 20 47 4C 4F 57 20 46 49 4C 4C 53 20 54 48 45 20 45 4E 54 49 52 45 20 52 4F 4F 4D 21 8D ; 56 "AN EERIE PHOSPHORESCENT GLOW FILLS THE ENTIRE ROOM!*" 3260: 44 4F 4E 27 54 20 41 53 4B 20 4D 45 20 46 4F 52 20 48 45 4C 50 20 2D 20 59 4F 55 20 47 4F 54 20 59 4F 55 52 53 45 4C 46 20 49 4E 54 4F 20 54 48 49 53 20 4D 45 53 53 21 8D ; 57 "DON'T ASK ME FOR HELP - YOU GOT YOURSELF INTO THIS MESS!*" 3299: 59 4F 55 20 48 41 56 45 20 4A 55 53 54 20 57 41 4C 4B 45 44 20 54 48 52 4F 55 47 48 20 41 4E 20 45 4E 43 48 41 4E 54 45 44 20 41 55 52 41 2E 8D ; 58 "YOU HAVE JUST WALKED THROUGH AN ENCHANTED AURA.*" 32C9: 54 48 45 20 41 49 52 20 49 53 20 43 52 41 43 4B 4C 49 4E 47 20 57 49 54 48 20 45 4E 43 48 41 4E 54 4D 45 4E 54 AE ; 59 "THE AIR IS CRACKLING WITH ENCHANTMENT." 32EF: 54 48 45 20 4C 41 4D 50 20 49 53 20 46 4C 49 43 4B 45 52 49 4E 47 2E 8D ; 60 "THE LAMP IS FLICKERING.*" 3307: 54 48 45 20 48 59 44 52 41 20 49 53 20 44 45 41 44 21 8D ; 61 "THE HYDRA IS DEAD!*" 331A: 41 20 50 41 43 4B 52 41 54 20 53 43 55 52 52 49 45 53 20 49 4E 54 4F 20 41 20 53 4D 41 4C 4C 20 48 4F 4C 45 AE ; 62 "A PACKRAT SCURRIES INTO A SMALL HOLE." 333F: 54 48 41 4E 4B 20 54 48 45 20 50 41 43 4B 52 41 54 20 46 4F 52 20 54 48 49 53 20 54 52 45 41 53 55 52 45 A1 ; 63 "THANK THE PACKRAT FOR THIS TREASURE!" 3363: 49 53 20 4E 4F 57 20 4C 41 59 49 4E 47 20 41 54 20 59 4F 55 52 20 46 45 45 54 21 8D ; 64 "IS NOW LAYING AT YOUR FEET!*" 337F: 54 48 45 20 57 41 4C 4C 53 20 4F 46 20 54 48 49 53 20 52 4F 4F 4D 20 41 52 45 20 41 20 56 45 52 59 20 53 54 52 41 4E 47 45 20 43 4F 4C 4F 52 21 8D ; 65 "THE WALLS OF THIS ROOM ARE A VERY STRANGE COLOR!*" 33B0: 59 4F 55 52 20 4A 55 4D 50 49 4E 47 20 41 42 49 4C 49 54 59 20 49 53 20 4E 4F 54 20 41 53 20 47 4F 4F 44 20 41 53 20 49 54 20 4F 4E 43 45 20 57 41 53 20 2D 20 59 4F 55 20 48 41 56 45 20 46 41 4C 4C 45 4E 20 41 4E 44 20 44 49 45 44 2E 8D ; 66 "YOUR JUMPING ABILITY IS NOT AS GOOD AS IT ONCE WAS - YOU HAVE FALLEN AND DIED.*" 33FF: 43 4F 4E 47 52 41 54 55 4C 41 54 49 4F 4E 53 21 21 21 20 59 4F 55 20 57 49 4E 21 8D ; 67 "CONGRATULATIONS!!! YOU WIN!*" 341B: 57 48 41 54 3F 8D ; 68 "WHAT?*" 3421: 54 48 45 20 50 41 52 43 48 4D 45 4E 54 20 48 41 53 20 41 20 53 43 4F 52 45 20 4F 4E 20 49 54 AE ; 69 "THE PARCHMENT HAS A SCORE ON IT." 3441: 41 20 42 4F 4C 54 20 4F 46 20 4C 49 47 48 54 4E 49 4E 47 20 55 4E 42 4C 4F 43 4B 53 20 54 48 45 20 50 41 53 53 41 47 45 21 21 21 8D ; 70 "A BOLT OF LIGHTNING UNBLOCKS THE PASSAGE!!!*" 346D: 59 4F 55 20 4D 55 53 54 20 42 45 20 4B 49 44 44 49 4E 47 21 8D ; 71 "YOU MUST BE KIDDING!*" 3482: 4F 55 43 48 21 21 20 54 48 41 54 20 48 55 52 54 2E 8D ; 72 "OUCH!! THAT HURT.*" 3494: 54 48 45 20 53 43 4F 52 50 49 4F 4E 20 48 41 53 20 4A 55 53 54 20 53 54 55 4E 47 20 59 4F 55 AE ; 73 "THE SCORPION HAS JUST STUNG YOU." 34B4: 59 4F 55 20 48 41 56 45 20 44 49 45 44 20 46 52 4F 4D 20 41 20 53 43 4F 52 50 49 4F 4E 20 42 49 54 45 2E 8D ; 74 "YOU HAVE DIED FROM A SCORPION BITE.*" 34D8: 59 4F 55 20 50 55 54 20 55 50 20 41 20 47 4F 4F 44 20 46 49 47 48 54 2C 20 42 45 54 54 45 52 20 4C 55 43 4B 20 4E 45 58 54 20 54 49 4D 45 2E 8D ; 75 "YOU PUT UP A GOOD FIGHT, BETTER LUCK NEXT TIME.*" ;##ObjectToNameMap ; Object to name map ; 3508: FF ; 0 "" 3509: 94 ; 1 "FOOD" 350A: B8 ; 2 "BOTTLE" 350B: 26 ; 3 "DAGGER" 350C: C9 ; 4 "MACE" 350D: 5F ; 5 "AX" 350E: 52 ; 6 "SWORD" 350F: 53 ; 7 "SHIELD" 3510: 24 ; 8 "FLUTE" 3511: CA ; 9 "MUSHROOM" 3512: A4 ; 10 "PENDANT" 3513: A5 ; 11 "SCEPTER" 3514: A6 ; 12 "LAMP" 3515: 27 ; 13 "BASKET" 3516: A7 ; 14 "PARCHMENT" 3517: A8 ; 15 "VIAL" 3518: A9 ; 16 "URN" 3519: C1 ; 17 "TALISMAN" 351A: B7 ; 18 "SCROLL" 351B: C2 ; 19 "GOBLET" 351C: 66 ; 20 "SKULL" 351D: C7 ; 21 "SCARAB" 351E: E5 ; 22 "JEWELBOX" 351F: C4 ; 23 "TABLET" 3520: CE ; 24 "ROPE" 3521: BA ; 25 "SPRITE" 3522: BB ; 26 "TROGLODYTE" 3523: AB ; 27 "SCORPION" 3524: AC ; 28 "NYMPH" 3525: AD ; 29 "SATYR" 3526: 7F ; 30 "MINOTAUR" 3527: AE ; 31 "ORACLE" 3528: 81 ; 32 "GOLD" 3529: 25 ; 33 "SILVER" 352A: AF ; 34 "DIAMOND" 352B: B0 ; 35 "SPELLBOOK" 352C: BF ; 36 "RUBY" 352D: B2 ; 37 "FLEECE" 352E: B3 ; 38 "TIARA" 352F: B4 ; 39 "POWDER" 3530: B5 ; 40 "AMULET" 3531: B6 ; 41 "POTION" 3532: BC ; 42 "POWERRING" 3533: BD ; 43 "LIGHTRING" 3534: BE ; 44 "TRUTHRING" 3535: C0 ; 45 "CROWN" 3536: FA ; 46 "OPAL" 3537: FB ; 47 "SAPPHIRE" 3538: 01 ; 48 "NORTH" ? Objects removed from code or never added ? 3539: 01 ; 49 "NORTH" 353A: 01 ; 50 "NORTH" 353B: 01 ; 51 "NORTH" 353C: 01 ; 52 "NORTH" 353D: 01 ; 53 "NORTH" 353E: 01 ; 54 "NORTH" 353F: F2 ; 55 "VETAR" 3540: F3 ; 56 "MITRA" 3541: F4 ; 57 "OKKAN" 3542: F5 ; 58 "AKHIROM" 3543: F6 ; 59 "NERGAL" 3544: F7 ; 60 "BELROG" 3545: F8 ; 61 "CROM" 3546: F9 ; 62 "ISHTAR" 3547: 00 00 00 ;##ObjectWeightAndBulk ; Object weight and bulk table ; Weight Bulk 354A: 07 07 ; "FOOD" 354C: 07 07 ; "BOTTLE" 354E: 28 14 ; "DAGGER" 3550: 3C 3C ; "MACE" 3552: 3C 3C ; "AX" 3554: 46 28 ; "SWORD" 3556: 3C 32 ; "SHIELD" 3558: 1E 14 ; "FLUTE" 355A: 32 1E ; "MUSHROOM" 355C: 1E 28 ; "PENDANT" 355E: 32 41 ; "SCEPTER" 3560: 06 06 ; "LAMP" 3562: 14 00 ; "BASKET" 3564: 23 28 ; "PARCHMENT" 3566: 2D 32 ; "VIAL" 3568: 32 6E ; "URN" 356A: 28 28 ; "TALISMAN" 356C: 28 32 ; "SCROLL" 356E: 28 46 ; "GOBLET" 3570: 28 28 ; "SKULL" 3572: 1E 32 ; "SCARAB" 3574: 1E 46 ; "JEWELBOX" 3576: 32 55 ; "TABLET" 3578: 28 3C ; "ROPE" 357A: 00 00 ; "SPRITE" 357C: 00 00 ; "TROGLODYTE" 357E: 00 00 ; "SCORPION" 3580: 00 00 ; "NYMPH" 3582: 00 00 ; "SATYR" 3584: 00 00 ; "MINOTAUR" 3586: 00 00 ; "ORACLE" 3588: 64 1E ; "GOLD" 358A: 46 32 ; "SILVER" 358C: 28 32 ; "DIAMOND" 358E: 46 50 ; "SPELLBOOK" 3590: 28 3C ; "RUBY" 3592: 5A 50 ; "FLEECE" 3594: 32 37 ; "TIARA" 3596: 3C 28 ; "POWDER" 3598: 5A 2D ; "AMULET" 359A: 46 46 ; "POTION" 359C: 5A 5A ; "POWERRING" 359E: 5A 5A ; "LIGHTRING" 35A0: 5A 5A ; "TRUTHRING" 35A2: 50 32 ; "CROWN" 35A4: 28 28 ; "OPAL" 35A6: 3C 3C ; "SAPPHIRE" ; 35A8: 00 00 ; "NORTH" ? Objects removed from code or never added ? 35AA: 00 00 ; "NORTH" 35AC: 00 00 ; "NORTH" 35AE: 00 00 ; "NORTH" 35B0: 00 00 ; "NORTH" 35B2: 00 00 ; "NORTH" 35B4: 00 00 ; "NORTH" ; 35B6: 00 00 ; "VETAR" 35B8: 00 00 ; "MITRA" 35BA: 00 00 ; "OKKAN" 35BC: 00 00 ; "AKHIROM" 35BE: 00 00 ; "NERGAL" 35C0: 00 00 ; "BELROG" 35C2: 00 00 ; "CROM" 35C4: 00 00 ; "ISHTAR" ;##WordList 35C6: 44 4F 4F 52 57 41 D9 ; 0 "DOORWAY" 35CD: 4E 4F 52 54 C8 ; 1 "NORTH" 35D2: 53 4F 55 54 C8 ; 2 "SOUTH" 35D7: 57 45 53 D4 ; 3 "WEST" 35DB: 45 41 53 D4 ; 4 "EAST" 35DF: 55 D0 ; 5 "UP" 35E1: 44 4F 57 CE ; 6 "DOWN" 35E5: 42 55 D4 ; 7 "BUT" 35E8: 49 53 20 C1 ; 8 "IS A" 35EC: 42 4C 4F 43 4B 45 C4 ; 9 "BLOCKED" 35F3: 43 45 49 4C 49 4E C7 ; 10 "CEILING" 35FA: 53 48 41 4C 4C 4F D7 ; 11 "SHALLOW" 3601: 57 41 4C CC ; 12 "WALL" 3605: 48 49 47 C8 ; 13 "HIGH" 3609: 4C 4F D7 ; 14 "LOW" 360C: 43 4F 52 4E 45 D2 ; 15 "CORNER" 3612: 43 45 4E 54 45 D2 ; 16 "CENTER" 3618: 43 4F 52 52 49 44 4F D2 ; 17 "CORRIDOR" 3620: 4C 45 56 45 CC ; 18 "LEVEL" 3625: 43 41 52 56 49 4E 47 D3 ; 19 "CARVINGS" 362D: 4C 49 47 48 D4 ; 20 "LIGHT" 3632: 44 41 52 CB ; 21 "DARK" 3636: 54 4F 52 43 C8 ; 22 "TORCH" 363B: 53 4B 45 4C 45 54 4F CE ; 23 "SKELETON" 3643: 4E 41 52 43 49 53 53 55 D3 ; 24 "NARCISSUS" 364C: 50 4C 41 4E 54 D3 ; 25 "PLANTS" 3652: 57 49 44 C5 ; 26 "WIDE" 3656: 50 41 53 53 41 47 C5 ; 27 "PASSAGE" 365D: 57 41 D9 ; 28 "WAY" 3660: 53 4D 41 4C CC ; 29 "SMALL" 3665: 4C 41 52 47 C5 ; 30 "LARGE" 366A: 43 52 4F 53 D3 ; 31 "CROSS" 366F: 4C 4F 4E C7 ; 32 "LONG" 3673: 53 54 55 43 CB ; 33 "STUCK" 3678: 49 CE ; 34 "IN" 367A: 4D 41 47 49 C3 ; 35 "MAGIC" 367F: 46 4C 55 54 C5 ; 36 "FLUTE" 3684: 53 49 4C 56 45 D2 ; 37 "SILVER" 368A: 44 41 47 47 45 D2 ; 38 "DAGGER" 3690: 42 41 53 4B 45 D4 ; 39 "BASKET" 3696: 4E 41 52 52 4F D7 ; 40 "NARROW" 369C: 47 52 45 41 D4 ; 41 "GREAT" 36A1: 53 54 4F 4E C5 ; 42 "STONE" 36A6: 54 4F 57 45 D2 ; 43 "TOWER" 36AB: 50 4F 4F CC ; 44 "POOL" 36AF: 57 41 54 45 D2 ; 45 "WATER" 36B4: 54 57 49 53 54 49 4E C7 ; 46 "TWISTING" 36BC: 41 4E C4 ; 47 "AND" 36BF: 54 48 45 52 C5 ; 48 "THERE" 36C4: 41 52 C5 ; 49 "ARE" 36C7: 47 52 45 45 CE ; 50 "GREEN" 36CC: 44 52 41 50 45 D3 ; 51 "DRAPES" 36D2: 4F CE ; 52 "ON" 36D4: 54 48 C5 ; 53 "THE" 36D7: 46 49 4C 4C 45 C4 ; 54 "FILLED" 36DD: 48 41 4C CC ; 55 "HALL" 36E1: 57 49 54 C8 ; 56 "WITH" 36E5: 54 41 42 4C C5 ; 57 "TABLE" 36EA: 43 48 41 49 D2 ; 58 "CHAIR" 36EF: 47 55 41 52 C4 ; 59 "GUARD" 36F4: 52 4F 4F CD ; 60 "ROOM" 36F8: 57 4F 4F C4 ; 61 "WOOD" 36FC: 50 49 4C C5 ; 62 "PILE" 3700: 42 4F 4E 45 D3 ; 63 "BONES" 3705: 46 4C 4F 4F D2 ; 64 "FLOOR" 370A: 43 48 41 53 CD ; 65 "CHASM" 370F: 43 4C 45 41 CE ; 66 "CLEAN" 3714: 43 48 41 50 45 CC ; 67 "CHAPEL" 371A: 4E CF ; 68 "NO" 371C: 57 49 4E 44 4F 57 D3 ; 69 "WINDOWS" 3723: 54 52 4F 50 48 D9 ; 70 "TROPHY" 3729: 45 4D 50 54 D9 ; 71 "EMPTY" 372E: 43 4C 4F 53 45 D4 ; 72 "CLOSET" 3734: 50 41 49 4E 54 49 4E C7 ; 73 "PAINTING" 373C: 4D 55 53 54 D9 ; 74 "MUSTY" 3741: 4B 49 54 43 48 45 CE ; 75 "KITCHEN" 3748: 52 41 54 D3 ; 76 "RATS" 374C: 42 52 4F 4B 45 CE ; 77 "BROKEN" 3752: 54 49 4C 45 D3 ; 78 "TILES" 3757: 52 4F 59 41 CC ; 79 "ROYAL" 375C: 42 45 C4 ; 80 "BED" 375F: 41 52 4D 4F 52 D9 ; 81 "ARMORY" 3765: 53 57 4F 52 C4 ; 82 "SWORD" 376A: 53 48 49 45 4C C4 ; 83 "SHIELD" 3770: 4C 49 42 52 41 52 D9 ; 84 "LIBRARY" 3777: 57 49 4E C5 ; 85 "WINE" 377B: 43 45 4C 4C 41 D2 ; 86 "CELLAR" 3781: 50 4F 52 54 41 CC ; 87 "PORTAL" 3787: 43 4F 55 52 D4 ; 88 "COURT" 378C: 59 41 52 C4 ; 89 "YARD" 3790: 43 4C 4F 49 53 54 45 D2 ; 90 "CLOISTER" 3798: 53 45 52 56 41 4E D4 ; 91 "SERVANT" 379F: 43 48 41 4D 42 45 D2 ; 92 "CHAMBER" 37A6: 50 41 4E 54 52 D9 ; 93 "PANTRY" 37AC: 42 45 45 D2 ; 94 "BEER" 37B0: 41 D8 ; 95 "AX" 37B2: 47 4C 41 53 D3 ; 96 "GLASS" 37B7: 53 54 41 49 D2 ; 97 "STAIR" 37BC: 53 45 C5 ; 98 "SEE" 37BF: 44 41 4D D0 ; 99 "DAMP" 37C3: C1 ; 100 "A" 37C4: 41 4E 43 49 45 4E D4 ; 101 "ANCIENT" 37CB: 53 4B 55 4C CC ; 102 "SKULL" 37D0: 4F C6 ; 103 "OF" 37D2: 43 41 56 45 52 CE ; 104 "CAVERN" 37D8: 43 41 56 C5 ; 105 "CAVE" 37DC: 43 48 49 4C CC ; 106 "CHILL" 37E1: 4D 49 53 D4 ; 107 "MIST" 37E5: 53 57 49 52 4C 49 4E C7 ; 108 "SWIRLING" 37ED: 50 49 D4 ; 109 "PIT" 37F0: 53 55 4E 4B 45 CE ; 110 "SUNKEN" 37F6: 57 49 4E 44 49 4E C7 ; 111 "WINDING" 37FD: 45 44 47 C5 ; 112 "EDGE" 3801: 53 48 41 46 D4 ; 113 "SHAFT" 3806: 54 4F 4D C2 ; 114 "TOMB" 380A: 45 56 45 52 59 57 48 45 52 C5 ; 115 "EVERYWHERE" 3814: 43 52 59 50 D4 ; 116 "CRYPT" 3819: 4B 49 4E C7 ; 117 "KING" 381D: 44 45 41 C4 ; 118 "DEAD" 3821: 45 4E C4 ; 119 "END" 3824: 54 55 4E 4E 45 CC ; 120 "TUNNEL" 382A: 53 4D 4F 4F 54 C8 ; 121 "SMOOTH" 3830: 4D 41 52 42 4C C5 ; 122 "MARBLE" 3836: 46 4F 55 CC ; 123 "FOUL" 383A: 53 4D 45 4C 4C 49 4E C7 ; 124 "SMELLING" 3842: 46 4C 4F 57 49 4E C7 ; 125 "FLOWING" 3849: 4C 41 49 D2 ; 126 "LAIR" 384D: 4D 49 4E 4F 54 41 55 D2 ; 127 "MINOTAUR" 3855: 4F 56 45 52 4C 4F 4F 4B 49 4E C7 ; 128 "OVERLOOKING" 3860: 47 4F 4C C4 ; 129 "GOLD" 3864: 59 4F 55 20 41 52 C5 ; 130 "YOU ARE" 386B: 57 48 41 D4 ; 131 "WHAT" 386F: 54 CF ; 132 "TO" 3871: 48 45 52 C5 ; 133 "HERE" 3875: 53 50 52 49 4E 47 D3 ; 134 "SPRINGS" 387C: 4C 45 41 54 48 45 D2 ; 135 "LEATHER" 3883: 53 49 54 D3 ; 136 "SITS" 3887: 52 45 53 54 49 4E C7 ; 137 "RESTING" 388E: 46 45 45 D4 ; 138 "FEET" 3892: 41 47 41 49 4E 53 D4 ; 139 "AGAINST" 3899: 49 D3 ; 140 "IS" 389B: 42 41 C7 ; 141 "BAG" 389E: 42 52 4F 4E 5A C5 ; 142 "BRONZE" 38A4: 4F 46 C6 ; 143 "OFF" 38A7: 54 52 41 49 CC ; 144 "TRAIL" 38AC: 59 4F 55 D2 ; 145 "YOUR" 38B0: 41 D4 ; 146 "AT" 38B2: 4E 4F 54 48 49 4E C7 ; 147 "NOTHING" 38B9: 46 4F 4F C4 ; 148 "FOOD" 38BD: 49 4E 54 CF ; 149 "INTO" 38C1: 53 49 47 48 D4 ; 150 "SIGHT" 38C6: 44 49 53 41 50 50 45 41 52 D3 ; 151 "DISAPPEARS" 38D0: 4C 45 41 44 D3 ; 152 "LEADS" 38D5: 57 49 4E 44 D3 ; 153 "WINDS" 38DA: 4F 50 45 4E 49 4E C7 ; 154 "OPENING" 38E1: 59 4F D5 ; 155 "YOU" 38E4: 47 45 4E 54 4C D9 ; 156 "GENTLY" 38EA: 53 4C 4F 50 49 4E C7 ; 157 "SLOPING" 38F1: 4F 55 D4 ; 158 "OUT" 38F4: 48 4F 4C C5 ; 159 "HOLE" 38F8: 52 45 43 45 53 53 45 C4 ; 160 "RECESSED" 3900: 42 4F 54 54 4F CD ; 161 "BOTTOM" 3906: 54 4F D0 ; 162 "TOP" 3909: 4B 4E 49 46 C5 ; 163 "KNIFE" 390E: 50 45 4E 44 41 4E D4 ; 164 "PENDANT" 3915: 53 43 45 50 54 45 D2 ; 165 "SCEPTER" 391C: 4C 41 4D D0 ; 166 "LAMP" 3920: 50 41 52 43 48 4D 45 4E D4 ; 167 "PARCHMENT" 3929: 56 49 41 CC ; 168 "VIAL" 392D: 55 52 CE ; 169 "URN" 3930: 53 50 45 4C CC ; 170 "SPELL" 3935: 53 43 4F 52 50 49 4F CE ; 171 "SCORPION" 393D: 4E 59 4D 50 C8 ; 172 "NYMPH" 3942: 53 41 54 59 D2 ; 173 "SATYR" 3947: 4F 52 41 43 4C C5 ; 174 "ORACLE" 394D: 44 49 41 4D 4F 4E C4 ; 175 "DIAMOND" 3954: 53 50 45 4C 4C 42 4F 4F CB ; 176 "SPELLBOOK" 395D: 52 49 4E C7 ; 177 "RING" 3961: 46 4C 45 45 43 C5 ; 178 "FLEECE" 3967: 54 49 41 52 C1 ; 179 "TIARA" 396C: 50 4F 57 44 45 D2 ; 180 "POWDER" 3972: 41 4D 55 4C 45 D4 ; 181 "AMULET" 3978: 50 4F 54 49 4F CE ; 182 "POTION" 397E: 53 43 52 4F 4C CC ; 183 "SCROLL" 3984: 42 4F 54 54 4C C5 ; 184 "BOTTLE" 398A: 46 4F 52 45 53 D4 ; 185 "FOREST" 3990: 53 50 52 49 54 C5 ; 186 "SPRITE" 3996: 54 52 4F 47 4C 4F 44 59 54 C5 ; 187 "TROGLODYTE" 39A0: 50 4F 57 45 52 52 49 4E C7 ; 188 "POWERRING" 39A9: 4C 49 47 48 54 52 49 4E C7 ; 189 "LIGHTRING" 39B2: 54 52 55 54 48 52 49 4E C7 ; 190 "TRUTHRING" 39BB: 52 55 42 D9 ; 191 "RUBY" 39BF: 43 52 4F 57 CE ; 192 "CROWN" 39C4: 54 41 4C 49 53 4D 41 CE ; 193 "TALISMAN" 39CC: 47 4F 42 4C 45 D4 ; 194 "GOBLET" 39D2: 4A 41 D2 ; 195 "JAR" 39D5: 54 41 42 4C 45 D4 ; 196 "TABLET" 39DB: 57 48 49 43 C8 ; 197 "WHICH" 39E0: 56 4F 49 43 45 D3 ; 198 "VOICES" 39E6: 53 43 41 52 41 C2 ; 199 "SCARAB" 39EC: 50 41 54 C8 ; 200 "PATH" 39F0: 4D 41 43 C5 ; 201 "MACE" 39F4: 4D 55 53 48 52 4F 4F CD ; 202 "MUSHROOM" 39FC: 53 50 41 52 4B 4C 49 4E C7 ; 203 "SPARKLING" 3A05: 44 49 CD ; 204 "DIM" 3A08: 50 41 54 C8 ; 205 "PATH" 3A0C: 52 4F 50 C5 ; 206 "ROPE" 3A10: 44 49 52 D4 ; 207 "DIRT" 3A14: 4C 41 59 D3 ; 208 "LAYS" 3A18: 53 49 44 C5 ; 209 "SIDE" 3A1C: 49 D4 ; 210 "IT" 3A1E: 41 49 D2 ; 211 "AIR" 3A21: 56 45 4C 56 45 D4 ; 212 "VELVET" 3A27: 4E 4F D4 ; 213 "NOT" 3A2A: 52 45 41 43 C8 ; 214 "REACH" 3A2F: 46 52 4F CD ; 215 "FROM" 3A33: 42 D9 ; 216 "BY" 3A35: 46 4F 52 43 C5 ; 217 "FORCE" 3A3A: 48 41 4E 47 49 4E C7 ; 218 "HANGING" 3A41: 53 55 53 50 45 4E 44 45 C4 ; 219 "SUSPENDED" 3A4A: 42 55 52 49 45 C4 ; 220 "BURIED" 3A50: 57 48 45 CE ; 221 "WHEN" 3A54: 43 41 CE ; 222 "CAN" 3A57: 4B 45 45 50 D3 ; 223 "KEEPS" 3A5C: 46 4C 4F 41 54 D3 ; 224 "FLOATS" 3A62: 4D 4F 56 C5 ; 225 "MOVE" 3A66: 4E 45 41 D2 ; 226 "NEAR" 3A6A: 50 52 4F 54 45 43 54 45 C4 ; 227 "PROTECTED" 3A73: 57 49 4C CC ; 228 "WILL" 3A77: 4A 45 57 45 4C 42 4F D8 ; 229 "JEWELBOX" 3A7F: 54 45 4D 50 4C C5 ; 230 "TEMPLE" 3A85: 5A 45 55 D3 ; 231 "ZEUS" 3A89: 49 4E 20 41 20 4D 41 5A 45 20 4F 46 20 54 55 4E 4E 45 4C 53 20 53 54 52 45 54 43 48 49 4E 47 20 4F 55 54 20 4F 46 20 53 49 47 48 54 20 49 4E 20 41 4C 4C 20 44 49 52 45 43 54 49 4F 4E D3 ; 232 "IN A MAZE OF TUNNELS STRETCHING OUT OF SIGHT IN ALL DIRECTIONS" 3AC7: 54 52 41 43 4B D3 ; 233 "TRACKS" 3ACD: 44 45 45 D0 ; 234 "DEEP" 3AD1: 41 43 52 4F 53 D3 ; 235 "ACROSS" 3AD7: 53 48 41 44 4F D7 ; 236 "SHADOW" 3ADD: 53 54 52 45 54 43 48 49 4E C7 ; 237 "STRETCHING" 3AE7: 41 CE ; 238 "AN" 3AE9: 47 4C 4F 57 49 4E C7 ; 239 "GLOWING" 3AF0: 41 54 54 41 43 4B 49 4E C7 ; 240 "ATTACKING" 3AF9: 4F 49 CC ; 241 "OIL" 3AFC: 56 45 54 41 D2 ; 242 "VETAR" 3B01: 4D 49 54 52 C1 ; 243 "MITRA" 3B06: 4F 4B 4B 41 CE ; 244 "OKKAN" 3B0B: 41 4B 48 49 52 4F CD ; 245 "AKHIROM" 3B12: 4E 45 52 47 41 CC ; 246 "NERGAL" 3B18: 42 45 4C 52 4F C7 ; 247 "BELROG" 3B1E: 43 52 4F CD ; 248 "CROM" 3B22: 49 53 48 54 41 D2 ; 249 "ISHTAR" 3B28: 4F 50 41 CC ; 250 "OPAL" 3B2C: 53 41 50 50 48 49 52 C5 ; 251 "SAPPHIRE" 3B34: 48 59 44 52 C1 ; 252 "HYDRA" 3B39: 4C 45 44 47 C5 ; 253 "LEDGE" ;##DirectionDescriptionTable ; Each direction has 8 messages that describe and open path in that ; direction. The table below points to the 1st of 8 for each. 3B3E: 28 2E ; South (--000001) 3B40: 28 76 ; West (--000010) 3B42: 28 BB ; East (--000100) 3B44: 29 00 ; North (--001000) 3B46: 29 48 ; Down (--010000) 3B48: 29 88 ; Up (--100000) ;##BetweenRoomHandler ; Between room handlers ; 4 byte entries. 1st byte is room, 2nd byte is direction, ; and 3rd and 4th are routine; 3B4A: 4A 04 1A FB ; 1:2:1 --EAST:WEST-- 1:3:1 ; A If excess physical condition is less than random 40-BF then a climb-up fails. 3B4E: 53 04 1A FB ; 1:3:2 --EAST:WEST-- 1:4:2 ; A see above 3B52: CA 10 1B 20 ; 3:2:1 --DOWN:UP-- 0:2:1 ; B Moves us to start room 10 (or infrequently in a room near the start). 3B56: 0A 20 1B 03 ; 0:2:1 --UP:DOWN-- 3:2:1 ; C If excess physical condition is less than 192 then a climb-up fails. 3B5A: 40 20 1B 06 ; 1:0:0 --UP:DOWN-- 0:0:0 ; D If excess physical condition is less than 64 then a climb-up fails. 3B5E: D9 01 1A FB ; 3:1:3 --SOUTH:NORTH-- 3:1:4 ; A see above 3B62: 44 20 1B 06 ; 1:4:0 --UP:DOWN-- 0:4:0 ; D see above 3B66: 47 20 1A FB ; 1:7:0 --UP:DOWN-- 0:7:0 ; A see above 3B6A: 53 20 1B 09 ; 1:3:2 --UP:DOWN-- 0:3:2 ; E If excess physical condition is less than 128 then a climb-up fails. 3B6E: 12 01 1B 34 ; 0:2:2 --SOUTH:NORTH-- 0:2:3 ; F If the lamp is in our pack this moves us to a totally random room. 3B72: 59 20 1A FB ; 1:1:3 --UP:DOWN-- 0:1:3 ; A see above 3B76: 42 20 1A FB ; 1:2:0 --UP:DOWN-- 0:2:0 ; A see above 3B7A: 82 20 1B 06 ; 2:2:0 --UP:DOWN-- 1:2:0 ; D see above 3B7E: 87 20 1B 06 ; 2:7:0 --UP:DOWN-- 1:7:0 ; D see above 3B82: 96 20 1A FB ; 2:6:2 --UP:DOWN-- 1:6:2 ; A see above 3B86: 99 20 1A FB ; 2:1:3 --UP:DOWN-- 1:1:3 ; A see above 3B8A: 9C 20 1B 03 ; 2:4:3 --UP:DOWN-- 1:4:3 ; C see above 3B8E: 8A 04 1B 5F ; 2:2:1 --EAST:WEST-- 2:3:1 ; G There is a 50/50 chance of moving to a random room in the first half of the last two floors. 3B92: D4 08 1B 09 ; 3:4:2 --NORTH:SOUTH-- 3:4:1 ; E see above 3B96: 4D 08 1B 03 ; 1:5:1 --NORTH:SOUTH-- 1:5:0 ; C see above 3B9A: F3 20 1B 34 ; 3:3:6 --UP:DOWN-- 2:3:6 ; F see above 3B9E: F3 10 1B 34 ; 3:3:6 --DOWN:UP-- 0:3:6 ; F see above 3BA2: AF 08 1B 43 ; 2:7:5 --NORTH:SOUTH-- 2:7:4 ; H There is a 50/50 chance of going to a random room in the maze on a random floor. 3BA6: 69 08 1B 43 ; 1:1:5 --NORTH:SOUTH-- 1:1:4 ; H see above 3BAA: AE 04 1B 4A ; 2:6:5 --EAST:WEST-- 2:7:5 ; I Move to a random room in the maze on a random floor (1 in 36 chance of doing nothing). 3BAE: 68 04 1B 4A ; 1:0:5 --EAST:WEST-- 1:1:5 ; I see above 3BB2: 6A 02 1B 4A ; 1:2:5 --WEST:EAST-- 1:1:5 ; I see above 3BB6: B0 02 1B 4A ; 2:0:6 --WEST:EAST-- 2:7:5 ; I see above 3BBA: E0 01 1B 5F ; 3:0:4 --SOUTH:NORTH-- 3:0:5 ; G see above 3BBE: 00 00 00 ;##TapeSavePoint ; ; From 3BC1 to 3FFF is saved/restored to tape with SAVE/LOAD ;##SpellData ; Spell data ; AA BB CC DD ; AA = 1st required object to learn spell ; BB = 2nd required object to learn spell ; CC = room spell is in (not learned) ; DD = $80 if learned, 0 if not ; ; Spell Must have to learn 3BC1: 09 01 00 00 ; VETRA: MUSHROOM and FOOD 3BC5: 0E 37 00 00 ; MITRA: PARCHMENT and VETRA 3BC9: 11 38 00 00 ; OKKAN: TALISMAN and MITRA 3BCD: 18 39 00 00 ; AKHIROM: ROPE and OKKAN 3BD1: 0B 3A 00 00 ; NERGAL: SCEPTER and AKHIROM 3BD5: 0F 3B 00 00 ; BELROG: VIAL and NERGAL 3BD9: 0A 3C 00 00 ; CROM: PENDANT and BELROG 3BDD: 23 3D 00 00 ; ISHTAR: SPELLBOOK and CROM ;##JumpInfoTable ; ; Describes places where you can JUMP. ; AA BB CC DD EE ; AA = Starting room ; BB = Compared to (Phys-weight) AND (Phys-bulk) ... see below ; CC = Fail action (see below) ; DD = Target room of jump ; EE = Word of thing to jump (or FF for just JUMP) ; ; If Phys-weight is less than BB, you fail the jump as CC describes. ; Otherwise if Phys-bulk is less than BB, you fumble (make the jump but ; drop the heaviest object). ; ; CC = 0x00 ... a failed jump (BB condition) is death ; CC = 0x80 ... a failure is a fumble. You make the jump but drop the ; heaviest object object. There is a 1/8th chance that ; the fumbled object is lost (unless it is required). ; CC = N ... a failure is a stumble. You don't make the jump and ; take N damage. ; 3BE1: 8F 80 00 97 6D; From 143 "JUMP PIT" to 151. Required=128 or DEATH 3BE6: 97 80 80 8F 6D; From 151 "JUMP PIT" to 143. Required=128 or FUMBLE 3BEB: 10 80 80 11 2C; From 16 "JUMP POOL" to 17. Required=128 or FUMBLE 3BF0: 11 80 80 10 2C; From 17 "JUMP POOL" to 16. Required=128 or FUMBLE 3BF5: 4E 40 80 56 41; From 78 "JUMP CHASM" to 86. Required=64 or FUMBLE 3BFA: 56 40 80 4E 41; From 86 "JUMP CHASM" to 78. Required=64 or FUMBLE 3BFF: 2C 0A 0A B6 6D; From 44 "JUMP PIT" to 182. Required=10 or STUMBLE(10) 3C04: B6 14 14 2C 6D; From 182 "JUMP PIT" to 44. Required=20 or STUMBLE(20) 3C09: A4 A0 00 CA 6D; From 164 "JUMP PIT" to 202. Required=160 or DEATH 3C0E: 85 C0 80 CB 6D; From 133 "JUMP PIT" to 203. Required=192 or FUMBLE 3C13: 90 14 14 85 FF; From 144 "JUMP" to 133. Required=20 or STUMBLE(20) 3C18: CB 80 1E CA 6D; From 203 "JUMP PIT" to 202. Required=128 or STUMBLE(30) 3C1D: D5 46 14 D4 6B; From 213 "JUMP MIST" to 212. Required=70 or STUMBLE(20) 3C22: D4 46 14 D5 6B; From 212 "JUMP MIST" to 213. Required=70 or STUMBLE(20) 3C27: 23 96 28 22 9F; From 35 "JUMP HOLE" to 34. Required=150 or STUMBLE(40) 3C2C: 22 78 14 23 6D; From 34 "JUMP PIT" to 35. Required=120 or STUMBLE(20) 3C31: 80 64 80 40 05; From 128 "JUMP UP" to 64. Required=100 or FUMBLE 3C36: A6 50 80 66 05; From 166 "JUMP UP" to 102. Required=80 or FUMBLE 3C3B: 66 A0 80 26 05; From 102 "JUMP UP" to 38. Required=160 or FUMBLE 3C40: 5C 96 1E 9C 06; From 92 "JUMP DOWN" to 156. Required=150 or STUMBLE(30) 3C45: 46 50 14 8C 06; From 70 "JUMP DOWN" to 140. Required=80 or STUMBLE(20) 3C4A: 5E 5A 0A 9E 06; From 94 "JUMP DOWN" to 158. Required=90 or STUMBLE(10) 3C4F: 40 1E 00 80 6D; From 64 "JUMP PIT" to 128. Required=30 or DEATH 3C54: CA 1E 14 A2 06; From 202 "JUMP DOWN" to 162. Required=30 or STUMBLE(20) ;##CodeBug6 ; There is already a jump from room 16 earlier in this table. The code that reads this ; table (19BB) only finds the first entry for a room ... a single room can't have ; multiple jumps out. This jump is shadowed by the first and is never used. 3C59: 10 8C 80 27 06; From 16 "JUMP DOWN" to 39. Required=140 or FUMBLE 3C5E: 00 ; List of owners to hold objects 3C5F: 19 ; Sprite 3C60: 1A ; Troglodyte 3C61: 1B ; Scorpion 3C62: 1C ; Nymph 3C63: 1D ; Satyr 3C64: 1E ; Minotaur 3C65: 01 ; Crypt 3C66: 02 ; Crypt of kings 3C67: 03 ; Entering-room-u 3C68: 04 ; Entering-room-aa 3C69: 05 ; Small pit 3C6A: 06 ; Ledge 3C6B: 07 ; Hydra 3C6C: 08 ; Pile of glowing rocks 3C6D: 09 ; Eerie glow 3C6E: 0A ; Packrat ; ; 0B ; Entering-room-r ; 1=crypt, 2=crypt-kings, 3=_u, 4=_33, 5=pit,6=ledge, 7=hydra, 8=pile-of-rocks, 9=_s, 10=_t(rat), 11=_r, >12creature number ; Held-by table. Treasures are carried by creatures or "held" by a room. This ; table maps the holder to the treasure. ; AA BB ; A = owner (see list above) ; B = held object ; 3C6F: 00 2E ; 46 "OPAL" 3C71: 00 2F ; 47 "SAPPHIRE" 3C73: 00 12 ; 18 "SCROLL" 3C75: 00 15 ; 21 "SCARAB" 3C77: 00 16 ; 22 "JEWLBOX" 3C79: 00 17 ; 23 "TABLET" 3C7B: 00 20 ; 32 "GOLD" 3C7D: 00 21 ; 33 "SILVER" 3C7F: 00 22 ; 34 "DIAMOND" 3C81: 00 24 ; 36 "RUBY" 3C83: 00 25 ; 37 "FLEECE" 3C85: 00 26 ; 38 "TIARA" 3C87: 00 27 ; 39 "POWDER" 3C89: 00 28 ; 40 "AMULET" 3C8B: 00 29 ; 41 "POTION" 3C8D: 00 2D ; 45 "CROWN" ;##ActionWhenEnteringRoom 3C8F: 00 1B 6D ; 0 _a ; Cave in to next floor if pack heavier than 192. If so move a nd b to random rooms. 3C92: 00 1B 70 ; 0 _b ; Cave in to next floor if pack heavier than 128. If so move a nd b to random rooms. 3C95: 00 1B 73 ; 0 _c ; Cave in to next floor if pack heavier than 95. If so move a nd b to random rooms. 3C98: 00 1B 9C ; 0 _d ; # If we have VETAR make the pile-of-rocks appear in this room (it stays here). 3C9B: 00 1B B3 ; 0 _e ; # Play sound effect. If we play the flute and have the parchment then the LEDGE appears here. 3C9E: 00 1B B7 ; 0 _f ; Powerful gust blows lamp out of grasp. 3CA1: 00 1B F9 ; 0 _g ; # Hydra is here. If it is free it pushes us back to last room. 3CA4: 00 1C 15 ; 0 _h ; If we know VETAR or have the SCEPTER, nothing happens. Otherwise we RUN. 3CA7: 00 1C 2C ; 0 _i ; Pushed back if we don't have VETAR. 3CAA: 00 1C 2F ; 0 _j ; Pushed back if we don't have MITRA. 3CAD: 00 1C 32 ; 0 _k ; Pushed back if we don't have OKKAN. 3CB0: 00 1C 35 ; 0 _l ; Pushed back if we don't have AKHIROM. 3CB3: 00 1C 38 ; 0 _m ; Pushed back if we don't have NERGAL. 3CB6: 00 1C 3B ; 0 _n ; Pushed back if we don't have BELROG. 3CB9: 00 1C 3E ; 0 _o ; Pushed back if we don't have CROM. 3CBC: 00 1C 41 ; 0 _p ; Pushed back if we don't have ISHTAR. 3CBF: 00 1C 68 ; 0 _q ; Start the poison clock (we can't stay here long). 1/3 of the time we give the clock an extra tick. 3CC2: 00 1C 7A ; 0 _r ; # When we enter this room 3 times the treasure is released. 3CC5: 00 1C 68 ; 0 _q ; see above 3CC8: 00 1C 68 ; 0 _q ; see above 3CCB: 00 1C 8D ; 0 _s ; # If we have the lamp and it is off then the room drops its treasure. (Strange color walls) 3CCE: 00 1C A9 ; 0 _t ; # If we are holding the packrat's trigger treasure (randomized at start) then the packrat drops his treasure. 3CD1: 00 1C 68 ; 0 _q ; see above 3CD4: 00 1C CC ; 0 _u ; # If we can see you instantly get the treasure. 3CD7: 00 1C F0 ; 0 _v ; Print POOL OF OIL if the lamp can be refilled. 3CDA: 00 1B B7 ; 0 _f ; see above 3CDD: 00 1C E0 ; 0 _32 ; (Same as 32 below) 3CE0: 00 1D 00 ; 0 _x ; Add 40 to health and move us a short distance away. 10 minutes must pass before again. 3CE3: 00 1D 00 ; 0 _x ; see above 3CE6: 00 1D 22 ; 0 _203 ; # Print "SMALL PIT IN CORNER OF ROOM" ; 3CE9: D5 1D 27 ; 213 _213 ; Print "LAYER OF MIST EAST WALL" 3CEC: 20 1C E0 ; 32 _32 ; If we can't see we take 30 damage. 3CEF: 21 1C D6 ; 33 _33 ; # If we can see you instantly get the treasure. 3CF2: CB 1D 22 ; 203 _203 ; Print SMALL PIT IN CORNER OF ROOM. 3CF5: 00 1B B4 ; 0 _z ; Room with music (init to room 16 to 39). The sprite can't move objects here. 3CF8: E8 1D 2D ; 232 _232 ; _232 If we came south to this room and carrying pendant move us near start and random room for pendant. 3CFB: 00 ;##ObjectData ; AA BB bsdp_PPxy ; A = Current room number ; B = Display name to use ; b=1 if in backpack ; s=1 if spell ; d=1 if object is fixed (sprite can't move it) ; p=1 if "protected" ; PP is bottle/urn fill status ; x=1 if spell or dead creature ; y=1 if carried object (invisible) ; 3CFC: 00 01 00 ; 1 "FOOD" 3CFF: 08 02 00 ; 2 "BOTTLE" 3D02: 28 03 00 ; 3 "DAGGER" 3D05: 01 04 00 ; 4 "MACE" 3D08: 01 05 00 ; 5 "AX" 3D0B: 04 06 10 ; 6 "SWORD" 3D0E: 08 07 10 ; 7 "SHIELD" 3D11: 00 08 00 ; 8 "FLUTE" 3D14: 02 09 00 ; 9 "MUSHROOM" 3D17: 00 0A 00 ; 10 "PENDANT" 3D1A: 02 0B 00 ; 11 "SCEPTER" 3D1D: 02 0C 00 ; 12 "LAMP" 3D20: 04 0D 00 ; 13 "BASKET" 3D23: 04 0E 01 ; 14 "PARCHMENT" 3D26: 04 0F 10 ; 15 "VIAL" 3D29: 06 10 00 ; 16 "URN" 3D2C: 06 11 01 ; 17 "TALISMAN" 3D2F: 0C 12 01 ; 18 "SCROLL" 3D32: 0C 13 00 ; 19 "GOBLET" 3D35: 0C 14 10 ; 20 "SKULL" 3D38: 0C 15 01 ; 21 "SCARAB" 3D3B: 0D 16 01 ; 22 "JEWELBOX" 3D3E: 0D 17 01 ; 23 "TABLET" 3D41: 0D 18 00 ; 24 "ROPE" 3D44: 0D 19 40 ; 25 "SPRITE" 3D47: 0E 1A 40 ; 26 "TROGLODYTE" 3D4A: 0A 1B 40 ; 27 "SCORPION" 3D4D: 0B 1C 40 ; 28 "NYMPH" 3D50: 0C 1D 40 ; 29 "SATYR" 3D53: 9E 1E 40 ; 30 "MINOTAUR" 3D56: 9E 1F 40 ; 31 "ORACLE" 3D59: 00 20 01 ; 32 "GOLD" 3D5C: 00 21 01 ; 33 "SILVER" 3D5F: 40 22 01 ; 34 "DIAMOND" 3D62: 40 23 10 ; 35 "SPELLBOOK" 3D65: 44 24 01 ; 36 "RUBY" 3D68: 44 25 01 ; 37 "FLEECE" 3D6B: 00 26 01 ; 38 "TIARA" 3D6E: 1D 27 01 ; 39 "POWDER" 3D71: 1D 28 01 ; 40 "AMULET" 3D74: 43 29 01 ; 41 "POTION" 3D77: 11 2A 10 ; 42 "POWERRING" 3D7A: 11 2B 10 ; 43 "LIGHTRING" 3D7D: 11 2C 10 ; 44 "TRUTHRING" 3D80: 12 2D 01 ; 45 "CROWN" 3D83: 00 2E 01 ; 46 "OPAL" 3D86: 00 2F 01 ; 47 "SAPPHIRE" 3D89: 00 00 42 ; 48 "NORTH" 3D8C: 00 00 42 ; 49 "NORTH" 3D8F: 00 00 42 ; 50 "NORTH" 3D92: 00 00 42 ; 51 "NORTH" 3D95: 00 00 42 ; 52 "NORTH" 3D98: 00 00 42 ; 53 "NORTH" 3D9B: 00 00 42 ; 54 "NORTH" 3D9E: 00 37 42 ; 55 "VETAR" 3DA1: 00 38 42 ; 56 "MITRA" 3DA4: 00 39 42 ; 57 "OKKAN" 3DA7: 00 3A 42 ; 58 "AKHIROM" 3DAA: 00 3B 42 ; 59 "NERGAL" 3DAD: 00 3C 42 ; 60 "BELROG" 3DB0: 00 3D 42 ; 61 "CROM" 3DB3: 00 3E 42 ; 62 "ISHTAR" ; 3DB6: 00 FF ; End of list marker ;##PassageConfigurations ; Room door paths for 256 rooms ; --UDNEWS ; ; Floor 1 3DB8: 11 04 07 06 06 03 01 12 ; .D...S ...E.. ...EWS ...EW. ...EW. ....WS .....S .D..W. 3DC0: 0C 06 2F 06 07 0E 0B 01 ; ..NE.. ...EW. U.NEWS ...EW. ...EWS ..NEW. ..N.WS .....S 3DC8: 01 08 09 04 0B 01 0D 0B ; .....S ..N... ..N..S ...E.. ..N.WS .....S ..NE.S ..N.WS 3DD0: 19 14 06 03 0D 0E 0A 09 ; .DN..S .D.E.. ...EW. ....WS ..NE.S ..NEW. ..N.W. ..N..S 3DD8: 0C 06 03 0C 0E 06 12 08 ; ..NE.. ...EW. ....WS ..NE.. ..NEW. ...EW. .D..W. ..N... 3DE0: 35 37 37 37 37 37 37 37 ; UD.E.S UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS 3DE8: 3F 3F 3F 3F 3F 3F 3F 3F ; UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS 3DF0: 3E 3E 3E 3E 3E 3E 3E 3A ; UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDN.W. ; Floor 2 3DF8: 24 03 24 03 25 06 03 38 ; U..E.. ....WS U..E.. ....WS U..E.S ...EW. ....WS UDN... 3E00: 0D 0E 06 0E 0A 09 08 01 ; ..NE.S ..NEW. ...EW. ..NEW. ..N.W. ..N..S ..N... .....S 3E08: 09 04 06 27 07 0B 05 0B ; ..N..S ...E.. ...EW. U..EWS ...EWS ..N.WS ...E.S ..N.WS 3E10: 09 30 04 0B 08 0C 0A 09 ; ..N..S UD.... ...E.. ..N.WS ..N... ..NE.. ..N.W. ..N..S 3E18: 0C 16 06 0E 06 06 10 18 ; ..NE.. .D.EW. ...EW. ..NEW. ...EW. ...EW. .D.... .DN... 3E20: 35 3F 37 37 37 37 37 37 ; UD.E.S UDNEWS UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS 3E28: 3F 3F 3F 3F 3F 3F 3F 3F ; UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS 3E30: 3E 3E 3E 3E 3E 3E 3E 3A ; UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDN.W. ; Floor 3 3E38: 01 04 27 06 06 02 05 20 ; .....S ...E.. U..EWS ...EW. ...EW. ....W. ...E.S U..... 3E40: 09 05 07 06 06 03 0B 02 ; ..N..S ...E.S ...EWS ...EW. ...EW. ....WS ..N.WS ....W. 3E48: 08 09 09 05 03 09 28 01 ; ..N... ..N..S ..N..S ...E.S ....WS ..N..S U.N... .....S 3E50: 05 2F 0B 0C 2F 0E 10 09 ; ...E.S U.NEWS ..N.WS ..NE.. U.NEWS ..NEW. .D.... ..N..S 3E58: 0C 0F 0F 07 07 03 02 09 ; ..NE.. ..NEWS ..NEWS ...EWS ...EWS ....WS ....W. ..N..S 3E60: 35 37 37 37 37 37 37 3F ; UD.E.S UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS UD.EWS UDNEWS 3E68: 3F 3F 3F 3F 3F 3F 3F 3F ; UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS 3E70: 3E 3E 3E 3E 3E 3E 3E 3E ; UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. ; Floor 4 3E78: 05 06 06 06 06 03 05 03 ; ...E.S ...EW. ...EW. ...EW. ...EW. ....WS ...E.S ....WS 3E80: 0D 03 10 04 03 0C 0A 09 ; ..NE.S ....WS .D.... ...E.. ....WS ..NE.. ..N.W. ..N..S 3E88: 0D 0B 05 06 0A 05 07 0B ; ..NE.S ..N.WS ...E.S ...EW. ..N.W. ...E.S ...EWS ..N.WS 3E90: 0C 0B 09 05 07 0F 0F 0B ; ..NE.. ..N.WS ..N..S ...E.S ...EWS ..NEWS ..NEWS ..N.WS 3E98: 05 0E 0A 0C 0E 0E 0E 0A ; ...E.S ..NEW. ..N.W. ..NE.. ..NEW. ..NEW. ..NEW. ..N.W. 3EA0: 35 37 37 3F 37 37 37 37 ; UD.E.S UD.EWS UD.EWS UDNEWS UD.EWS UD.EWS UD.EWS UD.EWS 3EA8: 3F 3F 3F 3F 3F 3F 3F 3F ; UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS UDNEWS 3EB0: 3E 3E 3E 3E 3E 3E 3E 3A ; UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDNEW. UDN.W. ; 3EB8 - 3FB7 ... blocked table (same pattern as natural-passage). Cleared at init. ; 3FB8 the lists of things needed for protected objects is built here. The form is protected ; object number followed by a list of required items (FF ends list). Then next protected ; number and so on until FF ends the list.