| C64 ROM | Routines |
| Prev: A389 | Up: Map | Next: A3B8 |
| A38A | BA | TSX | copy stack pointer | |
| A38B | E8 | INX | +1 pass return address | |
| A38C | E8 | INX | +2 pass return address | |
| A38D | E8 | INX | +3 pass calling routine return address | |
| A38E | E8 | INX | +4 pass calling routine return address | |
| A38F | BD 01 01 | LDA $0101,X | get the token byte from the stack | |
| A392 | C9 81 | CMP #$81 | is it the FOR token | |
| A394 | D0 21 | BNE $A3B7 | if not FOR token just exit | |
|
it was the FOR token
|
||||
| A396 | A5 4A | LDA $4A | get FOR/NEXT variable pointer high byte | |
| A398 | D0 0A | BNE $A3A4 | branch if not null | |
| A39A | BD 02 01 | LDA $0102,X | get FOR variable pointer low byte | |
| A39D | 85 49 | STA $49 | save FOR/NEXT variable pointer low byte | |
| A39F | BD 03 01 | LDA $0103,X | get FOR variable pointer high byte | |
| A3A2 | 85 4A | STA $4A | save FOR/NEXT variable pointer high byte | |
| A3A4 | DD 03 01 | CMP $0103,X | compare variable pointer with stacked variable pointer high byte | |
| A3A7 | D0 07 | BNE $A3B0 | branch if no match | |
| A3A9 | A5 49 | LDA $49 | get FOR/NEXT variable pointer low byte | |
| A3AB | DD 02 01 | CMP $0102,X | compare variable pointer with stacked variable pointer low byte | |
| A3AE | F0 07 | BEQ $A3B7 | exit if match found | |
| A3B0 | 8A | TXA | copy index | |
| A3B1 | 18 | CLC | clear carry for add | |
| A3B2 | 69 12 | ADC #$12 | add FOR stack use size | |
| A3B4 | AA | TAX | copy back to index | |
| A3B5 | D0 D8 | BNE $A38F | loop if not at start of stack | |
| A3B7 | 60 | RTS | ||
| Prev: A389 | Up: Map | Next: A3B8 |