Prev: $28BB Up: Map Next: $290F
$28BC: Make little boy no. 10 give ERIC a message
This corresponds to $F800 in the ZX Spectrum version.
Used by command lists $D0 and $D2.
$28BC LDA $2B Set bit 6 of ERIC's status flags at $2B, indicating that he is immobilised.
$28BE ORA #$40
$28C0 STA $2B
$28C2 JSR $3BE7 Collect the message address from the command list and store it at $A6.
$28C5 STA $A6
$28C7 JSR $3BE7
$28CA STA $A7
$28CC LDA #$FF Set the MSB of the lesson clock at $40 to $FF to ensure that the bell won't ring before the message is delivered.
$28CE STA $40
$28D0 LDA $A6 Copy the message address from $A6 to $AC.
$28D2 STA $AC
$28D4 LDA $A7
$28D6 STA $AD
$28D8 JSR $1F77 Place the address of the interruptible subcommand routine at $2387 into little boy no. 10's buffer and jump to it.
$28DB .WORD $2387
Control returns here after the message has been delivered.
$28DD LDA $2B Set bit 5 of ERIC's status flags at $2B, indicating that little boy no. 10 is expecting a response.
$28DF ORA #$20
$28E1 STA $2B
$28E3 LDA #$46 Store $4620 (PRESS 'U' IF YOU UNDERSTAND) at $AC.
$28E5 STA $AD
$28E7 LDA #$20
$28E9 STA $AC
$28EB LDA #$28 Initialise the message repetition delay counter at $A9.
$28ED STA $A9
$28EF JSR $1F77 Place the address of the interruptible subcommand routine at $2387 into little boy no. 10's buffer and jump to it.
$28F2 .WORD $2387
Control returns here after little boy no. 10 has asked ERIC if he understands.
$28F4 LDA $2B Pick up ERIC's status flags from $2B.
$28F6 ASL A Is bit 6 set, indicating that he is still immobolised?
$28F7 ASL A
$28F8 BCS $2901 Branch if so.
$28FA LDA #$0F Reset the MSB of the lesson clock to $0F.
$28FC STA $40
$28FE JMP $1D2D Terminate this primary command.
$2901 DEC $A9 Decrement the message repetition delay counter at $A9.
$2903 BNE $290E Branch unless it's zero now.
$2905 LDA $2B Reset bit 5 of ERIC's status flags at $2B, indicating that little boy no. 10 is no longer expecting a response, because he's going to repeat the message first.
$2907 AND #$DF
$2909 STA $2B
$290B JMP $28CC Jump back to deliver the message again.
$290E RTS
Prev: $28BB Up: Map Next: $290F