Routines |
Prev: $3687 | Up: Map | Next: $3724 |
|
||||||||||
$36E3 | LDA #$08 | Prepare to address the screen refresh buffer (SRB) at $4008. | ||||||||
$36E5 | STA $52 | |||||||||
$36E7 | LDA #$40 | |||||||||
$36E9 | STA $53 | |||||||||
$36EB | LDA #$00 | Calculate the index of the SRB byte that corresponds to the leftmost segment of 8 character cells in the row at the given y-coordinate and store it at $55. | ||||||||
$36ED | LDY $4A | |||||||||
$36EF | BEQ $36F7 | |||||||||
$36F1 | CLC | |||||||||
$36F2 | ADC #$05 | |||||||||
$36F4 | DEY | |||||||||
$36F5 | BNE $36F1 | |||||||||
$36F7 | STA $55 | |||||||||
$36F9 | LDA $49 | Pick up the x-coordinate from $49, divide by 8 and store the result at $56. This will be added to the index at $55 later to get the index of the target SRB byte. | ||||||||
$36FB | LSR A | |||||||||
$36FC | LSR A | |||||||||
$36FD | LSR A | |||||||||
$36FE | STA $56 | |||||||||
$3700 | ASL A | Store the multiple of 8 closest to but not greater than the x-coordinate at $54. | ||||||||
$3701 | ASL A | |||||||||
$3702 | ASL A | |||||||||
$3703 | STA $54 | |||||||||
$3705 | LDA $49 | Compute the remainder when the x-coordinate is divided by 8 and transfer it to Y. This indicates the bit of the SRB byte that needs to be set. | ||||||||
$3707 | SEC | |||||||||
$3708 | SBC $54 | |||||||||
$370A | TAY | |||||||||
$370B | LDA #$80 | Set the bit in A that needs to be set in the SRB byte. | ||||||||
$370D | CPY #$00 | |||||||||
$370F | BEQ $3715 | |||||||||
$3711 | LSR A | |||||||||
$3712 | DEY | |||||||||
$3713 | BNE $3711 | |||||||||
$3715 | STA $54 | Store A (with the appropriate bit set) at $54. | ||||||||
$3717 | LDA $55 | Compute the index of the SRB byte that needs updating and transfer it to Y. | ||||||||
$3719 | CLC | |||||||||
$371A | ADC $56 | |||||||||
$371C | TAY | |||||||||
$371D | LDA ($52),Y | Set the appropriate bit in the SRB byte. | ||||||||
$371F | ORA $54 | |||||||||
$3721 | STA ($52),Y | |||||||||
$3723 | RTS |
Prev: $3687 | Up: Map | Next: $3724 |