![]() |
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 | 155=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 |