![]() |
Routines |
| Prev: $217D | Up: Map | Next: $2241 |
|
||||||||
| $217E | LDA #$20 | Prepare 5 space characters at $8A-$8E. | ||||||
| $2180 | STA $8A | |||||||
| $2182 | STA $8B | |||||||
| $2184 | STA $8C | |||||||
| $2186 | STA $8D | |||||||
| $2188 | STA $8E | |||||||
| $218A | LDA $A4 | Pick up the MSB of the number. | ||||||
| $218C | CMP #$28 | Is it less than 40 (meaning the number is less than 10240)? | ||||||
| $218E | BCC $21B6 | Branch if so. | ||||||
| $2190 | LDA $8A | Increment the character code of the first digit at $8A from space to '1', '1' to '2' etc. | ||||||
| $2192 | CLC | |||||||
| $2193 | ADC #$01 | |||||||
| $2195 | ORA #$10 | |||||||
| $2197 | STA $8A | |||||||
| $2199 | LDA #$30 | Set the character code of the second, third and fourth digits at $8B, $8C and $8D to '0'. | ||||||
| $219B | STA $8B | |||||||
| $219D | STA $8C | |||||||
| $219F | STA $8D | |||||||
| $21A1 | LDA $A3 | Subtract $2774 (10100) from the number at $A3. (This is a bug.) | ||||||
| $21A3 | SEC | |||||||
| $21A4 | SBC #$74 | |||||||
| $21A6 | STA $A3 | |||||||
| $21A8 | BCS $21AC | |||||||
| $21AA | DEC $A4 | |||||||
| $21AC | LDA $A4 | |||||||
| $21AE | SEC | |||||||
| $21AF | SBC #$27 | |||||||
| $21B1 | STA $A4 | |||||||
| $21B3 | JMP $218C | Jump back to consider the 10000's digit again. | ||||||
| $21B6 | CMP #$27 | Is the MSB of the number 39 (meaning the number is at least 9984)? | ||||||
| $21B8 | BNE $21C0 | Branch if not. | ||||||
| $21BA | LDA $A3 | Pick up the LSB of the number. | ||||||
| $21BC | CMP #$74 | Is it 116 or more (meaning the number is 10100 or more)? (This is a bug.) | ||||||
| $21BE | BCS $2190 | Branch back to deal with the 10000s digit if so. | ||||||
|
The 10000s digit has been computed. Now for the 1000s digit.
|
||||||||
| $21C0 | LDA $A4 | Pick up the MSB of what remains of the number. | ||||||
| $21C2 | CMP #$04 | Is it less than 4 (meaning the number is less than 1024)? | ||||||
| $21C4 | BCC $21EA | Branch if so. | ||||||
| $21C6 | LDA $8B | Increment the character code of the second digit at $8B from space or '0' to '1', '1' to '2' etc. | ||||||
| $21C8 | CLC | |||||||
| $21C9 | ADC #$01 | |||||||
| $21CB | ORA #$10 | |||||||
| $21CD | STA $8B | |||||||
| $21CF | LDA #$30 | Set the character code of the third and fourth digits at $8C and $8D to '0'. | ||||||
| $21D1 | STA $8C | |||||||
| $21D3 | STA $8D | |||||||
| $21D5 | LDA $A3 | Subtract $03E8 (1000) from the number at $A3. | ||||||
| $21D7 | SEC | |||||||
| $21D8 | SBC #$E8 | |||||||
| $21DA | STA $A3 | |||||||
| $21DC | BCS $21E0 | |||||||
| $21DE | DEC $A4 | |||||||
| $21E0 | LDA $A4 | |||||||
| $21E2 | SEC | |||||||
| $21E3 | SBC #$03 | |||||||
| $21E5 | STA $A4 | |||||||
| $21E7 | JMP $21C2 | Jump back to consider the 1000s digit again. | ||||||
| $21EA | CMP #$03 | Is the MSB of the number 3 (meaning the number is at least 768)? | ||||||
| $21EC | BNE $21F4 | Branch if not. | ||||||
| $21EE | LDA $A3 | Pick up the LSB of the number. | ||||||
| $21F0 | CMP #$E8 | Is it 232 or more (meaning the number is 1000 or more)? | ||||||
| $21F2 | BCS $21C6 | Branch back to deal with the 1000s digit if so. | ||||||
|
The 1000s digit has been computed. Now for the 100s digit.
|
||||||||
| $21F4 | LDA $A4 | Pick up the MSB of what remains of the number. | ||||||
| $21F6 | BEQ $2213 | Branch if it's zero (meaning the number is less than 256). | ||||||
| $21F8 | LDA $8C | Increment the character code of the third digit at $8C from space or '0' to '1', '1' to '2' etc. | ||||||
| $21FA | CLC | |||||||
| $21FB | ADC #$01 | |||||||
| $21FD | ORA #$10 | |||||||
| $21FF | STA $8C | |||||||
| $2201 | LDA $A3 | Subtract $64 (100) from the number at $A3. | ||||||
| $2203 | SEC | |||||||
| $2204 | SBC #$64 | |||||||
| $2206 | STA $A3 | |||||||
| $2208 | BCS $220C | |||||||
| $220A | DEC $A4 | |||||||
| $220C | LDA #$30 | Set the character code of the fourth digit at $8D to '0'. | ||||||
| $220E | STA $8D | |||||||
| $2210 | JMP $21F4 | Jump back to consider the 100s digit again. | ||||||
| $2213 | LDA $A3 | Pick up the LSB of the number. | ||||||
| $2215 | CMP #$64 | Is it 100 or more? | ||||||
| $2217 | BCS $21F8 | Branch back to deal with the 100s digit if so. | ||||||
| $2219 | JMP $2222 | Otherwise jump forward to compute the 10s digit. | ||||||
| $221C | LDA #$20 | Set the character codes of the last two digits at $8D and $8E to 32 (space). | ||||||
| $221E | STA $8D | |||||||
| $2220 | STA $8E | |||||||
|
The 100s digit has been computed. Now for the 10s digit.
|
||||||||
| $2222 | LDA $A3 | Pick up the LSB of what remains of the number. | ||||||
| $2224 | CMP #$0A | Is it less than 10? | ||||||
| $2226 | BCC $223B | Branch if so. | ||||||
| $2228 | LDA $8D | Increment the character code of the fourth digit at $8D from space or '0' to '1', '1' to '2' etc. | ||||||
| $222A | CLC | |||||||
| $222B | ADC #$01 | |||||||
| $222D | ORA #$10 | |||||||
| $222F | STA $8D | |||||||
| $2231 | LDA $A3 | Subtract 10 from the number at $A3. | ||||||
| $2233 | SEC | |||||||
| $2234 | SBC #$0A | |||||||
| $2236 | STA $A3 | |||||||
| $2238 | JMP $2222 | Jump back to consider the 10s digit again. | ||||||
|
The 10s digit has been computed. Now for the 1s digit.
|
||||||||
| $223B | CLC | Add 48 to the remaining value to get the character code of the final digit, and store it at $8E. | ||||||
| $223C | ADC #$30 | |||||||
| $223E | STA $8E | |||||||
| $2240 | RTS | |||||||
| Prev: $217D | Up: Map | Next: $2241 |