diff --git a/STATUS.md b/STATUS.md index 66547f2a..ed8966a0 100644 --- a/STATUS.md +++ b/STATUS.md @@ -42,9 +42,8 @@ The following ROM features are currently missing and are not planned due to spac The following ROM features are currently missing: * most BASIC commands -* BASIC variables (work in progress, strings partially work now) -* BASIC expression handling -* most floating point routines +* BASIC integer/float variables/arrays (strings work now, with the exception of undefined arrays) +* BASIC expression handling (again, strings should work now) * RS-232 support * NMI handling is incomplete diff --git a/src/basic/engine_variables/fetch_variable.s b/src/basic/engine_variables/fetch_variable.s index d5af69d3..146f5ed5 100644 --- a/src/basic/engine_variables/fetch_variable.s +++ b/src/basic/engine_variables/fetch_variable.s @@ -131,11 +131,12 @@ fetch_variable_alocate_space_OK: ora memmove__size+0 beq fetch_variable_alocate_adjust_vars - // Indeed, there are arrays - adjust size, calculate the destination and perform copytin + // Indeed, there are arrays - adjust size, calculate the destination and perform copying inc memmove__size+0 bne !+ inc memmove__size+1 +!: clc lda memmove__src+0 diff --git a/src/basic/engine_variables/helper_array_refresh_bptrs.s b/src/basic/engine_variables/helper_array_refresh_bptrs.s index 20882012..90941d2e 100644 --- a/src/basic/engine_variables/helper_array_refresh_bptrs.s +++ b/src/basic/engine_variables/helper_array_refresh_bptrs.s @@ -26,7 +26,8 @@ helper_array_refresh_bptrs_loop_1: bne !+ lda INDEX+0 cmp STREND+0 - beq helper_array_refresh_bptrs_end + bne !+ + rts !: // Calculate start address of the next array, store it in INDEX+2/+3 @@ -136,7 +137,3 @@ helper_array_refresh_bptrs_loop_next: sta INDEX+0 jmp_8 helper_array_refresh_bptrs_loop_1 - -helper_array_refresh_bptrs_end: - - rts