OSDev

для всех
Текущее время: 30 апр 2024, 08:39

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Русские буковки
СообщениеДобавлено: 26 сен 2012, 22:24 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 09:17 
Заблокирован

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 10:24 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Stalker писал(а):
На инглише пишет без проблем, а как сделать русские буквы cp866 или KOI8-8x16

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

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

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


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

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

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

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

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 10:31 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
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).

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 18:39 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 19:08 

Зарегистрирован: 26 сен 2012, 21:14
Сообщения: 26
Вот что я из ариала выдоил


Вложения:
arial2.c [64.04 КБ]
Скачиваний: 631
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 20:46 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 20:53 

Зарегистрирован: 26 сен 2012, 21:14
Сообщения: 26
а как прикрутить фат
и возможно ли ето сделать без ассемблера.
Рабочий ли етот файлик а то ноли чтото смущают меня немного ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 21:20 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Stalker писал(а):
а как прикрутить фат
Эээ... понятно. Тогда лучше действительно вставить шрифт в исходник ядра.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Русские буковки
СообщениеДобавлено: 27 сен 2012, 21:34 

Зарегистрирован: 26 сен 2012, 21:14
Сообщения: 26
Вообще не дружу. Но хочется хотябы для общего развития


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB