Fix Issue #15
This commit is contained in:
1 parent
71567e39ac
commit
bc5e3cdbb9
1 file changed
+35
@@ -4,6 +4,8 @@ basic_shift_mem_up_and_relink:
|
|||||||
;; Shift memory up from basic_current_line_ptr
|
;; Shift memory up from basic_current_line_ptr
|
||||||
;; X bytes.
|
;; X bytes.
|
||||||
|
|
||||||
|
;; NOTE: Pointers need to be reduced by one, due to the way
|
||||||
|
;; the copyroutine works, so we do that here.
|
||||||
;; Work out end point of destination
|
;; Work out end point of destination
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
@@ -12,10 +14,21 @@ basic_shift_mem_up_and_relink:
|
|||||||
lda basic_end_of_text_ptr+1
|
lda basic_end_of_text_ptr+1
|
||||||
adc #0
|
adc #0
|
||||||
sta memmove_dst+1
|
sta memmove_dst+1
|
||||||
|
lda memmove_dst+0
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta memmove_dst+0
|
||||||
|
lda memmove_dst+1
|
||||||
|
sbc #0
|
||||||
|
sta memmove_dst+1
|
||||||
|
|
||||||
;; End point of source is just current end of BASIC text
|
;; End point of source is just current end of BASIC text
|
||||||
lda basic_end_of_text_ptr+0
|
lda basic_end_of_text_ptr+0
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
sta memmove_src+0
|
sta memmove_src+0
|
||||||
lda basic_end_of_text_ptr+1
|
lda basic_end_of_text_ptr+1
|
||||||
|
sbc #0
|
||||||
sta memmove_src+1
|
sta memmove_src+1
|
||||||
|
|
||||||
;; Work out size of region to copy
|
;; Work out size of region to copy
|
||||||
@@ -67,6 +80,7 @@ basic_shift_mem_up_and_relink:
|
|||||||
|
|
||||||
;; Then set Y to the number offset required
|
;; Then set Y to the number offset required
|
||||||
ldy memmove_size+0
|
ldy memmove_size+0
|
||||||
|
iny
|
||||||
|
|
||||||
stx tokenise_work3
|
stx tokenise_work3
|
||||||
|
|
||||||
@@ -102,16 +116,36 @@ relink_up_next_line:
|
|||||||
;; inc $d020
|
;; inc $d020
|
||||||
;; jmp relink_up_next_line
|
;; jmp relink_up_next_line
|
||||||
|
|
||||||
|
;; Advance pointer by tokenise_word3 bytes
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx #<basic_current_line_ptr+0
|
ldx #<basic_current_line_ptr+0
|
||||||
jsr peek_under_roms
|
jsr peek_under_roms
|
||||||
|
sta memmove_dst+0
|
||||||
clc
|
clc
|
||||||
adc tokenise_work3
|
adc tokenise_work3
|
||||||
sta memmove_src+0
|
sta memmove_src+0
|
||||||
iny
|
iny
|
||||||
|
php
|
||||||
jsr peek_under_roms
|
jsr peek_under_roms
|
||||||
|
sta memmove_dst+1
|
||||||
|
plp
|
||||||
adc #0
|
adc #0
|
||||||
sta memmove_src+1
|
sta memmove_src+1
|
||||||
|
|
||||||
|
;; jsr printf
|
||||||
|
;; .byte "LINE ADDR = $"
|
||||||
|
;; .byte $f1,<basic_current_line_ptr,>basic_end_of_text_ptr
|
||||||
|
;; .byte $f0,<basic_current_line_ptr,>basic_end_of_text_ptr
|
||||||
|
;; .byte $d," BEFORE = $"
|
||||||
|
;; .byte $f1,<memmove_dst,>memmove_dst
|
||||||
|
;; .byte $f0,<memmove_dst,>memmove_dst
|
||||||
|
;; .byte ", AFTER = $"
|
||||||
|
;; .byte $f1,<memmove_src,>memmove_src
|
||||||
|
;; .byte $f0,<memmove_src,>memmove_src
|
||||||
|
;; .byte $d
|
||||||
|
;; .byte 0
|
||||||
|
|
||||||
|
;; Write memmove_src back to current line pointer
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx #<basic_current_line_ptr
|
ldx #<basic_current_line_ptr
|
||||||
lda memmove_src+0
|
lda memmove_src+0
|
||||||
@@ -120,6 +154,7 @@ relink_up_next_line:
|
|||||||
lda memmove_src+1
|
lda memmove_src+1
|
||||||
jsr poke_under_roms
|
jsr poke_under_roms
|
||||||
|
|
||||||
|
|
||||||
relink_up_loop:
|
relink_up_loop:
|
||||||
;; Now advance pointer to the next line,
|
;; Now advance pointer to the next line,
|
||||||
lda memmove_src+0
|
lda memmove_src+0
|
||||||
|
|||||||
Reference in new issue
Block a user