![]()  | 
Routines | 
| Prev: 29395 | Up: Map | Next: 29504 | 
| 
 
Used by the routines at 27884, Response_ICannotDoThat, 29395, 30673, DisplayLocHlpMsg, GameOver, LoadGame, SaveGame, Action_Look, Action_Putdown, Action_Pickup, Action_Dir, Action_Follow, Action_Talkto, Action_Shoot, YouAreDead, Action_Inventory, Action_Attack, Action_Give, Action_Examine, YouSeeEntry, 38579, 39629, 40260, 40852, 41040, 41160, DisplayExits, ActionTie, ActionUntie, ActionBurn, ActionCapture, 42335 and EventForestriver.
 
  | 
||||||||
| 
 
Store A, DE and IX for later (see Return).
 
 | 
||||||||
| PrintMsg | 29405 | LD (28893),DE | Stash DE at 28893. | |||||
| 29409 | LD (28896),IX | Stash IX at 28896. | ||||||
| 29413 | LD (28892),A | Stash A at 28892. | ||||||
| 
 
Important.
 
 | 
||||||||
| 29416 | LD A,(46842) | If 46842 is not zero, jump to PrintMsg_0 | ||||||
| 29419 | AND A | |||||||
| 29420 | JR NZ,PrintMsg_0 | |||||||
| 29422 | LD (46843),A | Stash A at 46843. | ||||||
| 
 
This entry point is used by the routine at 29664.
 
 | 
||||||||
| PrintMsg_0 | 29425 | PUSH HL | IX=HL (the text message address). | |||||
| 29426 | POP IX | |||||||
| PrintMsg_Loop | 29428 | LD A,(IX+0) | Fetch the next character of the text message. | |||||
| 29431 | BIT 7,A | Is this blah? Jump to PrintMsg_1 if not. | ||||||
| 29433 | JR Z,PrintMsg_1 | |||||||
| 29435 | AND 127 | Reset bit 7. | ||||||
| 29437 | LD D,A | |||||||
| 29438 | LD E,(IX+1) | |||||||
| 29441 | INC IX | Increase IX by one to move onto the next character of the message. | ||||||
| 29443 | AND 240 | |||||||
| 29445 | CP 48 | |||||||
| 29447 | JR Z,29512 | |||||||
| 29449 | CP 32 | |||||||
| 29451 | JR Z,29512 | |||||||
| 29453 | CP 96 | |||||||
| 29455 | JR Z,29512 | |||||||
| 
 
This entry point is used by the routine at GetCommonWord.
 
 | 
||||||||
| PrintMsg_Token | 29457 | CALL PrintToken | Call PrintToken. | |||||
| PrintMsg_Next | 29460 | INC IX | Increase IX by one to move onto the next character of the message. | |||||
| 29462 | JR PrintMsg_Loop | Jump back to PrintMsg_Loop. | ||||||
| 
 
Check.
 
 | 
||||||||
| PrintMsg_1 | 29464 | CP 32 | If the character is less than 32 jump to PrintMsg_PrintTable. | |||||
| 29466 | JR C,PrintMsg_PrintTable | |||||||
| 29468 | CP 96 | If the character is more than 96 jump to GetCommonWord. | ||||||
| 29470 | JP NC,GetCommonWord | |||||||
| 29473 | CALL 29379 | Else, call 29379. | ||||||
| 29476 | JR PrintMsg_Next | Jump back to PrintMsg_Next to move onto the next character. | ||||||
| 
 
X
 
 | 
||||||||
| PrintMsg_PrintTable | 29478 | PUSH DE | Stash DE on the stack for later. | |||||
| 29479 | LD E,A | E=A - DE now holds the current character as the LSB. | ||||||
| 29480 | LD D,0 | |||||||
| 29482 | LD HL,29333 | HL=PrintTable | ||||||
| 29485 | ADD HL,DE | HL=(DE * 2) | ||||||
| 29486 | ADD HL,DE | |||||||
| 29487 | LD E,(HL) | Loads DE with the address held in HL. | ||||||
| 29488 | INC HL | |||||||
| 29489 | LD D,(HL) | |||||||
| 29490 | EX DE,HL | Exchange DE and HL. | ||||||
| 29491 | POP DE | Restore the previous value of DE from the stack. | ||||||
| 29492 | CP 20 | If the character is more than 20 jump to PrintMsg_Indirect_Jump. | ||||||
| 29494 | JR NC,PrintMsg_Indirect_Jump | |||||||
| 29496 | CALL PrintMsg_Indirect_Jump | Call PrintMsg_Indirect_Jump. | ||||||
| 29499 | JR Z,PrintMsg_Next | If xxxx jump back to PrintMsg_Next to move onto the next character. | ||||||
| 29501 | JR PrintMsg_Token | Jump to PrintMsg_Token. | ||||||
| PrintMsg_Indirect_Jump | 29503 | JP (HL) | Indirect jump to the address held in HL. | |||||
| Prev: 29395 | Up: Map | Next: 29504 |