59 lines
823 B
ArmAsm
59 lines
823 B
ArmAsm
// #LAYOUT# STD * #TAKE
|
|
// #LAYOUT# * BASIC_0 #TAKE
|
|
// #LAYOUT# * * #IGNORE
|
|
|
|
|
|
//
|
|
// Shift the BASIC program up to make space for a new line
|
|
//
|
|
|
|
|
|
shift_txt_up:
|
|
|
|
// Last byte of source is VARTAB-1
|
|
|
|
#if !HAS_OPCODES_65CE02
|
|
|
|
sec
|
|
lda VARTAB+0
|
|
sbc #$01
|
|
sta memmove__src+0
|
|
lda VARTAB+1
|
|
sbc #$00
|
|
sta memmove__src+1
|
|
|
|
#else // HAS_OPCODES_65CE02
|
|
|
|
lda VARTAB+0
|
|
sta memmove__src+0
|
|
lda VARTAB+1
|
|
sta memmove__src+1
|
|
dew memmove__src
|
|
|
|
#endif
|
|
|
|
// Last byte of destination is memmove__src + .X
|
|
|
|
clc
|
|
txa
|
|
|
|
adc memmove__src+0
|
|
sta memmove__dst+0
|
|
lda memmove__src+1
|
|
adc #$00
|
|
sta memmove__dst+1
|
|
|
|
// Size is distance from OLDTXT to the end of BASIC text (VARTAB)
|
|
|
|
lda VARTAB+0
|
|
sec
|
|
sbc OLDTXT+0
|
|
sta memmove__size+0
|
|
lda VARTAB+1
|
|
sbc OLDTXT+1
|
|
sta memmove__size+1
|
|
|
|
// Perform the copy
|
|
|
|
jmp shift_mem_up
|