Stick/strig use the same memory amount as Peek.
RND has a dummy argument, so any variable name will do.
Putting more statements per line is another way to save RAM. Each new line is something like 3 extra bytes.
Character sets are 1024 bytes not 2048. Gr. 1 and 2 chsets are only 512 bytes.
In my experience, biggest memory saver in general is long lines and using constants instead of numerics.
Another huge saver is eliminating duplicate data. Assembler routines are a big culprit there.
e.g. rather than having DATA lines where essentially 4-5 bytes are consumed per byte of code, have routines in strings. Downside is they have to be relocatable. Advantage is there's no memory waste other than the 7 bytes or so overhead that a string must have.
Where Asm stuff has to be location-specific, load it from file rather than embedding in the program.
Initialising variables can be done more efficiently in a big block by reading from DATA. e.g. with your constants:
10000 RESTORE 10000:READ V1,V2,V3,V4,V5,V6,V10
100010 DATA 1,2,3,4,5,6,10