speed optimizations in BASIC, small DOS cleanup
This commit is contained in:
1 parent
fc8385b109
commit
a744fd0230
6 files changed
+97
-28
No files matched your search
@@ -248,29 +248,33 @@ execute_line:
|
||||
ldy #$02
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
|
||||
ldx #<OLDTXT
|
||||
jsr peek_under_roms
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
jsr peek_under_roms_via_OLDTXT ; XXX! speed-optimize - combine whole flow into one routine
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||
lda (OLDTXT),y
|
||||
}
|
||||
|
||||
sta CURLIN+0
|
||||
|
||||
iny
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
jsr peek_under_roms
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
jsr peek_under_roms_via_OLDTXT
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||
lda (OLDTXT),y
|
||||
}
|
||||
|
||||
sta CURLIN+1
|
||||
|
||||
jmp execute_statements
|
||||
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
|
||||
jmp helper_execute_line_statements
|
||||
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||
|
||||
lda (OLDTXT),y
|
||||
sta CURLIN+0
|
||||
|
||||
iny
|
||||
lda (OLDTXT),y
|
||||
sta CURLIN+1
|
||||
|
||||
jmp execute_statements
|
||||
}
|
||||
|
||||
|
||||
execute_statements_var_assign:
|
||||
|
||||
|
||||
+12
-10
@@ -2,29 +2,30 @@
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifndef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
|
||||
follow_link_to_next_line:
|
||||
|
||||
ldy #0
|
||||
|
||||
; XXX! for models 46K/50K provide optimized version
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
|
||||
ldx #<OLDTXT+0
|
||||
jsr peek_under_roms
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
jsr peek_under_roms_via_OLDTXT
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||
lda (OLDTXT),y
|
||||
}
|
||||
|
||||
pha
|
||||
iny
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
jsr peek_under_roms
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
jsr peek_under_roms_via_OLDTXT
|
||||
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||
|
||||
lda (OLDTXT),y
|
||||
|
||||
pha
|
||||
iny
|
||||
|
||||
lda (OLDTXT),y
|
||||
}
|
||||
|
||||
@@ -33,3 +34,4 @@ follow_link_to_next_line:
|
||||
sta OLDTXT+0
|
||||
|
||||
rts
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
;; #LAYOUT# STD * #TAKE-HIGH
|
||||
;; #LAYOUT# * BASIC_0 #TAKE-HIGH
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
; This has to go $E000 or above - routine below banks out the main BASIC ROM!
|
||||
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
|
||||
follow_link_to_next_line:
|
||||
|
||||
; Unmap BASIC lower ROM
|
||||
|
||||
lda #$26
|
||||
sta CPU_R6510
|
||||
|
||||
ldy #0
|
||||
lda (OLDTXT), y
|
||||
pha
|
||||
|
||||
iny
|
||||
lda (OLDTXT), y
|
||||
|
||||
sta OLDTXT+1
|
||||
pla
|
||||
sta OLDTXT+0
|
||||
|
||||
// Restore default mapping and quit
|
||||
|
||||
jmp remap_BASIC
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
;; #LAYOUT# STD * #TAKE-HIGH
|
||||
;; #LAYOUT# * BASIC_0 #TAKE-HIGH
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
; This has to go $E000 or above - routine below banks out the main BASIC ROM!
|
||||
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
|
||||
helper_execute_line_statements:
|
||||
|
||||
; Unmap BASIC lower ROM
|
||||
|
||||
lda #$26
|
||||
sta CPU_R6510
|
||||
|
||||
; Update CURLIN
|
||||
|
||||
lda (OLDTXT), y
|
||||
sta CURLIN+0
|
||||
|
||||
iny
|
||||
lda (OLDTXT), y
|
||||
sta CURLIN+1
|
||||
|
||||
; Restore memory mapping and continue
|
||||
|
||||
lda #$27
|
||||
sta CPU_R6510
|
||||
|
||||
jmp execute_statements
|
||||
}
|
||||
Reference in new issue
Block a user