LoginLogin
Nintendo shutting down 3DS + Wii U online services, see our post

New 3DS does not fully support a symbol in the middle of DEF names

Root / Programming Questions / [.]

kldck_hulCreated:
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.

Thats how I interpreted it as working. I even coded Lowerdash under that assumption. I can however
CALL _$UNUSED
Why is that? Is null getting passed?

Thats how I interpreted it as working. I even coded Lowerdash under that assumption. I can however
CALL _$UNUSED
Why is that? Is null getting passed?
So 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"?

That the "type" terminated the token. All the functions generated by Lowerdash make sure that #/$/% go at the end.