In the past few months several people have contacted me to ask if I could update my LED USB Message Board driver so that it works on 64 bit machines, especially Windows 7. So I have finally gotten round to that.
It actually took me longer to find the source code than to fix it for 64 bit machines :-) It was one of those seemingly counter-intuitive problems. I had to tell Visual Studio to target x86 machines when compiling to make it work on 64 bit computers. This is because the USB code that I'm using is 32 bit only, so changing the compiliation to target x86 means that a 64 bit machine will know to run the code in 32-bit mode. Easy when you know how.
It might mean this driver has a limited shelf life, I'm probably not going to re-write a specific 64 bit version. So if Microsoft stop allowing 64 bit machines to run 32 bit code then the driver will stop working. But for now it works. It even means that I can use my own LED display again, since I've been running Windows 7 64 bit for ages...
My LED driver page is here.
Carrying on my journey of running DALIS programs on the .Net Micro Framework, here is a photo showing some actual screen output:
...apart from having to upgrade the firmware on my Fez Panda to get the screen drivers working it was pretty painless. I have some more work to do yet, I have only written the absolute basics of writing to the screen, but I know it can all be done. I think that I'll probably try to get an IDE 40 pin male to female cable, which will allow me to connect the Fez Touch to the Fez Panda using a flexible cable. Performance of running DALIS programs is not great, so I may have to try and do some optimisation. Having said that, DALIS was never designed to be a high performance language anyway.
Now that I have DALIS running in the .Net Micro Framework, I decided that I should try it on some real hardware, so I bought a Fez Panda II to
try it out on. Currently this only supports .Net Micro Framework v4.1, so I had to tweak a few things, but not much.
So here is a screenshot of it running in the Visual Studio debugger:
That's running on the actual hardware, with the output set to come out on the debug console. I'm still testing with the same temperature converter DALIS program. But it works, which is the main thing. The next task is to get the output appearing on the Fez Touch colour screen that I also bought. The end result might be to run DALIS programs from the SD card... or to download them from the web and always run the latest code.
For some reason I decided to see if I can get my new DALIS programing language working on the .Net Micro Framework, so I went off and got myself the latest version (4.2) to give it a try. Since the DALIS proof-of-concept was already written in C# I didn't think it would be too hard to port it.
It wasn't a totally trivial excercise, but I thought it's better to try it now rather than do it later when I have implemented lots more features in the DALIS language. The biggest things I had to do was remove any use of Generics and Nullable Types, both of which aren't in the Micro Framework. Apart from that the changes were all minor things. So I've ended up with a single set of source files which can compile in both the full blown .Net Framework and the Micro Framework too. If nothing else, it will force me to write efficient code.
I also had to write some sort of Console Window, so that I could display some output on a screen. If there is some feature for writing text to a console type of output on an LCD screen in the Micro Framework, I didn't find it yet... But I had fun writing my own anyways.
So, here is another example program which shows temperature conversions between Centigrade and Farenheit (running in the emulator, since I haven't got any real hardware for that yet):
...and here is the DALIS source code that I'm running:
min = 30
max = 220
gap = (max-min) / 17
WRITE "deg F deg C"+RETURN
WRITE TEXT(f,1)+" "+TEXT(c,1)+RETURN
REPEAT f=f+gap IF f<(max+1)
Of course, I also tried running my classic ASCII Mandelbrot, but I promised I wouldn't post any more fractals for a while ;-)