Prev: 44338 Up: Map Next: 44651
44598: Parser: Validate Item
Used by the routine at Parser_ProcessItem.
Input
BC The position in the user input token of the object
Output
F The carry flag is set when the item isn't present
Parser_ValidateItem 44598 INC BC Adjust the counter for the sum.
44599 LD A,(42984) Calculate the index (*Count_Objects-C) and store the result in E.
44602 SUB C
44603 LD E,A
44604 PUSH DE Stash DE on the stack.
44605 LD IX,(42964) Call GetTableEntry with *Pointer_ItemGroupingTable.
44609 CALL GetTableEntry
44612 POP DE Restore DE from the stack.
44613 JR ValidateItem Jump to ValidateItem.
ValidateItem_Loop 44615 INC HL Increment HL by one.
ValidateItem 44616 LD A,(HL) Jump to Response_ItemNotHere if *HL is equal to 255.
44617 CP 255
44619 JR Z,Response_ItemNotHere
44621 CALL ValidateItemPresent Call ValidateItemPresent.
44624 JR NZ,ValidateItem_Loop Jump to ValidateItem_Loop if the item wasn't found.
44626 RET Return.
The item being referenced isn't in the room or in the players inventory.
Print "I can't see ".
Response_ItemNotHere 44627 LD HL,43227 HL=Messaging_ICantSee.
44630 CALL PrintString Call PrintString.
Print the object name.
44633 LD IX,(42966) Call GetTableEntry with *Pointer_ObjectNounPhrases.
44637 CALL GetTableEntry
44640 CALL PrintString Call PrintString.
Print " here.".
44643 LD HL,43240 HL=Messaging_Here.
44646 CALL PrintStringAndNewline Call PrintStringAndNewline.
44649 SCF Set the carry flag.
44650 RET Return.
View the equivalent code in The Jewels Of Babylon.
Prev: 44338 Up: Map Next: 44651