Пишем свою операционную систему. Bugfix и printf
Приветствую всех своих читателей! Недавно заметил ошибку в написанном нами ещё давно startup.asm: аргументы передавались не в том порядке, в котором их принимает kernel_main. Это не проявлялось бы, пока мы не начали использовать значения этих аргументов. Вот правильная версия: format ELF public _start extrn kernel_main section ".text" executable _start: movzx edx, dl push ebx push esi push edx lgdt [gdtr] call kernel_main add esp, 3 * 4 : cli hlt jmp @b section ".data" writable gdt: dq ...
Пишем свою операционную систему. Драйвер текстового экрана
До этого момента мы выводили текст на экран лишь с помощью прямого копирования байт в видео-память. Было бы не плохо реализовать функции вроде printf для более удобного вывода на экран. Вообще-то я хочу получить в итоге микроядро, и драйверу консоли там не место, однако поскольку эта рассылка имеет цель не только задокументировать ход работы, но и наглядно показать процесс разработки, я пока немного нарушу последовательность и напишу драйвер для ядра. Ничто не мешает в будущем удалить лишние модули из ядра...