diff --git a/src/basic/engine_variables/fetch_variable.s b/src/basic/engine_variables/fetch_variable.s index 95055994..1c8cc5be 100644 --- a/src/basic/engine_variables/fetch_variable.s +++ b/src/basic/engine_variables/fetch_variable.s @@ -93,28 +93,15 @@ fetch_variable_type_string: fetch_variable_special: - lda VARNAM+0 - cmp #$54 // 'T' - beq !+ - cmp #$53 // 'S' - bne fetch_variable_find_addr - - // First character is 'S', check the second one - - lda VARNAM+1 - cmp #$54 // 'T' - bne fetch_variable_find_addr - - jmp fetch_variable_ST -!: - // First character is 'T', check the second one - - lda VARNAM+1 - cmp #$49 - beq_16 fetch_variable_TI - cmp #$C9 + jsr is_var_TI_string beq_16 fetch_variable_TI_string + jsr is_var_TI + beq_16 fetch_variable_TI + + jsr is_var_ST + beq_16 fetch_variable_ST + // FALLTROUGH fetch_variable_find_addr: diff --git a/src/basic/engine_variables/is_var_ST.s b/src/basic/engine_variables/is_var_ST.s new file mode 100644 index 00000000..a6b991b5 --- /dev/null +++ b/src/basic/engine_variables/is_var_ST.s @@ -0,0 +1,17 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + + +is_var_ST: + + // Always start with VARNAM+1, there is a sligtly bigger chance it won't match + + lda VARNAM+1 + cmp #$54 // 'T' + bne !+ + + lda VARNAM+0 + cmp #$53 // 'S' +!: + rts diff --git a/src/basic/engine_variables/is_var_TI.s b/src/basic/engine_variables/is_var_TI.s new file mode 100644 index 00000000..70603af0 --- /dev/null +++ b/src/basic/engine_variables/is_var_TI.s @@ -0,0 +1,17 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + + +is_var_TI: + + // Always start with VARNAM+1, there is a sligtly bigger chance it won't match + + lda VARNAM+1 + cmp #$49 // 'I' + bne !+ + + lda VARNAM+0 + cmp #$54 // 'T' +!: + rts diff --git a/src/basic/engine_variables/is_var_TI_string.s b/src/basic/engine_variables/is_var_TI_string.s new file mode 100644 index 00000000..1d8162e2 --- /dev/null +++ b/src/basic/engine_variables/is_var_TI_string.s @@ -0,0 +1,17 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + + +is_var_TI_string: + + // Always start with VARNAM+1, there is a sligtly bigger chance it won't match + + lda VARNAM+1 + cmp #$C9 // 'I...$' + bne !+ + + lda VARNAM+0 + cmp #$54 // 'T' +!: + rts