C64 ROM | Routines |
Prev: AD8A | Up: Map | Next: AE20 |
AD9E | A6 7A | LDX $7A | get BASIC execute pointer low byte | |
ADA0 | D0 02 | BNE $ADA4 | skip next if not zero | |
ADA2 | C6 7B | DEC $7B | else decrement BASIC execute pointer high byte | |
ADA4 | C6 7A | DEC $7A | decrement BASIC execute pointer low byte | |
ADA6 | A2 00 | LDX #$00 | set null precedence, flag done | |
ADA8 | .BYTE $24 | makes next line BIT $48 | ||
This entry point is used by the routine at AE20.
|
||||
ADA9 | 48 | PHA | push compare evaluation byte if branch to here | |
ADAA | 8A | TXA | copy precedence byte | |
ADAB | 48 | PHA | push precedence byte | |
ADAC | A9 01 | LDA #$01 | 2 bytes | |
ADAE | 20 FB A3 | JSR $A3FB | check room on stack for A*2 bytes | |
ADB1 | 20 83 AE | JSR $AE83 | get value from line | |
ADB4 | A9 00 | LDA #$00 | clear A | |
ADB6 | 85 4D | STA $4D | clear comparrison evaluation flag | |
This entry point is used by the routine at B63D.
|
||||
ADB8 | 20 79 00 | JSR $0079 | scan memory | |
ADBB | 38 | SEC | set carry for subtract | |
ADBC | E9 B1 | SBC #$B1 | subtract the token for ">" | |
ADBE | 90 17 | BCC $ADD7 | branch if < ">" | |
ADC0 | C9 03 | CMP #$03 | compare with ">" to +3 | |
ADC2 | B0 13 | BCS $ADD7 | branch if >= 3 | |
was token for ">" "=" or "<"
|
||||
ADC4 | C9 01 | CMP #$01 | compare with token for = | |
ADC6 | 2A | ROL A | *2, b0 = carry (=1 if token was = or <) | |
ADC7 | 49 01 | EOR #%00000001 | toggle b0 | |
ADC9 | 45 4D | EOR $4D | EOR with comparison evaluation flag | |
ADCB | C5 4D | CMP $4D | compare with comparison evaluation flag | |
ADCD | 90 61 | BCC $AE30 | if < saved flag do syntax error then warm start | |
ADCF | 85 4D | STA $4D | save new comparison evaluation flag | |
ADD1 | 20 73 00 | JSR $0073 | increment and scan memory | |
ADD4 | 4C BB AD | JMP $ADBB | go do next character | |
ADD7 | A6 4D | LDX $4D | get comparison evaluation flag | |
ADD9 | D0 2C | BNE $AE07 | branch if compare function | |
ADDB | B0 7B | BCS $AE58 | go do functions | |
else was < TK_GT so is operator or lower
|
||||
ADDD | 69 07 | ADC #$07 | add # of operators (+, -, *, /, ^, AND or OR) | |
ADDF | 90 77 | BCC $AE58 | branch if < + operator | |
carry was set so token was +, -, *, /, ^, AND or OR
|
||||
ADE1 | 65 0D | ADC $0D | add data type flag, $FF = string, $00 = numeric | |
ADE3 | D0 03 | BNE $ADE8 | branch if not string or not + token | |
will only be $00 if type is string and token was +
|
||||
ADE5 | 4C 3D B6 | JMP $B63D | add strings, string 1 is in the descriptor, string 2 is in line, and return | |
ADE8 | 69 FF | ADC #$FF | -1 (corrects for carry add) | |
ADEA | 85 22 | STA $22 | save it | |
ADEC | 0A | ASL A | *2 | |
ADED | 65 22 | ADC $22 | *3 | |
ADEF | A8 | TAY | copy to index | |
ADF0 | 68 | PLA | pull previous precedence | |
ADF1 | D9 80 A0 | CMP $A080,Y | compare with precedence byte | |
ADF4 | B0 67 | BCS $AE5D | branch if A >= | |
ADF6 | 20 8D AD | JSR $AD8D | check if source is numeric, else do type mismatch | |
ADF9 | 48 | PHA | save precedence | |
This entry point is used by the routine at AE86.
|
||||
ADFA | 20 20 AE | JSR $AE20 | get vector, execute function then continue evaluation | |
ADFD | 68 | PLA | restore precedence | |
ADFE | A4 4B | LDY $4B | get precedence stacked flag | |
AE00 | 10 17 | BPL $AE19 | branch if stacked values | |
AE02 | AA | TAX | copy precedence, set flags | |
AE03 | F0 56 | BEQ $AE5B | exit if done | |
AE05 | D0 5F | BNE $AE66 | else pop FAC2 and return, branch always | |
AE07 | 46 0D | LSR $0D | clear data type flag, $FF = string, $00 = numeric | |
AE09 | 8A | TXA | copy compare function flag | |
AE0A | 2A | ROL A | <<1, shift data type flag into b0, 1 = string, 0 = num | |
AE0B | A6 7A | LDX $7A | get BASIC execute pointer low byte | |
AE0D | D0 02 | BNE $AE11 | branch if no underflow | |
AE0F | C6 7B | DEC $7B | else decrement BASIC execute pointer high byte | |
AE11 | C6 7A | DEC $7A | decrement BASIC execute pointer low byte | |
AE13 | A0 1B | LDY #$1B | set offset to = operator precedence entry | |
AE15 | 85 4D | STA $4D | save new comparison evaluation flag | |
AE17 | D0 D7 | BNE $ADF0 | branch always | |
AE19 | D9 80 A0 | CMP $A080,Y | compare with stacked function precedence | |
AE1C | B0 48 | BCS $AE66 | if A >=, pop FAC2 and return | |
AE1E | 90 D9 | BCC $ADF9 | else go stack this one and continue, branch always |
Prev: AD8A | Up: Map | Next: AE20 |