My OS, part 3

Ok, the resonance over the Internet has died down a bit … I wasn’t expecting it to happen, but shit just happens. 7500 unique visitors on the first day, 32k on the second – not bad 🙂 Now I need to write few more ideas down (for my self).

A little list of things that I need to look into. It’s time to buy my desired hardware for prototyping, because…

  1. UEFI seems the way to go – I’ll try to drop any support for BIOS and MBR at the same time. GPT looks promising  and if I’m able to write UEFI driver for a specific file system, then it’s a win-win situation. And this is why I need to get a hold on my hardware, because Bochs does not seem to support UEFI as it’s in the “Long range goals” list;
  2. I have my eyes on ZFS – because I need a partition with copy-on-write versioning. Also integrity checks will do me no harm, also ext3cow seems OK – I need to do a comparison;
  3. Also Pure64 (Thanks Denis for pointing me to it, Edit 2018-07-17: Thanks Alex for pointing out the link was dead) seems as a good starting point (or even the whole BareMetal OS) – at least it sets up everything for you and it has a friendly 3 clause BSD license. I have to find out how does it work with UEFI though;
  4. Development Environment – I’m still thinking of using Visual Studio (I have Eclipse installed too, but I’ve never used – only for Wowza module development with their own version of Wowza IDE). I’ve compiled Clang LLVM (I’ll post “nightly build” binaries later), as there’s no official port available – but it was quite easy. So I’ll try to mix Visual Studio with Clang LLVM and NASM, and try to avoid Cygwin which I’m currently using for GCC;
  5. Learn Assembly 😀 … well I understand it, but it’s frightening, as it’s not your regular programming language. I understand that it’s simply “command and operands”, but the thing that confuses me are registers – because they might have a special purpose – so the thing I’m afraid of is messing things up like: add reg1, reg2, but re1 is used for some special purpose at the same time. Start here.

To be continued…

Join the Conversation


  1. The main issue with “special purpose” registers is that some instructions can only use that specific register. Like CX is “count”, so shift by count needs CX. If your count is somewhere else, you have to move it to CX before the shift (and if you are using CX for something else, you need to save it somewhere).

  2. Блестящая затея-когда то один разработчик имел порыв создать понятную,как Виндоус и надежную как линукс систему–ЛИНДОВС,но разщработчик отказался от ее воплощения,поначалу она вышла с багами…а после и вообще забросил идею за недостатком финансирования..Вы смелый человек,пусть у Вас все получится

Leave a comment

Your email address will not be published.