The whole copy-by-character-recognition feature in the Amstrad firmware was such a weird hack that it seems unlikely anyone else has ever coded a similar solution for production use, except maybe in some application where the copy functionality had to be bolted-on later. Amstrad did it that way from the start.
Maybe I couldn't find a better way at the time, but to add a pause/delay to game code, I remember using "for" loops that just counted to an arbitrarily high number because the processor was so slow e.g. count from 0 to X to make it wait a few milliseconds.
Standard practice to do a delay on the CPC was a loop around CALL &BD19 - that paused until frame flyback, i.e. 1/50th of a second.
Also, Bill Atkinson, when making MacPaint, actually implemented something similar to edit text that had been placed into the bitmap with the text tool. Since he knew that it couldn't be perfectly reliable (as there might be non-text pixels in there), he got rid of the feature (https://www.folklore.org/StoryView.py?project=Macintosh&stor...)
In particular, there's the following note about TXT UNWRITE in the Indirections section: "This routine works by comparing the image on the screen with the character matrices; therefore if the character matrices have been altered the routine may not find a readable a character"
The code from the BBC Micro version of the OS can be seen here: https://tobylobster.github.io/mos/mos/S-s9.html#SP1
On its own, this is a useless quirk, but you could also push Escape (I think) to temporarily disable this behavior, permitting the arrow keys to freely reposition the cursor on screen until you hit Escape again.
So if you wanted to "edit" a line, you would list it out to the console, press Escape, move the cursor up to the start of the line, press Escape again, move the cursor right over the stuff you wanted, press Escape again, move the cursor somewhere else, press Escape again, type whatever it was you wanted to insert, press Escape again, move the cursor back to where you left off copying, press Escape again, move the cursor right over the remainder of the line, and press Return.
And then Beagle Bros came out with GPLE and ushered us into the modern era of proper line editing. What a comparative luxury that was.
> You could then press a "copy" key and it would copy one character at a time from the second cursor to your current editing position
Each time you pressed the "copy" key it would literally advance both the main cursor and the copy cursor by one character, with the copied character appearing under where the main cursor just was. To copy multiple characters you would need to press the copy key multiple times or hold it down to trigger autorepeat (even then you would see this process gradually happening until you released).
When you were coding in BASIC, I don't think there was clipboard but there was a way to get a second cursor to appear that you could position with the (I think) arrow keys somewhere else on the screen. You could then press a "copy" key and it would copy one character at a time from the second cursor to your current editing position. It's weird thinking back to when you didn't have a proper IDE.
Has a similar UI been seen on a computer before this? There's a "copy mode" in Screen for Linux that has similarities.