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
|
||||
;; 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
|
||||
|
||||
Reference in new issue
Block a user