Routines
 Prev: 26336 Up: Map Next: 26422
26342: Change the lesson
 This routine is called from the main loop at 26471 when the lesson clock has counted down to zero. It sets each character up with the appropriate command list for the next lesson. 26342 LD HL,5376 Reset the lesson clock at 32759 26345 LD (32759),HL 26348 LD HL,32761 Advance the lesson number at 32761 by one and get the next lesson number (0-63) in A 26351 INC (HL) 26352 LD A,(HL) 26353 CP 64 26355 JR NZ,26359 26357 XOR A 26358 LD (HL),A 26359 LD E,A E=lesson number (0-63) 26360 CALL 63749 Get the identifier for this lesson in A 26363 CP D D=254; ring the bell unless this is the second PLAYTIME in a row (only PLAYTIMEs 254 and 255 follow another PLAYTIME) 26364 PUSH AF 26365 CALL C,26450 26368 LD HL,32712 Clear the flags at 32712, 32713, 32714 and 32715, the unused bytes at 32716, MR CREAK's birth year question indicator at 32730, and the unused byte at 32731 26371 LD B,20 26373 LD (HL),0 26375 INC L 26376 DJNZ 26373 26378 POP AF 26379 LD E,A E=lesson identifier (224-255) from the main timetable 26380 LD D,172 Pick up the lesson descriptor (which determines who is teaching ERIC and in what room) and place it in 32756 26382 LD A,(DE) 26383 LD (32756),A 26386 PUSH DE 26387 CALL 63909 Print the teacher and room names in the lesson box 26390 POP DE 26391 LD B,20 There are 20 non-player characters to prepare for the new lesson, starting with little boy no. 1 (152) 26393 LD H,152 This entry point is used by the routine at 31815 with B=1 to restart the command list for a single character. 26395 EXX 26396 LD H,254 The addresses of the command lists are in page 254 at 65152 26398 EXX 26399 LD D,H D=character number (152-171) 26400 LD L,122 Set bit 0 of byte 122 of the character's buffer; this will trigger a restart of the command list (see 25126) 26402 SET 0,(HL) 26404 LD L,119 26406 LD A,(DE) Pick up the command list number for this lesson from the character's personal timetable 26407 EXX 26408 LD L,A A=LSB of the address of the command list 26409 LD A,(HL) 26410 INC L Point HL' at the MSB of the address of the command list 26411 EXX 26412 LD (HL),A Copy the LSB to byte 119 of the character's buffer 26413 INC L L=120 26414 EXX 26415 LD A,(HL) A=MSB of the address of the command list 26416 EXX 26417 LD (HL),A Copy the MSB to byte 120 of the character's buffer 26418 INC H Next character 26419 DJNZ 26399 Jump back until all characters have been done 26421 RET
 Prev: 26336 Up: Map Next: 26422