Routines 
Prev: $217E  Up: Map  Next: $2387 
$2241  LDA $60  Pick up the current character number from $60.  
$2243  CMP #$0B  Is it $0B (MR WACKER)?  
$2245  BEQ $224A  Branch if so.  
$2247  JMP $22F3  Otherwise jump forward.  
MR WACKER is conducting this lesson, so we have to prepare a multiplication question and answer. First, generate two random numbers and store the ASCII codes of their digits in the question message.


$224A  LDX #$20  Generate a random number between 32 and 99 and store it at $A3 and $C0.  
$224C  LDY #$63  
$224E  JSR $253E  
$2251  STA $A3  
$2253  STA $C0  
$2255  LDA #$30  Store the code for '0' at $8B for no apparent reason.  
$2257  STA $8B  
$2259  JSR $221C  Generate the character codes of the digits of this number at $8D and $8E.  
$225C  LDA #$00  Store $5A00 (WHAT IS 12 x 34?) at $50.  
$225E  STA $50  
$2260  LDA #$5A  
$2262  STA $51  
$2264  LDY #$08  Replace the '12' in this message with the digits of the number.  
$2266  LDA $8D  
$2268  STA ($50),Y  
$226A  INY  
$226B  LDA $8E  
$226D  STA ($50),Y  
$226F  LDX #$20  Generate another random number between 32 and 99 and store it at $A3 and $C1.  
$2271  LDY #$63  
$2273  JSR $253E  
$2276  STA $A3  
$2278  STA $C1  
$227A  LDA #$30  Store the code for '0' at $8B for no apparent reason.  
$227C  STA $8B  
$227E  JSR $221C  Generate the character codes of the digits of this number at $8D and $8E.  
$2281  LDY #$0D  Replace the '34' in the question message with the digits of the number.  
$2283  LDA $8D  
$2285  STA ($50),Y  
$2287  INY  
$2288  LDA $8E  
$228A  STA ($50),Y  
$228C  LDY #$08  Multiply the two numbers and store the product at $A3 and $A4.  
$228E  LDA #$00  
$2290  ASL A  
$2291  ROL $C0  
$2293  BCC $229C  
$2295  CLC  
$2296  ADC $C1  
$2298  BCC $229C  
$229A  INC $C0  
$229C  DEY  
$229D  BNE $2290  
$229F  STA $A3  
$22A1  LDA $C0  
$22A3  STA $A4  
$22A5  JSR $217E  Generate the character codes of the digits of this product.  
$22A8  LDA #$11  Store $5A11 (Please Sir I cannot tell a lie . . It's 1234) at $52.  
$22AA  STA $52  
$22AC  LDA #$5A  
$22AE  STA $53  
$22B0  LDY #$06  Replace the '1234' in this message with the digits of the answer to the multiplication question.  
$22B2  LDA $8B  
$22B4  STA ($52),Y  
$22B6  INY  
$22B7  LDA $8C  
$22B9  STA ($52),Y  
$22BB  INY  
$22BC  LDA $8D  
$22BE  STA ($52),Y  
$22C0  INY  
$22C1  LDA $8E  
$22C3  STA ($52),Y  
$22C5  LDA $60  Pick up the teacher's character number from $60.  
$22C7  PHA  Save it temporarily.  
$22C8  LDA #$11  Set the current character number at $60 to $11 (EINSTEIN).  
$22CA  STA $60  
$22CC  JSR $3279  Copy EINSTEIN's character buffer to page 0.  
$22CF  LDA $52  Copy the address of the answer message into EINSTEIN's character buffer.  
$22D1  STA $AC  
$22D3  LDA $53  
$22D5  STA $AD  
$22D7  JSR $33BF  Restore EINSTEIN's buffer from page 0.  
$22DA  PLA  Restore the teacher's character number to A.  
$22DB  STA $60  Update the current character number at $60.  
$22DD  JSR $3279  Copy the teacher's character buffer to page 0.  
$22E0  LDA $50  Copy the address of the question message into the teacher's buffer.  
$22E2  STA $AC  
$22E4  LDA $51  
$22E6  STA $AD  
$22E8  LDA #$87  Place the address of the interruptible subcommand routine at $2387 into the teacher's buffer to make him ask the question.  
$22EA  STA $AA  
$22EC  LDA #$23  
$22EE  STA $AB  
$22F0  JMP $2386  Return.  
Some teacher other than MR WACKER is conducting this lesson. Check whether MR CREAK needs to ask what happened in the year that he was born.


