![]() |
Routines |
| DE | Coordinates of ERIC's hand |
| 63270 | LD A,(32746) | Pick up the shield status in A |
| 63273 | CP 2 | Are all the shields flashing? |
| 63275 | JP NZ,28130 | Jump if not (to check whether ERIC touched a shield) |
| 63278 | LD A,D | A=y-coordinate of ERIC's hand |
| 63279 | CP 161 | 161=y-coordinate of spot just under safe in staff room |
| 63281 | RET NZ | Return if ERIC is not on the middle floor |
| 63282 | LD A,E | A=x-coordinate of ERIC's hand |
| 63283 | CP 10 | Has ERIC jumped up to the safe? |
| 63285 | RET NZ | Return if not |
| 63286 | LD HL,32749 | 32749: Number of character who last wrote on Reading Room blackboard |
| 63289 | LD DE,32680 | 32680: Reading Room blackboard contents buffer |
| 63292 | LD C,3 | There are 3 blackboards |
| 63294 | LD A,(HL) | A=number of character who last wrote on this board |
| 63295 | INC HL | Move HL along to the next blackboard |
| 63296 | INC HL | |
| 63297 | CP 172 | Did ERIC write on this board? |
| 63299 | JR NZ,63322 | Jump if not |
| 63301 | PUSH HL | |
| 63302 | LD L,159 | HL=32671 (which holds the safe combination code) |
| 63304 | LD B,4 | There are 4 characters in the safe combination code |
| 63306 | PUSH DE | |
| 63307 | LD A,(DE) | A=letter written on blackboard by ERIC |
| 63308 | AND 95 | Convert to upper case |
| 63310 | INC E | Move to the next letter on the blackboard |
| 63311 | CP (HL) | Does the letter on the blackboard match a safe combination letter? |
| 63312 | JR NZ,63318 | Jump if not |
| 63314 | INC L | Move to the next letter of the safe combination code |
| 63315 | DJNZ 63307 | Jump back until all four letters have been checked |
| 63317 | XOR A | Set the zero flag to indicate a match |
| 63318 | POP DE | |
| 63319 | POP HL | |
| 63320 | JR Z,63330 | Jump if ERIC got the right combination |
| 63322 | LD A,E | Point DE at the next blackboard contents buffer (32686 or 32692) |
| 63323 | ADD A,6 | |
| 63325 | LD E,A | |
| 63326 | DEC C | Decrease the blackboard counter |
| 63327 | JR NZ,63294 | Jump back until all three blackboards have been checked |
| 63329 | RET |
| 63330 | CALL 63668 | Add 1000 to the score and play a celebratory tune |
| 63333 | LD HL,41354 | 41354 holds the attribute byte for the safe |
| 63336 | SET 7,(HL) | Alter the attribute byte of the safe to make it flash |
| 63338 | EX DE,HL | DE=41354 |
| 63339 | CALL 62674 | Get the attribute file address of the safe in HL |
| 63342 | RET C | Return if the safe is off-screen (unlikely!) |
| 63343 | SET 7,(HL) | Adjust the on-screen attribute byte of the safe |
| 63345 | RET |