Na dziś dwie sprawy.
Pierwsza – kernel.
Przeglądając stos płyt leżących w jednym z kartonów za biurkiem, przypomniałem sobie o moim zajęciu sprzed kilku lat… chyba 3 lub 4 jeśli mnie pamięć nie myli. Wtedy z młodzieńczą pasją zabrałem się za pisanie własnego systemu operacyjnego. Oczywiście nie miałem o tym zielonego pojęcia. Jedyne co posiadałem to znajomość podstaw C++. Dopiero pisząc kernel tak naprawdę nauczyłem się dopiero C. Ale po kolei…
Po dzięki wędrówkom po kawiarenkach internetowych i szkolnych pracowniach (w tamtych czasach to były jedyne sposoby dostępne dla mnie, aby skorzystać z internetu) udało mi się zebrać trochę tutoriali i materiałów. W większości były to powtarzające się, absolutne podstawy, a ja chciałem czegoś więcej. Natchnąłem się na perełkę – stronę autorstwa bodajże Christophera Giesea – Operating System Development. Niestety już nie jest dostępną w sieci (kiedyś była pod adresem: http://my.execpc.com/~geezer). Zawierała kody źródłowe i dokumentacje, która była dla mnie wtedy idealna. No mniejsza o szczegóły. Wiadomo – były i upadki i wzloty. Kilka razy od zaczynałem początku. Finalnie udało mi się napisaćć kernel, który działał w 32 bitach na procesorach i386, obsługiwał tryb tekstowy VGA, wielowątkowość z wywłaszczaniem, dynamiczną alokacje pamięci, obsługę wyjątków i przerwań sprzętowych i modułów kernela (ELF, COFF i a.out). Część kodu napisałem własnoręcznie, część zaczerpnąłem z tutoriala (funkcja printf,obsługa plików coff, elf a.out, funkcje napisane w assemblerze i kilka innych).
Kernel, który znalazłem był ostatni raz kompilowany 15 sierpnia 2005, a więc chwilę temu. W kodzie jedynie zmieniłem kilka rzeczy, które ewidentnie „gryzły” w oczy. Udostępniam kod na nowej licencji BSD, więc kto chce niechaj pobiera. (Uwaga! Pliki spakowałem jak leci, więc jest tam niezły b.. nieporządek).
Druga – w sumie to już temat na osobną notkę.
P.S. Udało mi się znaleźć mirror stronki Giesea: http://geezer.osdevbrasil.net/osd/index.htm