$22F3  CMP #$0E  Is the current character number $0E (MR CREAK)?  
$22F5  BNE $2320  Branch if not.  
$22F7  LDA $46  Pick up the game mode indicator from $46.  
$22F9  BEQ $2320  Branch if we're in demo mode.  
$22FB  CMP #$03  Has ERIC already opened the safe?  
$22FD  BCS $2320  Branch if so.  
$22FF  LDA $C2  Has MR CREAK already asked the birth year question in this lesson?  
$2301  BNE $2320  Branch if so.  
$2303  LDA #$01  Update the birth year question indicator at $C2.  
$2305  STA $C2  
$2307  LDA #$2D  Store $5B2D (WHAT HAPPENED IN THE YEAR THAT I WAS BORN) at $50.  
$2309  STA $50  
$230B  LDA #$5B  
$230D  STA $51  
$230F  LDA #$E1  Store $5AE1 (Please Sir I cannot tell a lie . . It was the BATTLE OF Q) at $52.  
$2311  STA $52  
$2313  LDA #$5A  
$2315  STA $53  
$2317  LDY #$16  Replace the 'Q' in this message with the message number of MR CREAK's year of birth.  
$2319  LDA $A5  
$231B  STA ($52),Y  
$231D  JMP $22C5  Jump back to prepare MR CREAK and EINSTEIN.  
Now we randomly select a questionanswer pair.


$2320  LDX #$00  Generate a random value between $00 and $29 and store it at $57.  
$2322  LDY #$29  
$2324  JSR $253E  
$2327  STA $57  
$2329  LDA $60  Pick up the current character number from $60.  
$232B  CMP #$0C  Is it $0C (MR ROCKITT)?  
$232D  BEQ $2338  Branch if so.  
$232F  CMP #$0D  Is the current character number $0D (MR WITHIT)?  
$2331  BEQ $233D  Branch if so.  
$2333  LDA #$D4  The history message numbers are in the range $D4$FD.  
$2335  JMP $233F  Jump forward.  
$2338  LDA #$80  The chemistry message numbers are in the range $80$A9.  
$233A  JMP $233F  Jump forward.  
$233D  LDA #$AA  The geography message numbers are in the range $AA$D3.  
$233F  CLC  Add the random value between $00 and $29 chosen earlier to the base message number, and store the result at $C3.  
$2340  ADC $57  
$2342  STA $C3  
$2344  LDA $60  Pick up the teacher's character number ($0C$0E) from $60.  
$2346  SEC  Change it to 0 (MR ROCKITT), 4 (MR WITHIT) or 8 (MR CREAK), and store it at $57.  
$2347  SBC #$0C  
$2349  ASL A  
$234A  ASL A  
$234B  STA $57  
$234D  LDA $C3  Pick up the message number from $C3.  
$234F  LSR A  Is the message number even?  
$2350  BCC $2359  Branch if so.  
$2352  LDA $57  Add 12 to the teacher identifier at $57, giving 12 (MR ROCKITT), 16 (MR WITHIT) or 20 (MR CREAK).  
$2354  CLC  
$2355  ADC #$0C  
$2357  STA $57  
$2359  LDA $57  Pick up the LSB of the address of the question message from the data table at $46E0 and copy it to $50.  
$235B  TAX  
$235C  LDA $46E0,X  
$235F  STA $50  
$2361  LDA #$5A  Set the MSB of the address of the question message to $5A.  
$2363  STA $51  
$2365  INX  Replace the 'Q' in the question message with the randomly chosen message number saved at $C3.  
$2366  LDA $46E0,X  
$2369  TAY  
$236A  LDA $C3  
$236C  STA ($50),Y  
$236E  INX  Pick up the LSB of the address of the answer message from the data table at $46E0 and copy it to $52.  
$236F  LDA $46E0,X  
$2372  STA $52  
$2374  LDA #$5A  Set the MSB of the address of the question message to $5A.  
$2376  STA $53  
$2378  INX  Replace the 'Q' in the answer message with the appropriate message number.  
$2379  LDA $46E0,X  
$237C  TAY  
$237D  LDA $C3  
$237F  EOR #$01  
$2381  STA ($52),Y  
$2383  JMP $22C5  Jump back to prepare the teacher and EINSTEIN.  
$2386  RTS 
Prev: $217E  Up: Map  Next: $2387 