optimization in variable search
This commit is contained in:
1 parent
46ee7e476e
commit
b440034414
5 files changed
+52
-17
No files matched your search
@@ -130,13 +130,15 @@ fetch_variable_find_addr_loop:
|
||||
// Compare current variable name with searched one
|
||||
// XXX consider creating optimized version for 46K/50K memory models
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
||||
jsr helper_cmp_varnam
|
||||
#else
|
||||
|
||||
ldy #$00
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
ldx #<VARPNT
|
||||
jsr peek_under_roms
|
||||
#elif CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
||||
jsr peek_under_roms_via_VARPNT
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
lda (VARPNT),y
|
||||
#endif
|
||||
@@ -148,13 +150,14 @@ fetch_variable_find_addr_loop:
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
jsr peek_under_roms
|
||||
#elif CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
||||
jsr peek_under_roms_via_VARPNT
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
lda (VARPNT),y
|
||||
#endif
|
||||
|
||||
cmp VARNAM+1
|
||||
|
||||
#endif
|
||||
|
||||
bne fetch_variable_find_addr_next
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// #LAYOUT# STD * #TAKE-HIGH
|
||||
// #LAYOUT# * BASIC_0 #TAKE-HIGH
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
// This has to go $E000 or above - routines below banks out the main BASIC ROM!
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
||||
|
||||
helper_cmp_varnam:
|
||||
|
||||
// Unmap BASIC lower ROM
|
||||
|
||||
lda #$26
|
||||
sta CPU_R6510
|
||||
|
||||
// Compare variable name
|
||||
|
||||
ldy #$00
|
||||
lda (VARPNT),y
|
||||
|
||||
cmp VARNAM+0
|
||||
bne !+
|
||||
|
||||
iny
|
||||
lda (VARPNT),y
|
||||
cmp VARNAM+1
|
||||
!:
|
||||
// Restore default memory mapping
|
||||
// XXX consider deduplicating with 'is_line_pointer_null'
|
||||
|
||||
php
|
||||
lda #$27
|
||||
sta CPU_R6510
|
||||
plp
|
||||
|
||||
rts
|
||||
|
||||
#endif
|
||||
@@ -2,7 +2,7 @@
|
||||
// #LAYOUT# * BASIC_0 #TAKE-HIGH
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
// This has to go $E000 or above - routines below banks out the main BASIC ROM!
|
||||
// This has to go $E000 or above - routine below banks out the main BASIC ROM!
|
||||
|
||||
//
|
||||
// Helper routine to copy string descriptor
|
||||
|
||||
Reference in new issue
Block a user