Routines |
Prev: 30574 | Up: Map | Next: 30626 |
30575 | CALL 61923 | Check for keypresses or hang up the phone | ||
30578 | RET Z | Return if no key with an ASCII code in the range 48-127 was pressed | ||
30579 | CP 97 | Is the ASCII code of the keypress less than 97 ('a')? | ||
30581 | RET C | Return if so | ||
30582 | CP 104 | Is the ASCII code of the keypress less than 104 ('h')? | ||
30584 | JR C,30591 | Jump if so | ||
30586 | CP 115 | Was 's' pressed? | ||
30588 | RET NZ | Return if not | ||
30589 | SUB 11 | A=104 | ||
30591 | ADD A,7 | A=104-111 (message number of a name) | ||
30593 | LD (32720),A | Store this at 32720 | ||
30596 | PUSH AF | Save the name message number briefly | ||
30597 | LD A,40 | Message 40: ''{name}' I SAID ' | ||
30599 | CALL 30154 | Queue this message urgently | ||
30602 | LD HL,(32663) | Collect from 32663 the address of either the second byte of the relevant phone table entry (if the phone was ringing, or the person Sam's calling has a message for him), or the final byte of the phone message table at 27506 (if the person Sam's calling has no message for him); the final byte of the phone message table is 255, which does not match the message number of any name | ||
30605 | POP AF | Restore the name message number to A | ||
30606 | CP (HL) | Set the zero flag if Sam has used the correct name | ||
30607 | LD A,46 | Message 46: 'I DUNNO NO {name}' | ||
30609 | JR NZ,30617 | Jump unless Sam has used the correct name | ||
This entry point is used by the routine at 30627.
|
||||
30611 | DEC HL | Point HL at the first byte of the phone entry | ||
30612 | LD (HL),0 | Mark the phone entry inactive | ||
30614 | INC HL | Point HL at the third byte of the phone entry | ||
30615 | INC HL | |||
30616 | LD A,(HL) | A=telephone message number | ||
30617 | LD HL,512 | Clear 32666 and set bit 1 of the telephone call status flags at 32667 (to disconnect the call) | ||
30620 | LD (32666),HL | |||
30623 | JP 30154 | Queue the telephone message urgently |
Prev: 30574 | Up: Map | Next: 30626 |