Routines |
Prev: $16E8 | Up: Map | Next: $176F |
$16E9 | LDA #$17 | Replace the address of this interruptible subcommand routine in the teacher's buffer with that of $170E below. | ||
$16EB | STA $AB | |||
$16ED | LDA #$0E | |||
$16EF | STA $AA | |||
$16F1 | JSR $1468 | Get the identifier and coordinates of the blackboard closest to the teacher. | ||
$16F4 | LDA #$20 | Wiping a blackboard requires 32 distinct actions (in 8 groups of 4: two paces forward, arm up, arm down). | ||
$16F6 | STA $AC | |||
$16F8 | LDA $15 | Pick up the x-coordinate of the leftmost column of the blackboard. | ||
$16FA | CLC | Add 7 and store the result at $AD. This is the x-coordinate of the rightmost column of the blackboard, and the first to be wiped. | ||
$16FB | ADC #$07 | |||
$16FD | STA $AD | |||
$16FF | LDA $16 | Pick up the y-coordinate of the top row of the blackboard and store it at $AE. | ||
$1701 | STA $AE | |||
$1703 | LDA #$00 | Reset the blackboard pixel column counter at $19, and the number of the character who last wrote on the board at $1A. | ||
$1705 | STA $19 | |||
$1707 | STA $1A | |||
$1709 | LDY $DA | Pick up the blackboard identifier from $DA. | ||
$170B | JSR $1445 | Restore the blackboard's buffer from page 0. | ||
After the initial call to this routine, each subsequent call enters here.
|
||||
$170E | LDA $AC | Pick up the number of board-wiping actions remaining. | ||
$1710 | BNE $1715 | Branch unless the teacher has finished wiping the board. | ||
$1712 | JMP $1D28 | Terminate this interruptible subcommand. | ||
$1715 | JSR $322E | Update the SRB for the teacher's current animatory state and location. | ||
$1718 | DEC $AC | Decrement the board-wiping action counter at $AC and pick up its new value. | ||
$171A | LDA $AC | |||
$171C | LSR A | Is the teacher midstride or does he have his arm raised? | ||
$171D | BCS $1732 | Branch if not. | ||
$171F | PHA | Save the shifted board-wiping action counter temporarily. | ||
$1720 | LDA $26 | Clear bits 0-2 of the teacher's animatory state at $26, thus moving him from the midstride position or lowering his arm. | ||
$1722 | AND #$F8 | |||
$1724 | STA $26 | |||
$1726 | PLA | Restore the shifted board-wiping action counter. | ||
$1727 | LSR A | Was the teacher midstride? | ||
$1728 | BCC $172C | Branch if not. | ||
$172A | DEC $FC | Decrement the teacher's x-coordinate at $FC, moving him forward to the next blackboard column. | ||
$172C | JSR $322E | Update the SRB for the teacher's new animatory state and location. | ||
$172F | JMP $1769 | Return. | ||
$1732 | LSR A | Is the teacher ready to raise his arm (and wipe)? | ||
$1733 | BCC $173A | Branch if so. | ||
$1735 | INC $26 | Otherwise increment the teacher's animatory state at $26, moving him midstride on his way to the next blackboard column. | ||
$1737 | JMP $172C | Jump back. | ||
The teacher is ready to raise his arm and wipe a column of the board.
|
||||
$173A | LDA $26 | Add 5 to the teacher's animatory state at $26, making him raise his arm. | ||
$173C | CLC | |||
$173D | ADC #$05 | |||
$173F | STA $26 | |||
$1741 | JSR $322E | Update the SRB for the teacher's new animatory state. | ||
$1744 | LDA $AD | Pick up the x-coordinate of the column of the blackboard to wipe. | ||
$1746 | SEC | Subtract the x-coordinate of the leftmost column of the skool on screen; store the resulting screen x-coordinate at $49. | ||
$1747 | SBC $58 | |||
$1749 | STA $49 | |||
$174B | LDA $AE | Pick up the y-coordinate of the top row of the blackboard to wipe and copy it to $4A. | ||
$174D | STA $4A | |||
$174F | JSR $36E3 | Update the SRB for the character cell in the top row of the blackboard. | ||
$1752 | INC $4A | Increment the y-coordinate at $4A. | ||
$1754 | JSR $36E3 | Update the SRB for the character cell in the bottom row of the blackboard. | ||
$1757 | LDX $AD | Pick up the x-coordinate of the column of the blackboard to wipe and copy it to $15. | ||
$1759 | STX $15 | |||
$175B | LDY $AE | Pick up the y-coordinate of the top row of the blackboard to wipe and copy it to $16. | ||
$175D | STY $16 | |||
$175F | JSR $1994 | Wipe the blackboard character cell in the top row clean. | ||
$1762 | INC $16 | Increment the y-coordinate at $16. | ||
$1764 | JSR $1994 | Wipe the blackboard character cell in the bottom row clean. | ||
$1767 | DEC $AD | Decrement the blackboard column x-coordinate at $AD. | ||
$1769 | NOP | |||
$176A | NOP | |||
$176B | NOP | |||
$176C | NOP | |||
$176D | NOP | |||
$176E | RTS |
Prev: $16E8 | Up: Map | Next: $176F |