This commit is contained in:
Paul Gardner-Stephen committed 2019-04-29 21:00:00 +09:30
1 parent 71567e39ac
commit bc5e3cdbb9
1 file changed
+35
+35
View File
@@ -4,6 +4,8 @@ basic_shift_mem_up_and_relink:
;; Shift memory up from basic_current_line_ptr
;; 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
txa
clc
@@ -12,10 +14,21 @@ basic_shift_mem_up_and_relink:
lda basic_end_of_text_ptr+1
adc #0
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
lda basic_end_of_text_ptr+0
sec
sbc #1
sta memmove_src+0
lda basic_end_of_text_ptr+1
sbc #0
sta memmove_src+1
;; 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
ldy memmove_size+0
iny
stx tokenise_work3
@@ -102,16 +116,36 @@ relink_up_next_line:
;; inc $d020
;; jmp relink_up_next_line
;; Advance pointer by tokenise_word3 bytes
ldy #0
ldx #<basic_current_line_ptr+0
jsr peek_under_roms
sta memmove_dst+0
clc
adc tokenise_work3
sta memmove_src+0
iny
php
jsr peek_under_roms
sta memmove_dst+1
plp
adc #0
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
ldx #<basic_current_line_ptr
lda memmove_src+0
@@ -120,6 +154,7 @@ relink_up_next_line:
lda memmove_src+1
jsr poke_under_roms
relink_up_loop:
;; Now advance pointer to the next line,
lda memmove_src+0