Anyone know what it would take to get .NET or Mono to run on a TI graphing calculator? I know the full framework probably wouldn’t fit on the device, but a subset would probably server very well.
Update: When I say “.NET / Mono,” what I am really meaning is to get a C# or VB.NET application to compile for the device so it could execute. I know that the .NET Framework is HUGE and wouldn’t fit on the device, but that’s not what is necessary. All you’d need is a .NET style API that exposes the devices native functionality to the C# or VB.NET programming languages.
I’m just curious if anyone has looked into this. I don’t know what practical applications it would really have, but would definitely be interesting.
This imaginary embedded .NET platform – we could call it “D2ME”,
would be to .NET (and Mono) what J2ME is to Java.
Notably, however, the J2ME standard calls for a device with at least 512K ROM and 256K RAM. Keep in mind we can probably not change the TI-84 ROM, which means what in J2ME is in ROM, would also have to fit in the 48K of RAM of the calculator.
Even this could probably be achieved, if almost all .NET classes and help functions are omitted, thus negating most of the .NET benefits.
Also, if you want “the features of .NET but not the runtime”, what are you asking for? A C# to native compiler? Of course doable, but what about those coding for VB.NET? Then you would have to create a native compiler for VB.NET as well. Of course, doable, but hard. One point of the CIL is to avoid that.
Which brings us to the matter of compilation, specifically the target of the compiler. The TI-84 has an 8-bit processor, the Z80, while pretty clever for its size, has severe constraints. I think it would be hard to do anything resembling the C# type system with native Z80 instructions. Of course, it could emulate a 16-bit CPU like Steve Wozniak’s SWEET16, but that would almost bring us back to a CIL.
All in all, I think this is one of those “probably possible but very improbable” napkin projects. And I haven’t even touched upon the issue of performance. It’s a nice thought experiment, but I would never have the motivation to build something like that. 🙂