Prev: A5DB Up: Map Next: A62C
A60A: Parser: Count Item References
Count how many tokens in the user input refer to game items.
Output
A The number of references to items in the user input tokens
F The Z flag is set when there are no items present in the input
Parser_CountItems A60A LD HL,$A13B Set a pointer to UserInput_Token_1 in HL.
A60D LD B,$0A Set a token count in B of 0A which is the total length of the user input tokens.
A60F LD E,$00 Initialise the item counter held in E to 00.
Parser_CountItems_Loop A611 LD A,(HL) Fetch a user input token.
A612 CP $FF Jump to Parser_CountItems_Process if the terminator character (FF) has been reached.
A614 JR Z,Parser_CountItems_Process
A616 PUSH HL Stash the token pointer and token counter on the stack.
A617 PUSH BC
A618 LD HL,$B49E HL=Table_TokenItemList.
A61B LD BC,($BBC9) Fetch the count of the number of items in the table from *Count_Objects_2.
A61F CPIR Search to see if the item ID is in the table.
A621 POP BC Restore the token counter and token pointer from the stack.
A622 POP HL
A623 JR NZ,Parser_CountItems_Skip Jump to Parser_CountItems_Skip if this token doesn't refer to a game item.
This token does point to a game item, so increase the item counter.
A625 INC E Increment item counter by one.
Parser_CountItems_Skip A626 INC HL Move to the next token.
A627 DJNZ Parser_CountItems_Loop Decrease the token counter by one and loop back to Parser_CountItems_Loop until all the tokens have been evaluated.
Parser_CountItems_Process A629 XOR A Transfer the item count into A and set flags accordingly.
A62A OR E
A62B RET Return.
View the equivalent code in;
Prev: A5DB Up: Map Next: A62C