| Alien (BUGFIX 1.7) | Routines |
| Prev: 37018 | Up: Map | Next: 37221 |
|
Enqueue status message A (from MessageTextTable) with the actor and target slots for the 254/253 name substitutions passed in L and H. A repeat of the last-enqueued message number is dropped.
|
||||
| 37176 | EX DE,HL | E = actor, D = target | ||
| 37177 | LD HL,(33743) | same msg# and actor as the last | ||
| 37180 | CP L | one enqueued? | ||
| 37181 | JR NZ,37187 | |||
| 37183 | LD A,E | |||
| 37184 | CP H | |||
| 37185 | RET Z | yes: drop the duplicate | ||
| 37186 | LD A,L | (A = the msg# again) | ||
| 37187 | EX AF,AF' | |||
| 37188 | LD HL,(33741) | queue full? (the write ptr has hit | ||
| 37191 | LD A,(HL) | the 255 that starts MsgLastEnqueued, | ||
| 37192 | CP 255 | ~9 entries in) | ||
| 37194 | RET Z | yes: drop the message | ||
| 37195 | EX AF,AF' | |||
| 37196 | LD (HL),A | append the 3-byte entry: | ||
| 37197 | INC HL | msg#, actor, target | ||
| 37198 | LD (HL),E | |||
| 37199 | INC HL | |||
| 37200 | LD (HL),D | |||
| 37201 | INC HL | |||
| 37202 | LD (33741),HL | |||
| 37205 | LD L,A | remember (msg#, actor) for the | ||
| 37206 | LD H,E | duplicate check | ||
| 37207 | LD (33743),HL | |||
| 37210 | LD A,(33709) | a message currently on display? | ||
| 37213 | AND A | |||
| 37214 | RET Z | |||
| 37215 | LD A,1 | yes: cut its hold time short so | ||
| 37217 | LD (33709),A | the new one appears promptly | ||
| 37220 | RET | |||
| Prev: 37018 | Up: Map | Next: 37221 |