Jerry Bell wrote:
I'm new to the list, but I've found some references to 'bare-metal' Squeak implementations. Is anyone working on this?
What would be the ideal kind of kernel to run Squeak on top of? I know portability would be on the top of the list. How about single vs. multithreaded? Maybe even something completely different to take advantage of the unique needs of a smalltalk environment?
I assume that a goal would be to eventually make Squeak classes that could generate the low-level kernel code for a given platform, much like the interpreter generator. Then, to port to another platform you would simply define the characteristics of that specific platform. All from within Squeak. That would be.... nice.
I don't have much experience with Smalltalk, and even less with OS design. But it seems that one way to approach this would be to build something quickly using simple, existing tools. Then, when there is a working system we could factor parts of the original low-level code out and replace them with code generated by Squeak. At that point, we could make refinements in speed, portability, etc. from within Squeak itself.
Specifically, I've started looking at FreeDOS's kernel, dos-c, as a possible starting point. There is already a DOS port of Squeak out there, and it seems as if it would not be too terribly complicated to take dos-c and the DOS port of Squeak and kinda mash them together to make a booting SqueakOS. Plus, the dos-c kernel is supposed to be pretty portable, and is written mostly in C so it shouldn't be not TOO hard to work with. It should also be simpler than a more advanced kernel. And, it's GPL'd.
I would rather try a Linux port to ggi (http://synergy.foo.net/~ggi/). Some (older) stripped down Linux kernels seem to run in 1MB. If you would throw out the file system and replace it by something simpler, I guess you would gain again some memory.
I've just started looking at dos-c, I'm reading the author's book now. Unfortunately, it doesn't look like the current version of dos-c will handle the DPMI stuff that the DOS port of Squeak needs, but maybe that would be easy to fix for someone who knows what they are doing?
I guess it's not that easy because Squeak assumes a 32bit memory model.
Markus