| Routines

24133: 'W' pressed - write on a blackboard

The address of this routine is found in the table of keypress handling routines at 58704. It is called from the main loop at 63210 when 'W' is pressed.
24133 | LD H,210 | 210=ERIC
24135 | CALL 26453 | Collect info about the board ERIC's standing at (if any)
24138 | RET C | Return if ERIC's not standing at a blackboard
24139 | LD HL,32728 | Copy the blackboard identifier (84, 90, 96, 102 or 108) from B to 32728
24142 | LD (HL),B
24143 | DEC L | While ERIC is writing on the board, 32727 will be used to store the ASCII code of the last character written; initialise this with something other than 13 (ENTER)
24144 | LD (HL),L
24145 | LD L,B | Point HL at the first byte of the blackboard's buffer, which usually holds the number of the next clean pixel column
24146 | LD (HL),1 | ERIC will start writing at pixel column 1 (regardless of what's already been written on the board)
24148 | INC L | A=number of the character who last wrote on this board, or 0 if it's clean
24149 | LD A,(HL)
24150 | LD (HL),210 | Signal: ERIC wrote on this board
24152 | LD B,4 | There are 4 digits or letters in the bike and storeroom combinations
24154 | CPL | A=128 if the board is clean, 0 otherwise
24155 | AND 128
24157 | INC L | Prepare 4 spaces in bytes 2-5 of the blackboard buffer for combination letters/numbers, with bit 7 set if the board is clean
24158 | LD (HL),A
24159 | DJNZ 24157
24161 | LD L,251 | HL=32763 (ERIC's status flags)
24163 | LD (HL),16 | Set bit 4: ERIC is writing on a blackboard
This entry point is used by the routine at 24175.
24165 | LD H,210 | 210=ERIC
24167 | CALL 25012 | Update the SRB for ERIC's current animatory state
24170 | OR 7 | A=7/135: ERIC with his arm up (as if writing on a board)
24172 | JP 62231 | Update ERIC's animatory state and location and update the SRB