![]()  | 
Routines | 
| Prev: 45225 | Up: Map | Next: 45323 | 
| 
 
Used by the routines at Action_Examine, Action_Get, Action_Take, Action_Drop, Action_Give, ActionJoint_GiveThrow, Action_Throw, Action_Free, Action_Drink, Action_Jump, Action_Climb, Action_Enter, Action_Wear, Action_Go, Action_Eat, Action_Capture, Action_Place, Action_Buy, Action_Step, Action_Kill and Action_Swim.
 
  | 
||||||||||||
| ActionRouting | 45278 | PUSH HL | Load the item group table into IX (using the stack). | |||||||||
| 45279 | POP IX | |||||||||||
| 
 
Keep looping until a match is found.
 
 | 
||||||||||||
| ActionRouting_Loop | 45281 | LD L,(IX+0) | Fetch the phrase tokens from the item group and store the pointer in HL. | |||||||||
| 45284 | LD H,(IX+1) | |||||||||||
| 45287 | PUSH IX | Stash the item group table, the pointer to the jump table and the table items counter on the stack. | ||||||||||
| 45289 | PUSH DE | |||||||||||
| 45290 | PUSH BC | |||||||||||
| 45291 | CALL MatchPhraseTokens | Call MatchPhraseTokens. | ||||||||||
| 45294 | POP BC | Restore the table items counter, the pointer to the jump table and the item group table from the stack. | ||||||||||
| 45295 | POP DE | |||||||||||
| 45296 | POP IX | |||||||||||
| 
 
Skip to the next set of phrase tokens if nothing matched...
 
 | 
||||||||||||
| 45298 | JR NZ,ActionRouting_Next | Jump to ActionRouting_Next if none of the input matches this set of phrase tokens. | ||||||||||
| 
 
The phrase tokens matched! Handle jumping to the action routine.
 
 | 
||||||||||||
| 45300 | PUSH DE | Load the action table into IX (using the stack). | ||||||||||
| 45301 | POP IX | |||||||||||
| 45303 | LD L,(IX+0) | Fetch the action routine from the table and store it in HL. | ||||||||||
| 45306 | LD H,(IX+1) | |||||||||||
| 45309 | POP DE | Discard the return address on the stack. | ||||||||||
| 45310 | JP (HL) | Jump to the action routine pointed to by *HL. | ||||||||||
| 
 
Nothing matched, so move to the next set of pointers.
 
 | 
||||||||||||
| ActionRouting_Next | 45311 | INC IX | Move to the next pointer in the item group table. | |||||||||
| 45313 | INC IX | |||||||||||
| 45315 | INC DE | Move to the next pointer in the action pointers table. | ||||||||||
| 45316 | INC DE | |||||||||||
| 45317 | DEC BC | Decrease the table items counter by one. | ||||||||||
| 45318 | LD A,B | Jump back to ActionRouting_Loop until all the item groups have been processed. | ||||||||||
| 45319 | OR C | |||||||||||
| 45320 | JR NZ,ActionRouting_Loop | |||||||||||
| 45322 | RET | Return. | ||||||||||
| Prev: 45225 | Up: Map | Next: 45323 |