Page 70 of 77

Re: Помогите новичку

Posted: Sun Oct 04, 2015 4:29 am
by Yason
Сейчас попробовал сделать так:

Code: Select all

CODE

char_coord_x = 10
char_coord_y = 10
char_width  = 6
char_height = 9

        ; draw one char in buffer.
        xor     eax, eax
        mov      al, 4
        mov     ebx, char_coord_x
        shl     ebx, 16
        add     ebx, char_coord_y
        xor     ecx, ecx
        mov      cl, 00001000b    ; XY ; X = font type 6x9 cp866 ; Y = output in buffer.
        ror     ecx, 8
        add     ecx, 0x00ff0000   ; char color is red.
        mov     edx, string       ; edx = char start address.
        mov     esi, 1            ; use one char.
        mov     edi, char_addr    ; edi = buffer address for char.
        int     0x40

        ; draw character image.
        xor     eax, eax
        mov      al, 65
        mov     ebx, char_addr_    ; ebx = buffer address with char.
        mov     ecx, char_width
        shl     ecx, 16
        add     ecx, char_height
        mov     edx, char_coord_x
        shl     edx, 16
        add     edx, char_coord_y
        mov     esi, 32           ; 32 bits per pixel.
        mov     edi, 0
        mov     ebp, 0
        int     0x40

DATA

char_addr:  
dd  char_width, char_height
char_addr_:
db  char_width*char_height*4  dup (0x55)
но, ничего не изменилось. Символа, всё так же, нет. Только, тёмный прямоугольник, а должен быть, красный символ, на тёмном фоне.

Re: Помогите новичку

Posted: Sun Oct 04, 2015 5:09 am
by Yason
Уфффффффффффффффффффф, разобрался. :x Теперь, всё работает. Дебильная документация, млин. :twisted: Нельзя было нормально написать.

И вообще нахрена, надо указывать вначале буфера, размер символа, если для этого, есть биты, высталенные в старшей части регистра ECX, которые указывают на размер символа? Идиотизм какой-то. :shock:

Re: Помогите новичку

Posted: Mon Oct 05, 2015 6:01 am
by Pathoswithin
В начале буфера указывается размер буфера, а не символа. Вертикальный размер реально не используется, но горизонтальный по любому нужен. Такой стандарт придумал Марио, а на счёт документации — предлагай, как лучше.

Re: Помогите новичку

Posted: Mon Oct 05, 2015 7:45 pm
by Yason
Pathoswithin wrote:В начале буфера указывается размер буфера, а не символа.
Я имел ввиду, по отношенмю к моему примеру. Но даже для буфера. Зачем, если функция, сама может вычислить размер буфера? Благо, в регистрах, уже всё есть.
Pathoswithin wrote:Вертикальный размер реально не используется, но горизонтальный по любому нужен.
Тогда зачем, нужны лишние 4 байта?
Pathoswithin wrote:Такой стандарт придумал Марио,
Ясно.
Pathoswithin wrote:а на счёт документации — предлагай, как лучше.
Должен уточнить; я говорил, не про всю документацию, а про документацию на 4-ую функцию, хотя где-то ещё, было что-то. Придлогать ничего не собирался, просто выразил свои эмоции.

Но, коли на то пошло, то, хотя бы так:

Code: Select all

======================================================================
============== Функция 4 - вывести строку текста. ====================
======================================================================
Особенность:
  * может выводить строку текста в окно.
  * может выводить строку текста в область пользователя.

Параметры:
  * eax = 4 - номер функции
  * ebx = [координата по оси x]*65536 + [координата по оси y]
  * ecx = 0xXYRRGGBB, где
    * RR, GG, BB задают цвет текста
    * X=ABFF (биты):
      * A=1 - выводить ASCIIZ-строку
      * B=1 - закрашивать фон цветом edi
      * FF задает шрифт и кодировку:
        0 = 6x9  cp866
        2 = 8x16 UTF-16LE
        3 = 8x16 UTF-8
    * Y=CDDD (биты):
      * C=1 перенаправить вывод в область пользователя, задано в edi
      * DDD = (множитель размера)-1, то-есть 0 = x1, 7 = x8
  * edx = указатель на начало строки
  * esi = для A=0 длина строки, для A=1 игнорируется
  * edi = если B=1, цвет для закраски фона,
          если C=1, указатель на область пользователя

