Inkey$ checks to see if a character key is pressed on the keyboard, and if so, returns it.
Upper$ converts letters to uppercase.
I$ is a string variable.
It's followed by an equals sign, which in this case should be read as 'set I$ equal to the following value'.
So, the command 'I$ = upper$(inkey$())' will get the character pressed, convert it to uppercase, and store the value in variable I$.
Do is the start of an infinite loop, and Loop is the end.
Repeat is the start of a condition loop, and Until is the end. It will loop until the condition checked is true and then continue on to the command after.
Everything I've posted here is in one of TDK's tutorials - the stuff about loops is in the one you directed me to.