Routines |
Prev: 63055 | Up: Map | Next: 63146 |
63056 | LD HL,32763 | 32763 holds ERIC's status flags | ||
63059 | BIT 7,(HL) | Is ERIC sitting or lying down? | ||
63061 | RET NZ | Return if so | ||
63062 | CALL 26184 | Is ERIC on a staircase? | ||
63065 | RET NZ | Return if so | ||
63066 | CP 169 | Is ERIC on the bottom floor? | ||
63068 | RET Z | Return if so | ||
63069 | CP 155 | Set the zero flag if ERIC's on the top floor | ||
63071 | LD BC,12332 | C=44, B=48 (x-coordinates of the edges of the 'writing zone' for the Reading Room blackboard) | ||
63074 | LD A,E | A=ERIC's x-coordinate | ||
63075 | JR Z,63087 | Jump if ERIC's on the top floor | ||
63077 | LD BC,8220 | C=28, B=32 (x-coordinates of the edges of the writing zone for the White Room blackboard) | ||
63080 | CP 40 | Is ERIC to the left of the White Room wall? | ||
63082 | JR C,63087 | Jump if so | ||
63084 | LD BC,12075 | C=43, B=47 (x-coordinates of the edges of the writing zone for the Exam Room blackboard) | ||
Now C and B hold the x-coordinates of the left and right edges of the writing zone for the blackboard closest to ERIC.
|
||||
63087 | CP C | Return if ERIC is not standing close enough to the blackboard to write on it | ||
63088 | RET C | |||
63089 | CP B | |||
63090 | RET NC | |||
63091 | SET 5,(HL) | Set bit 5 of ERIC's status flags at 32763: ERIC is writing on a blackboard | ||
63093 | LD H,172 | 172=ERIC | ||
63095 | CALL 28968 | Get the blackboard identifier in A | ||
63098 | LD L,A | HL=32749 (Reading Room), 32751 (White Room) or 32753 (Exam Room) | ||
63099 | LD H,127 | |||
63101 | INC L | |||
63102 | SUB 180 | B=56 (Reading Room), 58 (White Room) or 60 (Exam Room) | ||
63104 | LD B,A | |||
63105 | LD A,(HL) | A=number of the character who last wrote on this board | ||
63106 | LD (HL),172 | Signal that ERIC (172) wrote on this board | ||
63108 | XOR 128 | C=128 (bit 7 set) if the board is clean, <128 (bit 7 reset) if not | ||
63110 | LD C,A | |||
63111 | LD A,B | HL=32680 (Reading Room blackboard), 32686 (White Room blackboard), or 32692 (Exam Room blackboard) | ||
63112 | ADD A,A | |||
63113 | ADD A,B | |||
63114 | LD L,A | |||
63115 | LD B,4 | Prepare the 4 slots in the blackboard buffer that will store the first 4 characters written on the board by ERIC; each slot will have bit 7 set if the board was clean before ERIC started writing | ||
63117 | LD (HL),C | |||
63118 | INC L | |||
63119 | DJNZ 63117 | |||
63121 | LD (HL),1 | ERIC will start writing at pixel column 1 | ||
This entry point is used by the routine at 63146.
|
||||
63123 | LD HL,44128 | Point HL at byte 96 of ERIC's buffer | ||
63126 | LD B,(HL) | Pick up ERIC's animatory state in B, and his coordinates in DE | ||
63127 | INC L | |||
63128 | LD D,(HL) | |||
63129 | INC L | |||
63130 | LD E,(HL) | |||
63131 | LD A,87 | Set 32764 (which holds the ASCII code of the last keypress) to 'W' (upper case, so ERIC can write fast) | ||
63133 | LD (32764),A | |||
63136 | LD H,D | Copy ERIC's coordinates to HL | ||
63137 | LD L,E | |||
63138 | LD A,B | A=ERIC's current animatory state | ||
63139 | AND 128 | A=13 or 141: ERIC with arm up, as if writing | ||
63141 | ADD A,13 | |||
63143 | JP 25916 | Raise ERIC's arm |
Prev: 63055 | Up: Map | Next: 63146 |