added array index range check
This commit is contained in:
1 parent
53fe45351b
commit
b5e5f8aab1
1 file changed
+18
-5
@@ -71,7 +71,7 @@ fetch_variable_arr_check_dimensions:
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bne_16 do_BAD_SUBSCRIPT_error
|
bne fetch_variable_arr_bad_subscript
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
@@ -94,6 +94,10 @@ fetch_variable_arr_calc_pos_loop:
|
|||||||
|
|
||||||
// Fetch the current dimension
|
// Fetch the current dimension
|
||||||
|
|
||||||
|
// XXX
|
||||||
|
// XXX there is a bug, it should fetch from the opposite size!
|
||||||
|
// XXX
|
||||||
|
|
||||||
dex
|
dex
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
@@ -141,12 +145,17 @@ fetch_variable_arr_calc_pos_loop:
|
|||||||
adc __FAC1+2
|
adc __FAC1+2
|
||||||
sta __FAC1+2
|
sta __FAC1+2
|
||||||
|
|
||||||
// Compare current coordinate with current dimension size
|
// Compare current coordinate (INDEX+0/+1) with current dimension size (__FAC1+3/+4)
|
||||||
|
|
||||||
// XXX
|
lda INDEX+1
|
||||||
// XXX implement this
|
cmp __FAC1+4
|
||||||
// XXX
|
bcc !+
|
||||||
|
bne fetch_variable_arr_bad_subscript
|
||||||
|
|
||||||
|
lda INDEX+0
|
||||||
|
cmp __FAC1+3
|
||||||
|
bcs fetch_variable_arr_bad_subscript
|
||||||
|
!:
|
||||||
// Check if there are more dimensions to handle
|
// Check if there are more dimensions to handle
|
||||||
|
|
||||||
cpx #$00
|
cpx #$00
|
||||||
@@ -183,3 +192,7 @@ fetch_variable_arr_calc_pos_loop_done:
|
|||||||
sta VARPNT+1
|
sta VARPNT+1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
fetch_variable_arr_bad_subscript:
|
||||||
|
|
||||||
|
jmp do_BAD_SUBSCRIPT_error
|
||||||
Reference in new issue
Block a user