To answer both of your questions, the answer is no. MIDlets can call other MIDlets only when they are within the exact same MIDlet suite. No other times can you call an outside program like Snake. While calling Snake might be harmless, calling some other outside programs could really damage someone's phone and make the user angry. It is all for security and protection that MIDlets run in a complete sandbox on its own.
It seems to work in a simulator, but when I try to download an application to my mobile phone, it writes "Invalid application". Probably my phone does not like a line like a "MIDlet-Push-1: socket://:79, com.sun.example.SampleChat, * " in my jad file.
I've found that some phones are very fussy things. I've written applications that work just fine in the emulator, but won't load with the JAD (or at all) on a device. It's just a matter of how tolerant the device is.
Theodore Jonathan Casser
SCJP/SCSNI/SCBCD/SCWCD/SCDJWS/SCMAD/SCEA/MCTS/MCPD... and so many more letters than you can shake a stick at!