I think you are misdiagnosing the problem. If you change the $ to # or %, the problem will remain, but if you change it to _ or a letter or number the problem disappears.
The symbols $ # % indicate the end of an identifier. Once the system sees the $, it thinks, okay, I have the name of this user-defined procedure. Next, I expect the list of parameters. It sees GOSUB. That's a reserved word, it cannot be used as the name of a variable, so this must be a statement. The GOSUB statement needs for the next thing to be either a label or a string value. It is an integer variable: that is a type mismatch.
What's happening is the same thing that happens when you type A=5B=3?A,B - the system allows multiple statements on one line without a separator (the : symbol) (which IMHO was a poor design choice).
EDIT: This behaviour seems to be the same on old 3DS and new 3DS.
New 3DS does not fully support a symbol in the middle of DEF names
Root / Programming Questions / [.]
kldck_hulCreated:
Thats how I interpreted it as working. I even coded Lowerdash under that assumption. I can howeverSo far as I can tell, this will work if: - The variable _$ contains the name of a command or user-defined procedure that takes no parameters, and - UNUSED is the name of a user-defined procedure that takes no parameters. CALL expects a string value to follow it. When it encounters the $ sign, that signifies the end of an identifier. Next, CALL expects an open parenthesis or a comma. It sees neither, so it concludes that the CALL statement is finished and the next thing is the beginning of a new statement. What do you mean exactly by "that assumption"?CALL _$UNUSEDWhy is that? Is null getting passed?