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
|
ldy #$02
|
||||||
|
|
||||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||||
|
|
||||||
ldx #<OLDTXT
|
ldx #<OLDTXT
|
||||||
jsr peek_under_roms
|
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
|
sta CURLIN+0
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
|
||||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
|
||||||
jsr peek_under_roms
|
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
|
sta CURLIN+1
|
||||||
|
|
||||||
jmp execute_statements
|
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:
|
execute_statements_var_assign:
|
||||||
|
|
||||||
|
|||||||
+12
-10
@@ -2,29 +2,30 @@
|
|||||||
;; #LAYOUT# * BASIC_0 #TAKE
|
;; #LAYOUT# * BASIC_0 #TAKE
|
||||||
;; #LAYOUT# * * #IGNORE
|
;; #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
|
||||||
|
!ifndef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||||
|
|
||||||
follow_link_to_next_line:
|
follow_link_to_next_line:
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
; XXX! for models 46K/50K provide optimized version
|
|
||||||
|
|
||||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||||
|
|
||||||
ldx #<OLDTXT+0
|
ldx #<OLDTXT+0
|
||||||
jsr peek_under_roms
|
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
|
pha
|
||||||
iny
|
iny
|
||||||
|
|
||||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
|
||||||
jsr peek_under_roms
|
jsr peek_under_roms
|
||||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
|
||||||
jsr peek_under_roms_via_OLDTXT
|
|
||||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||||
|
|
||||||
|
lda (OLDTXT),y
|
||||||
|
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
|
||||||
lda (OLDTXT),y
|
lda (OLDTXT),y
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,3 +34,4 @@ follow_link_to_next_line:
|
|||||||
sta OLDTXT+0
|
sta OLDTXT+0
|
||||||
|
|
||||||
rts
|
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
|
||||||
|
}
|
||||||
@@ -29,7 +29,3 @@ dos_INIT:
|
|||||||
; XXX initialize drivers, etc.
|
; XXX initialize drivers, etc.
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
dos_magicstr: ; 'CBDOS'
|
|
||||||
|
|
||||||
!byte $43, $42, $44, $4F, $53
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
dos_magicstr: ; 'CBDOS'
|
||||||
|
|
||||||
|
!byte $43, $42, $44, $4F, $53
|
||||||
Reference in new issue
Block a user