So my teacher'll be like - Hey lemme check your calc lil quick!
I reply sure thing and hand it to him while this program is active.
Now…

It has some flaws:
• The selected bar isn't highlighted like it's supposed to be.
• There isn't a flashing cursor ( █ ) before it detects you pressing prgm.
• When the program has stopped by someone pressing delete, it displays DONE.

I have a solution to the last flaw, if there's one for the first. Instead of ending the program, why not continue simulating the "flashing cursor" after you have pressed delete.

Like this:

:getKey➞K
:If K=45
:Then
:Lbl 2
:ClrHome
:Output (1,1,"█"
:Output (1,16," " (again, to prevent the loading dots from appearing in the top right corner)
:0,25➞A }
:prgmDELAY } This is a program I've copied that puts a time delay for variable A.
:Goto 2
:End

And I'll exit from the program myself. When he hands it back. Still, there is no "█" symbol (correct me if I'm wrong). In the worst case scenario I'll take something that resembles the black box. If he checks my calculator now the success rate is very slim. So can you help me out?

I've looked into making the menu in the graph screen itself, since I can invert the pixels with pxlchange, but the large text function Text(-1,row,column,"text") only works for 83+…

Cheating is unethical, and asking for help with cheating is even worse. You'll just have to figure it out on your own, or a million times better, just don't cheat at all.

It's sad how school has come to be more about passing than actually learning…

I would, however, be happy to help you with some TI-Basic things in general. First of all, you have prgmDELAY which I'm guessing just delays the program by a certain amount? Not that this is much of a bad thing, but did you happen to use this program? You don't need a separate program for delays actually. If you just use the command rand, you can delay by a certain amount with rand(<number>). Depending on your calculator's processing speed, the number will have to be a bit different to get the same amount of delay.

Most programming languages have a For( loop too, and they probably don't have rand. So if you're ever looking for a time delay in another language and you don't know how to make one in any other way, you can just use an empty for loop.

TL;DR

rand(<number>) //creates a time delay without needing a separate program. You can adjust number accordingly.

Second delay method:

For(N,1,<number>) //this empty For() loop will loop however many times you want, creating a delay. Adjust number accordingly.
End

An empty For( loop will work in TI-BASIC, but in other languages, for(int i = 0; i < n; i++){} may be optimized out by the compiler. Most languages should have some kind of sleep(int ms) command however.