I have a program that stored 10 highscores, but in order to store one, I have to bump all of the lower values down, and this takes up a lot of memory. Is there any way to create a loop or something that will do this with less memory sacrificed? I included the first and largest block here so you can see what I mean.

I think I have an easy solution. First, make sure the dim of LSCORE is set to 10. Then, when the game completes store the new score to LSCORE(11). Do a SortD(LSCORE) and then a 10→dim(LSCORE). Your scores will then be arranged in descending order and it only keeps a score that beats one of the 10 existing scores. I'm typing this from a phone so I wasn't able to type the code up, but I think you will get what I'm saying.

Much appreciated Trenly. That's pretty much what I was trying to say.
Just make sure the length of LSCORE is at least 10 before this runs or you'll get an error. You can also remove the 10→dim(LSCORE) from here and put it closer to the beginning of your program so that when the program loops you will always get the length set to 10. That would avoid you having to put 10→dim(LSCORE) two times in the program and save you a little space.

beginning of program, loops back after each play (I assume)
10→dim(LSCOREgame code
L→LSCORE(11
SortD(LSCORE

Then scores below an existing score wouldn't be added to the end of a list with less than 10 elements, before there are 10 high scores. (SortD( also doesn't affect Ans). Where S is the score, this works:

S→∟SCORE(1+dim(∟SCORE
SortD(∟SCORE
min(10,dim(∟SCORE→dim∟SCORE

SortD( on a list of 11 elements takes milliseconds, so there's not much time to save by checking whether the new score is high.

If you want the number of high scores to be 10 whether there are actually 10 or not, use adamspc's.

Those look good, but is there any this list stores highscores for multiple programs and is about 30 elements long. Is there any way to only sort numbers 1-10 instead of the entire list so I can preserve the other scores?