Routines |
Prev: $108A | Up: Map | Next: $1129 |
|
||||||||
$108B | LDY #$00 | Prepare Y for indexed addressing. | ||||||
$108D | LDA $AF | Is there a submessage address at $AE? | ||||||
$108F | BEQ $10A2 | Branch if not. | ||||||
$1091 | LDA ($AE),Y | Pick up the next character from the submessage. | ||||||
$1093 | INC $AE | Increment the submessage address at $AE. | ||||||
$1095 | BNE $1099 | |||||||
$1097 | INC $AF | |||||||
$1099 | CMP #$00 | Is the submessage finished? | ||||||
$109B | BEQ $10A0 | Branch if so. | ||||||
$109D | JMP $1128 | Otherwise return. | ||||||
$10A0 | STY $AF | Clear the submessage address from $AE. | ||||||
$10A2 | LDA ($AC),Y | Pick up the next character from the message. | ||||||
$10A4 | INC $AC | Increment the message address at $AC. | ||||||
$10A6 | BNE $10AA | |||||||
$10A8 | INC $AD | |||||||
$10AA | CMP #$80 | Is the character code $80 or greater? | ||||||
$10AC | BCS $10B2 | Branch if so. | ||||||
$10AE | CMP #$20 | Is the character code between $20 and $7F? | ||||||
$10B0 | BCS $1128 | Return if so. | ||||||
$10B2 | CMP #$10 | Is the character code less than $10? | ||||||
$10B4 | BCC $1128 | Return if so. | ||||||
$10B6 | PHA | Save the character code ($11-$1F, $80-$FF) temporarily. | ||||||
$10B7 | CMP #$80 | Is the character code $80 or greater? | ||||||
$10B9 | BCS $10EE | Branch if so. | ||||||
$10BB | CMP #$18 | Is the character code between $18 and $1F? | ||||||
$10BD | BCS $10CA | Branch if so. | ||||||
$10BF | LDA #$47 | The character names are stored at intervals of $0E from $4780 onwards. Store this base address at $1D. | ||||||
$10C1 | STA $1E | |||||||
$10C3 | LDA #$80 | |||||||
$10C5 | STA $1D | |||||||
$10C7 | JMP $10D6 | Jump forward. | ||||||
$10CA | LDA #$47 | Store $47F0 (Please Sir - I cannot tell a lie . .) at $1D. | ||||||
$10CC | STA $1E | |||||||
$10CE | LDA #$F0 | |||||||
$10D0 | STA $1D | |||||||
$10D2 | PLA | Restore the character code ($18-$1F) to A. | ||||||
$10D3 | JMP $111D | Jump forward with submessage address $47F0 at $1D. | ||||||
$10D6 | PLA | Restore the character code ($11-$17) to A. | ||||||
$10D7 | AND #$EF | Clear bit 4. | ||||||
$10D9 | ASL A | Multiply A by 14. | ||||||
$10DA | STA $57 | |||||||
$10DC | ASL A | |||||||
$10DD | STA $56 | |||||||
$10DF | ASL A | |||||||
$10E0 | CLC | |||||||
$10E1 | ADC $56 | |||||||
$10E3 | CLC | |||||||
$10E4 | ADC $57 | |||||||
$10E6 | CLC | Add A to the address stored at $1D. | ||||||
$10E7 | ADC $1D | |||||||
$10E9 | STA $1D | |||||||
$10EB | JMP $111D | Jump forward with this character name submessage address at $1D. | ||||||
$10EE | LDA #$4D | Initialise the MSB of the submessage address to $4D. | ||||||
$10F0 | STA $1E | |||||||
$10F2 | PLA | Restore the character code ($80-$FF) to A. | ||||||
$10F3 | AND #$7F | Clear bit 7. | ||||||
$10F5 | CMP #$16 | Is the character code now less than $16? | ||||||
$10F7 | BCC $1113 | Branch if so with the MSB equal to $4D. | ||||||
$10F9 | INC $1E | Set the MSB of the submessage address to $4E if the character code is between $16 and $2A, $4F if the character code is between $2B and $3F, $50 if the character code is between $40 and $55, $51 if the character code is between $56 and $6A, or $52 if the character code is greater than $6B. | ||||||
$10FB | CMP #$2B | |||||||
$10FD | BCC $1113 | |||||||
$10FF | INC $1E | |||||||
$1101 | CMP #$40 | |||||||
$1103 | BCC $1113 | |||||||
$1105 | INC $1E | |||||||
$1107 | CMP #$56 | |||||||
$1109 | BCC $1113 | |||||||
$110B | INC $1E | |||||||
$110D | CMP #$6B | |||||||
$110F | BCC $1113 | |||||||
$1111 | INC $1E | |||||||
$1113 | ASL A | Multiply A by 12. The result is the LSB of the submessage address. | ||||||
$1114 | ASL A | |||||||
$1115 | STA $57 | |||||||
$1117 | ASL A | |||||||
$1118 | CLC | |||||||
$1119 | ADC $57 | |||||||
$111B | STA $1D | Store the LSB at $1D. | ||||||
$111D | LDA $1D | Copy the submessage address from $1D to $AE. | ||||||
$111F | STA $AE | |||||||
$1121 | LDA $1E | |||||||
$1123 | STA $AF | |||||||
$1125 | JMP $1091 | Jump back to pick up the first character from the submessage. | ||||||
$1128 | RTS |
Prev: $108A | Up: Map | Next: $1129 |