Возвращаемое значение:
  * функция не возвращает значения.

Формат области пользователя:
  * dword: со значением ширины области пользователя.
  * dword: со значением высоты области пользователя.
  * field: остаток области, где будет храниться строка.

Замечания:
  * Нельзя одновременно использовать B=1 и C=1,
    поскольку в обоих случаях используется регистр edi.
  * при С=1 (вывод в область пользователя):
     * координаты в регистре ebx, являются координатами 
        внутри пользовательской области.
     * размер цвета пикселя = 32 бита.
     * область field - берётся из расчёта: 
         field=width*height*4
     * вывод области пользователя в окно, можно сделать функцией 65,
       указав поле field, в качестве отправной точки.
     * в область пользователя, записываются только пиксели символов.

======================================================================
IMHO так лучше. Всё ясно и понятно.

Re: Помогите новичку

Posted: Sat Oct 10, 2015 12:11 am
by X-Ray
Ребят,если в исходниках KolibriOS сменить богомерзкий слеш в разделителе имен каталогов на православный бэкслеш,
то совместимость с существующим софтом как положено,рухнет к епени фени,м?

Re: Помогите новичку

Posted: Sat Oct 10, 2015 1:35 pm
by Pathoswithin
А с каких это пор исконный, юниксовый слеш — богомерзкий, а виндовый бэкслеш, внезапно, — православный?
Если со стороны файловой системы, то наверно можно сделать поддержку обоих.

Re: Помогите новичку

Posted: Sat Oct 10, 2015 2:23 pm
by GerdtR
X-Ray wrote:совместимость с существующим софтом как положено, рухнет к епени фени,м?
Обязательно. Потому как если что, в коде проверяют символ '/'. И зачем? Я что-то не припомню - с винды что-нибудь портировали? А с Линукса было и не раз. Ещё одну заморочку надо?

Re: Помогите новичку

Posted: Sat Oct 10, 2015 5:26 pm
by X-Ray
Pathoswithin wrote:А с каких это пор исконный, юниксовый слеш — богомерзкий, а виндовый бэкслеш, внезапно, — православный?
Разумеется по версии олдовых DOS-юзеров,к которым и я отношусь,внезапно)
GerdtR wrote:Обязательно. Потому как если что, в коде проверяют символ '/'. И зачем?...
Ненавижу unix-style) Но это мое имхо,разумеется.
P.S.А имена дисков в файлманагерах в стиле rd/hd/bd etc. планируется сменить на что-нить более ммм... виндовое ?

Re: Помогите новичку

Posted: Sat Oct 10, 2015 5:30 pm
by GerdtR
X-Ray wrote: P.S.А имена дисков в файлманагерах в стиле rd/hd/bd etc. планируется сменить на что-нить более ммм... виндовое ?
Нет. Я понимаю, что тебе Винда привычнее, только тут Колибри. ОС другая. И вообще, не удобно же. Ну что за диск К, например? А в колибри cd0 - и сразу ясно - первый дивидишник.

Re: Помогите новичку

Posted: Sat Oct 10, 2015 5:51 pm
by X-Ray
GerdtR wrote:Нет. Я понимаю, что тебе Винда привычнее, только тут Колибри. ОС другая. И вообще, не удобно же. Ну что за диск К, например? А в колибри cd0 - и сразу ясно - первый дивидишник.
Это нам с тобой ясно. А поставь себя на место среднестатистического пользователя - "А хде мои особо ценные файлы на диске Дэ ?"

Re: Помогите новичку

