Classios – one more step in the evolution of Petros

In the past couple of years, I’ve been tinkering on & off with the new version of PetrOS. This is a total rewrite for a few reasons, but mainly that I was unhappy with the current code base in Petros. The original one was started at a time when Delphi wasn’t around – we’re talking the early 90’s.

What triggered the original development of Petros was the release of the Win32 specification and I felt that this was certainly a step forward in the DOS/Windows PC world. Win3.x was pretty rough as an OS and there was a need to go native instead of on top of DOS. I wanted to do it in pascal, but there wasn’t a 32 bit pascal compiler around at the time so I started writing my own. It was pretty much a spare time project over the years I ran Trumpet and I started with virtually nothing. Also, I’d always wanted to write my own pascal compiler and it didn’t seem too hard a job. Initially I stuck to plain pascal, but it was clear that I would need objects to be at least relevant to the modern world. All said & done, the compiler was a simple one spitting out assembler code, not a full language. Eventually in 2002 I did an amd64 version of the compiler but at that stage I felt it had reached the end of its useful life – it needed a rebuild too.

As far as the OS was concerned, I had done some initial OS research with my work at the Psych dept at the uni. I had a small run time OS which ran on top of DOS, but was interpreted. However it had limitations due to the underlying DOS and lack of address space. Hence one of the reasons for writing Petros – the others are more obvious, like wanting to have an alternative to windows. There was also a ton of stuff to learn – how to boot from bios, manage the hardware resources and so forth – all difficult due to the lack of documentation (remember no internet back then – you couldn’t just google those things)
Back to classios…. after resigning from trumpet in 2004, the then petros forum was falling into disrepute so I formed a new forum at to continue the discussion taking place. It still seems clear that despite the advances in Windows over the past 5 years, that there still is need for a windows compatible OS which is small and easy to manage. It’s a tall order really as there is so much baggage in Windows you have to support, but one possibility is to build a reduced footprint windows which would do all the basic things – perhaps just enough to run a web browser and manage files. You can read more on what transpired at the forum.

Anyway, the latest is that I now have a kernel of sort running. It can read files from a FAT12/16/32 file system and can load and run concurrent user processes. I still have to implement a user file i/o layer, but the basic proof of concept is happening. As an aside, this version is completely written in Delphi by using a customized system.dcu. One cool feature is that I can use full exception handling in the kernel, a major improvement over petros. It’s still a long way from where I left off with petros, however I can do accelerated systems development through the use of a x86 emulator I also wrote during the intervening years since leaving trumpet. I can develop the code and compile in the delphi 200 IDE and then choose a menu option to boot the new kernel directly from delphi. I don’t have full delphi debugger integration but the emulator has a built in step debugger which helps greatly. I can also write debug messages to an I/O port directly which the emulator will print out in an isolated window. I’ll post a screen shot of that some time soon.

So basically, I have a kernel which is almost usable. I can shoehorn my new tcp stack which is completely new as well. Should be able to get a minimalist server running soon.


One Comment

  1. Joy:

    It’s a month since you wrote this. How are things progressing?? A regular update would be good :)