Page 1 of 2

Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 12:59 pm
by Элита
Привет всем.

http://diamond.kolibrios.org/hll/hll.htm - вот здесь нашел пример того, как должна писаться программа для Колибри на FASM.

Code: Select all

include "macros.inc"

MEOS_APP_START

CODE
redraw:
        call    draw_window
wait_event:
        mcall   10
        dec     eax
        jz      redraw
        dec     eax
        jz      key
; button pressed; we have only one button, close
        mcall   -1
key:
; key pressed, read it and ignore
        mcall   2
        jmp     wait_event

draw_window:
        mcall   12, 1           ; start redraw
        mcall   0, <10,150>, <40,50>, 0x33FFFFFF, , header      ; define&draw window
        mcall   4, <30,10>, 0x80000000, string                  ; display string
        mcall   12, 2           ; end redraw
        ret

DATA
header  db      'HelloWorld test',0
string  db      'Hello, World!',0

UDATA

MEOS_APP_END
Выкладываю скриншоты. Вдруг я где-то что-то упустил, не написал.

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:04 pm
by Элита
mcall 0, <10,150>, <40,50>, 0x33FFFFFF дописал, но все равно не пашет, пишет то же самое

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:06 pm
by Mario

Code: Select all

include "macros.inc"
macros.inc должен лежать в одном каталоге с программой

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:10 pm
by Элита
Mario wrote:

Code: Select all

include "macros.inc"
macros.inc должен лежать в одном каталоге с программой

Вот этот? (см. ниже)

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:16 pm
by Элита
Что-то у меня не получилось скопировать "macros.inc" в папку "Develop"

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:18 pm
by Mario
1. Лучше взять тот который на SVN. Я не знаю какой у тебя лежит.
2. Свободного места на рамдиске очень мало - остается удалить что-либо ненужное, а вообще Колибри нормально работает на запись с любым исправным FAT16./32 разделом на жестком диске.

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:21 pm
by Элита
Можно ли в Windows написать все это, а затем как-то собрать образ диска/дискеты КолибриОС? Может есть подробное руководство для чайников? А то не могу самостоятельно что-то разобраться.

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 1:38 pm
by Mario

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 3:24 pm
by Элита
ааааа сейчас начну кипятком писать!!!!!!

Вот что пишет FASM при наличии всех *.inc :

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 3:25 pm
by Элита
Это я уже из под "окон" пытаюсь скомпилировать

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 3:27 pm
by Mario
Выложи сюда полный код своей программы.

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 3:35 pm
by Элита
Mario wrote:Выложи сюда полный код своей программы.

В самом первом сообщении и ссылка на код, и сам код. Это не моя программа, а пример diamond'а, как писать программу на FASM. Даже с ним не могу разобраться. Позор какой.

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 3:44 pm
by Mario
Я лично не пользовался MEOS_APP_START - для меня проще и понятней написать нормальный человеческий заголовок:

Code: Select all

use32
    db	  'MENUET01'
    dd	  0x01
    dd	  START
    dd	  I_END
    dd	  mem
    dd	  stacktop
    dd	  0x0
    dd	  path
Смотри файл example.asm

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 4:01 pm
by Элита
Хорошо, спасибо.. Буду разбираться

Re: Пытаюсь понять, как писать под КолибриОС

Posted: Mon Jun 06, 2011 5:13 pm
by CleverMouse
Статья diamond'а довольно старая, а после того, как он ушёл, перспективы на обновление крайне низкие. С момента написания статьи какой-то кто-то ввёл в macros.inc макрос по имени header, тем самым жестоко обломав все существующие программы, использующие это имя.
Нужно, например, заменить везде в программе header на title.

И более глобально - статья diamond'а не про это, а HelloWorld подробно разбирается в первом e-zin'е, который включён в SDK.