OSDev
http://osdev.su/

Русские буковки
http://osdev.su/viewtopic.php?f=5&t=633
Страница 1 из 2

Автор:  Stalker [ 26 сен 2012, 22:24 ]
Заголовок сообщения:  Русские буковки

Есть самопальное ядро, работает клавиатура, загружается через граб
На инглише пишет без проблем, а как сделать русские буквы cp866 или KOI8-8x16
Есть сам шрифт (.fnt) как запихнуть его в ядро
Хотелось бы чтото типа такого http://gazette.linux.ru.net/rus/article ... oy-os.html
И можно ли вообще сделать такое в сишном ядре

Автор:  Станислав [ 27 сен 2012, 09:17 ]
Заголовок сообщения:  Re: Русские буковки

Что сделать? В сишном коде выводить на буфер экрана картинку из буфера буквы проблем не будет, и вообще ассемблерные вставки нужны редко, тем более если загрузчиком пользуешся готовым.
Клава и мышка(ps\2) с таймером работают, если при переходе в защищённый режим настроить таблицу прерывания, а в таблицу прерываний вписать обработчики событий свои.

Если нужно написать просто свой загрузчик с выводом текста на экран, то нужно только перейти в защищённый режим, включить видео режим нормальный, загрузить шрифт из картинок(можно и на фон картинку поставить), можно перейти в страничную адресацию, включить все процессоры, настроить прерывания, воспользоваться устройствами с PCIных шин(диски, флешки, звук, юсб, ...), и много чего ещё. Во всём этом можно легко разобраться и не пользоваться такими примитивными примерами.

Трудность возникнет позже, когда захочется всё усложнять, например вывод на экран одновременно всех окошек из разных приложений, работающих в своих виртуальных пространствах, а каждое окошко будет анимировано и требовать синхронизацию.

Автор:  Yoda [ 27 сен 2012, 10:24 ]
Заголовок сообщения:  Re: Русские буковки

Stalker писал(а):
На инглише пишет без проблем, а как сделать русские буквы cp866 или KOI8-8x16

Дисплей работает в каком режиме, алфавитно-цифровом или графическом?

Stalker писал(а):
Есть сам шрифт (.fnt) как запихнуть его в ядро

Для си конвертировать бинарник в сишный дамп задача на 15 минут. Если влом, могу привести исходник здесь.
Для ассемблеров ещё проще - можно напрямую включать бинарники в компилируемый модуль.
Код:
Font:   incbin   "cyrillic.fnt"


Stalker писал(а):
Хотелось бы чтото типа такого http://gazette.linux.ru.net/rus/article ... oy-os.html

Там же и написано, как это делается.

Stalker писал(а):
И можно ли вообще сделать такое в сишном ядре

Конечно можно. Линуксовое ядро практически всё написано на С.

Автор:  phantom-84 [ 27 сен 2012, 10:31 ]
Заголовок сообщения:  Re: Русские буковки

Stalker писал(а):
Есть самопальное ядро, работает клавиатура, загружается через граб
На инглише пишет без проблем, а как сделать русские буквы cp866 или KOI8-8x16
Есть сам шрифт (.fnt) как запихнуть его в ядро
Хотелось бы чтото типа такого http://gazette.linux.ru.net/rus/article ... oy-os.html
И можно ли вообще сделать такое в сишном ядре
Файлы с расширением .fnt могут иметь разный формат. Как я понял, речь все-таки идет о текстовом режиме экрана. Можно и на Си.

Если файл содержит только битовую карту шрифта 8x16, то для загрузки шрифта в знакогенератор тебе прежде всего нужно знать следующее:
Цитата:
Load font bitmap into video memory plane 2 in the sequential accessing address mode (some graphics and sequencer registers need to reprogram) taking into account that each character's bitmap occupies 32 bytes (i.e. load 16 bytes and pass over 16 bytes for font 9x16 to get next position for loading).
Цитата:
Font loading:
graph[0x05] = 0x00 (bit 4 = 0)
graph[0x06] = 0x0C (bit 1 = 0)
seq[0x02] = 0x04 (0100b)
seq[0x04] = 0x06/0x07 (bit 2 = 1)

Characters and attributes writing (normal mode):
graph[0x05] = 0x10 (bit 4 = 1)
graph[0x06] = 0x0E (bit 1 = 1)
seq[0x02] = 0x03 (0011b)
seq[0x04] = 0x02/0x03 (bit 2 = 0)
Источник: New fonts (graph и seq - это отдельные группы регистров vga).

Для Си данные из файла нужно конвертировать в массив констант - для этого есть спец. утилиты. Или можно загрузить непосредственно из файла во время выполнения.

Автор:  Stalker [ 27 сен 2012, 18:39 ]
Заголовок сообщения:  Re: Русские буковки

phantom-84 а мжно немного инфи на тему "Для Си данные из файла нужно конвертировать в массив констант - для этого есть спец. утилиты. Или можно загрузить непосредственно из файла во время выполнения."
Нашел программы TheDOTFactory и BitFontCreator а что дальше

Автор:  Stalker [ 27 сен 2012, 19:08 ]
Заголовок сообщения:  Re: Русские буковки

Вот что я из ариала выдоил

Вложения:
arial2.c [64.04 КБ]
Скачиваний: 633

Автор:  phantom-84 [ 27 сен 2012, 20:46 ]
Заголовок сообщения:  Re: Русские буковки

Stalker писал(а):
phantom-84 а мжно немного инфи на тему "Для Си данные из файла нужно конвертировать в массив констант - для этого есть спец. утилиты. Или можно загрузить непосредственно из файла во время выполнения."
С первым вроде бы разобрался. Если нет, то поиск по ключевым словам "bin 2/to c(pp) (array)" поможет. Второе тоже делается предельно просто, если система уже на начальном этапе может загружать файлы. Если нет, то на первых этапах ты можешь использовать "вшитый" в железо шрифт и англоязычные сообщения.

Автор:  Stalker [ 27 сен 2012, 20:53 ]
Заголовок сообщения:  Re: Русские буковки

а как прикрутить фат
и возможно ли ето сделать без ассемблера.
Рабочий ли етот файлик а то ноли чтото смущают меня немного ?

Автор:  phantom-84 [ 27 сен 2012, 21:20 ]
Заголовок сообщения:  Re: Русские буковки

Stalker писал(а):
а как прикрутить фат
Эээ... понятно. Тогда лучше действительно вставить шрифт в исходник ядра.

Цитата:
и возможно ли ето сделать без ассемблера.
Возможно. А чЁ с асмом вообще не дружишь?

Цитата:
Рабочий ли етот файлик а то ноли чтото смущают меня немного ?
Да, я глянул - сплошная муть: ширина отдельных символов больше 8 точек, карты многих символов обнулены. Возьми нормальный консольный шрифт в кодировке CP866. Тут grindars выкладывал один.

Автор:  Stalker [ 27 сен 2012, 21:34 ]
Заголовок сообщения:  Re: Русские буковки

Вообще не дружу. Но хочется хотябы для общего развития

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/