// Insert the tokenised line stored at $0200. // First work out where in the list to put it // (basic_find_line with the line number can be used to work // out the insertion point, as it should abort once it finds a // line number too high). // Then all we have to do is push the rest of the BASIC text up, // and update the pointers in all following basic lines. basic_insert_line: // ASSUMES basic_find_line has been called to set the insert point. // We need to insert space for the link link token, the line number, // and the zero-terminated line itself. This means 2+2+1 plus length // of tokenised string after the line number // But first, remember where the pointer will be, so that we can // put the line in there after. // jsr printf // .text "INSERTING LINE AT $" // .byte $f1,basic_current_line_ptr // .byte $f0,basic_current_line_ptr // .byte $0d,0 lda basic_current_line_ptr+0 pha lda basic_current_line_ptr+1 pha // Get number of bytes in tokenised line after line number lda tokenise_work2 sec sbc tokenise_work1 // Add on the four bytes space we need clc adc #5 pha tax // Make the space jsr basic_shift_mem_up_and_relink // Now increase top of BASIC mem pla clc adc basic_end_of_text_ptr+0 sta basic_end_of_text_ptr+0 lda basic_end_of_text_ptr+1 adc #0 sta basic_end_of_text_ptr+1 // Get pointer back pla sta basic_current_line_ptr+1 pla sta basic_current_line_ptr+0 // Write the line number ldy #2 lda basic_line_number+0 #if CONFIG_MEMORY_MODEL_60K ldx #