started work on array element location

This commit is contained in:
FeralChild64 committed 2020-07-29 06:21:21 +02:00
1 parent f70fe31e0c
commit 8e2a91cbd6
6 files changed
+186 -32

No files matched your search

+89
View File
@@ -0,0 +1,89 @@
// #LAYOUT# STD * #TAKE
// #LAYOUT# * BASIC_0 #TAKE
// #LAYOUT# * * #IGNORE
// Carry set = unable to find array
find_array:
// Initialize VARPNT with the start of array area
lda ARYTAB+0
sta VARPNT+0
lda ARYTAB+1
sta VARPNT+1
// FALLTROUGH
find_array_loop:
// Check if end of arrays
lda VARPNT+1
cmp STREND+1
bne !+
lda VARPNT+0
cmp STREND+0
bne !+
// End of arrays
sec
rts
!:
jsr helper_cmp_varnam
#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
bne_16 find_array_next
#else // CONFIG_MEMORY_MODEL_38K || CONFIG_MEMORY_MODEL_60K
bne find_array_next
#endif
// Array found
clc
rts
#if CONFIG_MEMORY_MODEL_38K || CONFIG_MEMORY_MODEL_60K
find_array_next:
// Fetch offset to the next array
ldy #$03
#if CONFIG_MEMORY_MODEL_60K
ldx #<VARPNT
jsr peek_under_roms
pha
dey
jsr peek_under_roms
#else // CONFIG_MEMORY_MODEL_38K
lda (VARPNT),y
pha
dey
lda (VARPNT),y
#endif
// Adjust VARPNT to point to the next array
clc
adc VARPNT+0
sta VARPNT+0
pla
adc VARPNT+1
sta VARPNT+1
// Next iteration
bcc find_array_loop // branch always
#endif