This repo contains a nopsys-style version of the Cog VM. That means a Cog VM that runs a Squeak/Pharo/Cuis image without an OS. For more information on the nopsys library visit its own repo.
CogNOS is actually a third iteration of the orginal SqueakNOS project born at early 2000's. SqueakNOS had two previous stages. At a first stage, [Gerardo Richarte]() (Richie) and [Luciano Notarfrancesco]() depicted the fundamentals of the project and built its basis. Most of the code contained in this and related repositories was developed by them. The sources of that stage of the project can be found at: https://sourceforge.net/projects/squeaknos/.
In a second stage, during 2011-2012, Javier Pimás and Guido Chari, in collaboration with Richie revived the project and made it compatible with Pharo Smalltalk. In addition, we added Filesystem (FAT32) and Memory Management (paging) support. This made it possible to snapshot images, an important milestone of the project. There is a blog with some documentation, the news of those days, and instructions to download prebuilt images: http://squeaknos.blogspot.com.ar/.
Now, we are working in a second revival! Smalltalk VMs (and also images) have changed a lot since the old times. We have decided to give a new name to the project: CogNOS since we do not want the project to be tightly coupled to any particular Smalltalk dialect.
We provide a release version in the form of a compressed file. To run it you need a virtual machine software install in your OS. Currently we provide support for:
Choose whichever you prefer. We recommend virtualbox since it is free, multiplatform, and is the fastest solution. Qemu and Bochs are much slower, but at the same time they provide much more low-level debugging facilities in case you need them.
So to run CogNOS just uncompress the file, enter the CogNOS directory and run: ./run.sh vbox
. Change vbox for qemu, bochs or vmware to change the VM software.
If you want to build everything from scratch, we provide a few scripts that make it easy. Follow the documentation for instructions.
Below an image illustrating a CogNOS Pharo image running on top of virtual box. The transcript shows all the device drivers that were initialized at loading time.
Below an example from Richie: a CogNos Pharo image on top of QEMU running ping.
There are two ways of contributing. At the image level or at the VM level.
This is the standard way of contributing. Usually most users will work only at the image level. If all your contributions live at the image side then you could just make a pull request of smalltalk code to the SmalltalkNOS repository. Note that the SmalltalkNOS repository inside the development image is already loaded and pointing to the official repository. You should update that to your fork to be able to push and then submit a pull request.
Modifications and additions to the Cog VM in CogNOS follow the standard Squeak development process: there is a plugin written in Slang (SqueakNOSPlugin) which is used to generate the corresponding C code from an Smalltalk image.
So, if you are working with some very low-level features, found low-level bugs, or just would like to propose a new primitive you will need to change the Slang code.
Under the image folder you will find an image compressed in a zip that already have everything necessary to generate the sources for both the VM itself and all the plugins. The development images are Squeak Smalltalk images. At the time of writing, they were the only supported images for developing open-smalltalk. So to open the image and generate the sources see the previous section #4. Build CogNOS. The image should contain the latest released version of the SqueakNOSPlugin.
Alternatively, you can pick any issue from the CogNOS issues tracker on GitHub. There are many tasks with different degrees of complexity that need to be solved.