No, CHR$ 144 is the first udg character. Next udg character is CHR$ 145 ("b") and so on until the last udg "u" which is CHR$ 164. You have 21 udg characters which you can change as you want (a,b,c,d,e, f, g, ... u). In the code you posted earlier you changed udg character "n" which is CHR$ 157.
Recent community posts
Here is a code that could give you hints. Use W,A,S,D to move the character. This one uses the return, see how the GOSUB calls line 1000 at the beginning, the RETURN returns to the line after the GOSUB. So you can break up your code in tidier modules using that method.
I can only see part of your code. Do you have a larger for loop, not seen, around the whole thing? It looks like you have a game loop and you recreate the udg every time? You only need to create the udg once and then you can start your game loop. Move the code in lines 62 to 75 to the beginning and make sure it is only run once.
How is the rule regarding binary data? Are we allowed to change the whole character set (outside of only changing the UDGs)? Can we load binary files, only to be used as data for the basic program, like graphics, map data, etc. ?