SysFn 4

Kernel-side graphics support
  • А что, есть смысл в строках не asciiz ?
  • Siemargl wrote:А что, есть смысл в строках не asciiz ?
    без них hex редактор не сможет вывести многие символы средствами ОС. Также будет невозможно использовать строки в модулях, компилированых Паскалем. Многие строки там не заканчивается нулем.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • 0CodErr
    Не, так я ж не против - исправляй. Просто у меня сейчас времени нет, вот и говорю, что проблема не серьёзная.
  • Я пробовал сделать так(font.inc) https://pastebin.ca/3891972
    Но похоже, заголовки выводятся как-то по-особенному
    Spoiler:
    1.PNG
    1.PNG (19.17 KiB)
    Viewed 11331 times
    Непонятно, почему там ограничение на количество символов для ASCIIZ(сейчас 256, раньше было 255).
    Кажется, было бы лучше, если символ #0 выглядел бы одинаково в обоих шрифтах.
    Лучше как у 6x9, например, в похожем случае http://websvn.kolibrios.org/filedetails ... m#line-405 это было бы удобно, если не хочется перед выводом текста принудительно закрашивать предыдущую надпись.
  • Посмотри в window.inc - window._.draw_window_caption.dodraw
    В кодировке ASCII первые 32 символа вообще не должны как-то выглядеть, в том числе символ #0.
  • Pathoswithin wrote:В кодировке ASCII первые 32 символа вообще не должны как-то выглядеть, в том числе символ #0.
    Насчёт всех 32-ух не согласен https://en.wikipedia.org/wiki/Code_page_866
    Но вот символ #0 в шрифте 8x16 в данный момент всё-таки "как-то" выглядит.
    Pathoswithin wrote:Посмотри в window.inc - window._.draw_window_caption.dodraw
    Если сделать перед вызовом dtext

    Code: Select all

    or      ecx, 0x80000000
    то работает, но бывает так, что надпись ещё больше наезжает на кнопки в заголовке.
    Наверное, лучше заголовок выводить не как ASCIIZ, но предварительно определив длину строки.
    Однако, судя по коду, кодировка может быть разной, значит, нужны разные StrLen функции.
    Ну или пока что сделать только для CP866.
    Другой вариант — для заголовка завести отдельный флаг: выводить либо esi символов, либо до первого попавшегося символа #0, то есть, так, как сейчас работает для вообще всех случаев.
  • #7103
    Ну, в общем, я решил сделать
    0CodErr wrote:для заголовка завести отдельный флаг: выводить либо esi символов, либо до первого попавшегося символа #0
    Надеюсь, ничего больше не поломалось :)
    Осталось теперь это
    0CodErr wrote:Но вот символ #0 в шрифте 8x16 в данный момент всё-таки "как-то" выглядит.
    А в 6x9 — нормально, никак не выглядит.
  • Надейся, я тоже каждый раз надеялся...

    Тут надо понимать разницу между "выглядеть как ничего" и "не выглядеть никак": символ №32 всегда выглядит как ничего, а символы №0 - №31 не обязаны выглядеть как-то конкретно, потому могут выглядеть как угодно и рассчитывать на них не желательно.

    А откуда у тебя в коде столько пробелов в конце строк?
  • Pathoswithin wrote:Тут надо понимать разницу между "выглядеть как ничего" и "не выглядеть никак": символ №32 всегда выглядит как ничего, а символы №0 - №31 не обязаны выглядеть как-то конкретно, потому могут выглядеть как угодно и рассчитывать на них не желательно.
    Ну было бы удобно, если #0 выглядел бы как #32 в обоих шрифтах. Это можно как-то поправить?
    Pathoswithin wrote:А откуда у тебя в коде столько пробелов в конце строк?
    О, вот это не знаю даже, как так получилось. Может после копипаста откуда-то вставились.
  • Если обратишь внимание на код, то увидишь что символ №0 в шрифте 8x16 используется для всех символов юникода, которых в шрифте нет.
  • Думаю, было бы лучше, чтобы символы выглядели одинаково как в обоих шрифтах, так и в консоли.
    По-моему лучший вариант — как они выглядят в консоли
    Image
  • Это вообще cp437, там все символы имеют конкретный вид, а системная у нас cp866.
  • Вообще-то ссылку я тебе давал уже https://en.wikipedia.org/wiki/Code_page_866
    Pathoswithin wrote:системная у нас cp866
    , которая как раз и основана на CP437. Нижняя часть таблицы осталась такой же
    Image
  • Wikipedia wrote:the first half (code points 0–127) being the same as ASCII
    Тоже самое касается юникода. Идём сюда -> https://en.wikipedia.org/wiki/ASCII
    Wikipedia wrote:ASCII reserves the first 32 codes (numbers 0–31 decimal) for control characters
    Использовать их для чего-либо - плохая идея.
  • Who is online

    Users browsing this forum: No registered users and 6 guests