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'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?
Any suggestions?
Jerry Bell jdbell@fareselaw.com
Links:
http://www.iop.com/~patv/ - this is the dos-c site. http://www.freedos.org/ - freeDOS, freely available DOS clone. Dos-c is the kernel.
Book: FreeDOS Kernel / Pat Villani , it's available at Amazon. I'm reading it now and starting to look at the source.
On Sat 14 Nov, 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?
Yup. We've been doing stuff along those lines for a while now. We have custom hardware to run it on and can also run the same images on 'normal' machines, though without the sort of full-control you can get with your own h/w.
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?
We sort of started from the ARM/Digital 'Angel' + a sort-of port of microC/OS (I always think of it as 'mucus' because it snot an OS) and then waltzed off into the sunset.
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.
It was, it does and it is. Mix in the direct-compile for primitives that Hans-Martin has also spent some time on along with something like Andreas' pluggable prims and yo uget quite a useful improvement on DLLs.
If there is serious interest in acutally using this sort of thing (not to mention handling the work of writing code-gen backends for non-ARM cpus) we might be able to release the code translator. Be warned - it requires quite a bit of syntactically rejigging the VM code, like getting rid of all the #cCode: stuff. Personally I think that makes it worth doing by itself :-)
tim
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
Jerry Bell wrote:
I've found some references to 'bare-metal' Squeak implementations. Is anyone working on this?
Squeakers -
There was recently a discussion on comp.lang.forth on a bootable Forth demo ("BootFORTH demo") recently released for FreeBSD. There has been interest in the past for doing this for Squeak, although still no working demo I know of (other than Squeak for DOS, which might in theory boot from a floppy (size?), but still requires a non-free OS).
I would imagine the big issue isn't getting something to boot -- it is having a knowledge base for interacting with the variety of graphics cards, ethernet cards, modems, SCSI adapters, HD drives, etc.
Here are two links from the Forth discussion:
http://www.freebsd.org/~picobsd/ This page contains information on developing FreeBSD to work in various small and unusual places, such as single floppy, vnode (vn(4)) partitions or embedded controllers. Includes image for single floppy bootable Forth version.
http://www.moore160.freeserve.co.uk/dmjx.htm David Moore's Joshua 32 bit x86 RT/Operating System
-Paul Fernhout Kurtz-Fernhout Software ========================================================= Developers of custom software and educational simulations Creators of the Garden with Insight(TM) garden simulator http://www.kurtz-fernhout.com
squeak-dev@lists.squeakfoundation.org