Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт окт 23, 2018 7:13 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 9 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Сб июн 09, 2018 7:41 pm 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
Вставляя в код IRC-клиента печать различных байтов, я узнал как они выглядят в Kolibri :
https://i.imgur.com/SFWJyEU.png ( https://imgur.com/dDx3rQR ) + та же картинка во вложениях
(Kolibri ASCII table, пожалуйста не уменьшайте в размерах: качество сильно портится)

Получается, для символов 0, 32 и 33 - 126 это ещё соответствует "стандартному ASCII"
( https://www.asciitable.com/ ), а вот для 1-31 и 127 напечатало очень странные символы.
Символ с кодом 3 вообще не смогло напечатать - IRC клиент вылетает.
Ещё: во второй половине байта 128 - 255 нет ни одного символа, нет расширенной ASCII

С этим "нестандартным ASCII" я вроде бы разобрался, но до сих пор не знаю как печатать
русские буквы - знаю только что они состоят из двух байт! И другие двухбайтовые
или даже трёхбайтовые символы которые поддерживаются, особенно языковые:
если в System Settings выбрать эстонский, покажет i с двумя точками и жирный кружочек

Подскажите пожалуйста, где можно узнать более подробно про коды нестандартных символов в Kolibri ?


Вложения:
Комментарий к файлу: Kolibri ASCII table which I tried to make by myself
KolibriASCII.png
KolibriASCII.png [ 180.17 КБ | 1448 просмотров ]
Вернуться к началу
СообщениеДобавлено: Сб июн 09, 2018 9:28 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1485
floppy121 писал(а):
Kolibri ASCII table
У нас есть такая программа viewtopic.php?f=42&t=1455
floppy121 писал(а):
Получается, для символов 0, 32 и 33 - 126 это ещё соответствует "стандартному ASCII"
( https://www.asciitable.com/ ), а вот для 1-31 и 127 напечатало очень странные символы.
В KolibriOS используется кодировка https://ru.wikipedia.org/wiki/CP866 основанная на https://ru.wikipedia.org/wiki/CP437
floppy121 писал(а):
знаю только что они состоят из двух байт!
В 8-битной кодировке(CP866) символы состоят из одного байта.
floppy121 писал(а):
Вставляя в код IRC-клиента печать различных байтов
Код в студию! Иначе гадать можно долго — может ты пытаешься UTF-8 или UTF-16 вывести?


Вернуться к началу
СообщениеДобавлено: Сб июн 09, 2018 10:40 pm 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
0CodErr писал(а):
У нас есть такая программа http://board.kolibrios.org/viewtopic.php?f=42&t=1455
её скрин показывает что у русской буквы А код 128, но когда я пытался символы с такими кодами печатать - ничего не выводило
floppy121 писал(а):
В KolibriOS используется кодировка https://ru.wikipedia.org/wiki/CP866 основанная на https://ru.wikipedia.org/wiki/CP437
Совпадает расположением символов 0, 32 и 33-126 ; но остальные символы совсем другие! Например, символ с кодом 1: IRC-клиент распечатал чёрный ромб, а в CP866 на этом месте смайлик (более удобная таблица - https://en.wikipedia.org/wiki/Code_page_866) . И символы 128-255 не печатаются
0CodErr писал(а):
Код в студию! Иначе гадать можно долго — может ты пытаешься UTF-8 или UTF-16 вывести?
IRCC в svn-репозитории Kolibri , там есть файл encodings.inc , но в другом файле userparser.inc (строка 437) в "cmd_usr_code:" (функция для смены кодировки, вызываемая по команде /code) - только "; TODO", поэтому я подумал что encodings неактивен . Русские буквы точно занимают два байта: когда я попробовал написать сообщение по-русски в поле ввода IRC клиента, его длина в байтах оказалась в два раза больше чем было букв


Вернуться к началу
СообщениеДобавлено: Сб июн 09, 2018 11:22 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1485
floppy121 писал(а):
IRCC в svn-репозитории Kolibri
Я прекрасно знаю, где исходник IRCC. Где твой код?
floppy121 писал(а):
когда я пытался символы с такими кодами печатать - ничего не выводило
floppy121 писал(а):
Например, символ с кодом 1: IRC-клиент распечатал чёрный ромб, а в CP866 на этом месте смайлик
floppy121 писал(а):
Русские буквы точно занимают два байта: когда я попробовал написать сообщение по-русски в поле ввода IRC клиента, его длина в байтах оказалась в два раза больше чем было букв
Ну, значит, это не CP866.

Взял бы что-то попроще тогда, если с IRCC сложно разобраться.
Хотя бы тот же example.asm из дистрибутива.
http://websvn.kolibrios.org/filedetails ... xample.asm


Вернуться к началу
СообщениеДобавлено: Сб июн 09, 2018 11:45 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1485
0CodErr писал(а):
может ты пытаешься UTF-8 или UTF-16 вывести?
floppy121 писал(а):
Русские буквы точно занимают два байта:
0CodErr писал(а):
Ну, значит, это не CP866.
Похоже, что так и есть:
Код:
user_parser:
................................................................................
        mov     esi, input_text
        mov     edi, user_command
        call    recode                                  ; Convert to UTF-8
................................................................................
recode:
        mov     eax, [encoding]
        jmp     [recode_proc+eax*4]



encoding        dd      UTF8


Вернуться к началу
СообщениеДобавлено: Сб июн 09, 2018 11:52 pm 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
0CodErr писал(а):
Я прекрасно знаю, где исходник IRCC. Где твой код?
Полный код смогу выложить в лучшем случае на следующей неделе, поэтому постараюсь воспроизвести важные моменты по памяти. Для печати символов на экран я изменял сообщение готовое к распечатке внутри userparser.inc ( возможно строки 59-60 ) Прямо перед
Код:
        mov     esi, user_command
        call    print_asciiz
я добавлял код наподобие
Код:
mov byte[user_command + 0], 31
mov byte[user_command + 1], 32
mov byte[user_command + 2], 33
...
, затем писал в консоль длинное сообщение и смотрел/скринил на что заменятся его символы
0CodErr писал(а):
Взял бы что-то попроще тогда, если с IRCC сложно разобраться
Пытаюсь одну очень важную функцию добавить, уже наполовину получилось несмотря на весьма маленький опыт именно в x86 ассемблере, и разумеется поделюсь с вами :wink:


Вернуться к началу
СообщениеДобавлено: Вс июн 10, 2018 12:14 am 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
0CodErr писал(а):
Похоже, что так и есть

Textbox, в который мы вводим сообщение, предоставляется ОС Колибри? Получается, на этапе ввода текста это 1 байт CP866, который потом конвертируется в два байта UTF-8 функцией recode_to_utf8 из encodings.inc ? Надеюсь я на верном пути, сейчас пытаюсь понять utf8_table


Вернуться к началу
СообщениеДобавлено: Пн июн 11, 2018 11:49 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1485
floppy121 писал(а):
Textbox, в который мы вводим сообщение, предоставляется ОС Колибри?
Он предоставляется библиотекой box_lib
floppy121 писал(а):
Получается, на этапе ввода текста это 1 байт CP866, который потом конвертируется в два байта UTF-8 функцией recode_to_utf8 из encodings.inc ?
Да, получается так. Но не обязательно в два байта — это зависит от символа: английские буквы, цифры, многие знаки препинания занимают один байт.


Вернуться к началу
СообщениеДобавлено: Ср июл 04, 2018 7:09 pm 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
0CodErr писал(а):
Где твой код?
Как и обещал, выложил свои наработки по IRCC, вот они: viewtopic.php?f=11&p=70875


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 9 сообщений ] 

Часовой пояс: UTC+03:00


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

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


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

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