Prev: 37018 Up: Map Next: 37221
37176: EnqueueMessage
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