Posted: Sat Oct 10, 2015 7:05 pm
by GerdtR
:) Когда-то я не знал, как Винду вырубить. Вот недавно в вин7 искал "Свойства папки" дабы включить отображение скрытых папок. Ах да, в 8мой тоже искал, как комп вырубить - в пуске-то нет. Это я к чему: надо будет - найдёт и будет всё ясно и понятно.
PS: Показать, как в винде диск D назвать диском R, например? В XP точно знаю, ну в 7ой тоже должно быть. В новых не уверен, как там. Это что, придётся искать винду, её реестр и называть также диски? А то никаких гарантий, что диск D и E в Винде не окажутся E и D в Колибри. Прикинь глаза юзера :)

Re: Помогите новичку

Posted: Sat Oct 10, 2015 7:59 pm
by Pathoswithin
X-Ray... это ты, конечно, дело говоришь, особенно с учётом того, что в КОС скачать особо ценные файлы проблематично. У разделов есть название, вот его неплохо бы читать и выводить...

Re: Помогите новичку

Posted: Sat Oct 10, 2015 8:13 pm
by GerdtR
Читать имя раздела вполне годная идея. И вполне просто реализуется.

Re: Помогите новичку

Posted: Sat Oct 10, 2015 9:30 pm
by X-Ray
GerdtR wrote::)... Вот недавно в вин7 искал "Свойства папки" дабы включить отображение скрытых папок. Ах да, в 8мой тоже искал, как комп вырубить - в пуске-то нет. Это я к чему: надо будет - найдёт и будет всё ясно и понятно.
Мда,7-ка слишком уж заточена под "домохозяйку" - сам искал,где включить скрытые/системные папки,и главное,отображение расширений файлов - без них в проводнике в ступор впадаю(еще одна причина ненавидеть unix - где расширения?!!Как можно ориентироваться?!! - хз.Ну это я так,к слову).
GerdtR wrote:PS: Показать, как в винде диск D назвать диском R, например? В XP точно знаю, ну в 7ой тоже должно быть.
Не нужно,проделываю это после каждой (пере)установки.В 7-ке,кстати,также.
GerdtR wrote:А то никаких гарантий, что диск D и E в Винде не окажутся E и D в Колибри.
Я не именно это имел ввиду,- в виндятине флоповод как правило A/B,системный C,secondary разделы или второй HDD - D or etc.Оставить лишь привычные наименования дисковых устройств,а не порядок расположения винтов/разделов.На мой взгляд удобно и логично.И даже в PC BIOS такая система наименований частенько бывает,не то что в ОС(кроме XT,там перемычками че угодно можно выставить).
Pathoswithin wrote:X-Ray... это ты, конечно, дело говоришь, особенно с учётом того, что в КОС скачать особо ценные файлы проблематично. У разделов есть название, вот его неплохо бы читать и выводить...
GerdtR wrote:Читать имя раздела вполне годная идея. И вполне просто реализуется.
Годнота,че. Ток меня терзают смутные сомненья,что далеко не каждый юзверь осведомлен о DISK LABEL.

Re: Помогите новичку

Posted: Sun Oct 11, 2015 10:33 am
by ruwebstyle
Цели пересадить всех с винды на Колибри нет.
Чтобы их пересадить, нужно выполнить очень много условий, вот некоторые:
- сделать оформление похожим или даже копию винды (переходил с винды на Линукс, знаю, о чем говорю)
- сделать полноценный браузер не хуже хрома/файерфокса
- сделать офисный пакет, который будет корректно отображать файлы офиса мелкомягких

Из этих 3х пунктов 1й можно реализовать за неделю. 2й можно реализовать, если хорошо потрудится вся активная часть разработчиков, за полгода-год.

На 3й пункт уйдет бесконечно количество времени, ибо это будет постоянная погоня за мелкомягкими.

-----------------
А можно насрать на все эти "пожелания" виндузятников и продолжать разрабатывать Колибри, делая его стабильнее и качественнее, не отвлекаясь на мелочи.