a Kernel Usable for Tunes - ideas, questions, and code...

Ashley Winters jql@accessone.com
Tue, 21 Jul 1998 17:47:24 -0700 (PDT)

On Tue, 21 Jul 1998, Basile STARYNKEVITCH wrote:
> Hello All,
> ((I posted a message from home <basile.starynkevitch@wanadoo.fr> but
> apparently something went wrong, probably on my home Linux PC!!))
> On
> "http://perso.wanadoo.fr/starynkevitch/basile/kut_0_0.tgz"
> you will find a first pre-alpha (it compiles & links but doesn't run)
> Kernel Usable for Tunes or kut.

Hmm... I'll look through it...

> I'm waiting for comments
> -- file KUT/doc.txt
> rcsid $Id: doc.txt,v 0.1 1998/07/19 20:26:31 basile Exp $
> Some ideas regarding KUT (Kernel Usable for Tunes) - I maybe should
> have called it TUK for Tunes Kernel
> (Several ideas are actually from Faré <rideau@ens.fr> which whom I meet)
> overall goal:
> make a self-hoisted bootable system, runnable on ordinary ix86/PC, to
> permit TUNES development. Target platform has at least 32Mb RAM (cheap
> today!), an IDE/ATAPI disk (with at least 200Mb free in a dedidacted
> KUT partition), an SVGA screen (and runs Linux!)
> This system is aimed exclusively towards Tunes developpers, not
> towards ordinary users. 
> KUT is developped on a Linux platform. The boot loader is GRUB
> http://www.uruk.org/grub/
> BIOS (or Lilo or other loader) loads GRUB which switch into 32 bit
> mode and loads KUT.
> KUT runs (only) in 32 bits ring 0 (supervisor) mode, without
> pagination. 

Is that a design choice or have you not gotten around to it? Pagination
is very useful, even with Tunes. I believe that Tunes should not only
demand-page load objects, but should also be able to swap ram to disk
without needing to persistently store full-fledged objects on-disk.

> I don't expect to use TSS (task system segments).

Well, Tunes should take advantage of TSS's when hosting violently
abusive operating-systems.

> In a certain way, KUT is less than a plain 32 bits DOS.
> * two important issues:
> A) how to communicate with Linux? I assume I have only one PC (and I
>   don't want to run Tunes under or with Linux, although this is
>   debatable). [[not every TUNES developper can afford 2 PCs]]
>   essentially, this means sharing some disk stuff with both Linux &
>   KUT.
>    I'm not really decided between 2 alternatives:
>    1) using an available Linux filesystem, and code it into
>       KUT. ext2fs is way too complex for such a task. I might consider
>       Minix. A variant could be coding a KUT specific filesystem
>       module loadable by a recent (Linux2.0.35 ou 2.1.108) kernel.
>    2) writing a sort of KUT filesystem, and write a program (Linux
>       user mode) which can read,write,& check this filesystem.

     3) creating a file on a filesystem, and using an index of the
	disk sectors to be used as your persistent store.

Option 3 allows development on Windos and Linux and wherever while
allowing painless uninstall.

> B) how to program KUT. The main goal is to have KUT very rapidly self
> hoisted, and able to program TUNES. I think that I have to define a
> specific Scheme dialect (perhaps with a very different
> syntax). Basically, I mean a simple Scheme (eg like SIOD) with
>    * some very basic module system
>    * no macros
>    * almost no I/O (no files) - only keyboard & disk.
> Tunes assembler stuff (the c86 assembler nearly written in Scheme) is
> IMHO the top priority. Then writing the core memory managemetn in
> Tunes assembly+ Scheme and writing a kind of editor/debugger (in Scheme).

Sounds good. I have my own ideas about code assembly, but yours sounds

> KUT should handle interrupts, and have low level keyboard & disk
> drivers (no netwxork yet).
> BIOS should not be used. Too difficult in 32 bits mode!

Yeah. That's what GRUB is supposed to help us avoid...

> The KUT kernel should probably contain a bytecode interpreted tuned
> for Scheme (or Tunes first langage). I think that a bytecode
> interperter is easier to write than anything else. So we need a
> cross-compiler to produce the first bytecode programs.

Hmm... what would be bytecoded? Shouldn't we be starting Tunes off with
compiled machine-code? We low-level people should spend our time on
bootstrapping a compiler in KUT (or TUK). A bootstrapped high-level
language compiler will not go to waste no matter what language we base
it on.

Ashley Winters

> I need a lot of hints, advices, and encouragments to help me.
> july 19, 1998
> Basile STARYNKEVITCH - 8 rue de la Faiencerie, 92340 BOURG LA REINE (France)
> tel mél = basile point starynkevitch at wanadoo point fr
> boulot=work= basile point starynkevitch at cea point fr