Finally properly implemented REFILL. The second picture shows the buffer in memory at the end of the video (first character at 0x0800). It only lets the user edit the current line, so characters don't overflow into the next line and deleting characters will never move the cursor behind the first position on the current line.
Now onto parsing 👀
Alright, so thankfully I won't be rolling my own keyboard routine. The reason that the kernal GETIN routine kept returning to the BASIC prompt was because I was corrupting the stack and I guess it was triggering some sort of reset or something? I dunno. All I know is that I can write terrible terrible things on the screen using Forth code which, honestly, is so incredibly beautiful.
For comparison, these are the speeds of an assembly and BASIC color cycle respectively. The height of each color stripe demonstrates the speed of each implementation. The shorter each stripe is, the faster it is. As you can see, Forth sits in between both of these benchmarks speed-wise. (perhaps a little closer to assembly, but who's keeping track 👀)