Четверг, 21 Ноября 2024, 13:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Kolibri OS - исходный код
timyr9801Дата: Пятница, 30 Августа 2013, 23:10 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Всем привет. Как работать с исходником Kolibri OS?.

AkyltistДата: Четверг, 21 Ноября 2013, 10:03 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
timyr9801, странно видеть такой вопрос на джисе)
прежде всего необходимо иметь в закладках http://wiki.kolibrios.org/wiki/Ru/api/kernel
использование различных компиляторов: http://diamond.kolibrios.org/hll/hll.htm
по всем вопросам, собственно и с этим вопросом лучше на форум данной ОС) там подскажут по любому вопросу!

Ну на этот вопрос отвечу и тут:
берем FASM (родной компилятор), можно из под Win, или Linux (значения не имеет)
берем example.asm

Компиляция через командную строку: fasm.exe example.asm
(ну или проще создать bat или sh файл)

Разберемся с самим исходным кодом:
Код

     use32
     org  0x0

; HEADER ======================================================================
     db  'MENUET01'
     dd  0x01
     dd  START
     dd  I_END
     dd  0x7000
     dd  0x7000
     dd  0x0
     dd  0x0

START:
; EVENT =======================================================================
red:
       call draw_window
still:
       mov     eax,10                        ; функция 10 - ждать события
       int     0x40                          ; прерывание (вызов функции)    

       cmp     eax,1                         ; перерисовать окно ?
       je      red                           ; если да - на метку red
       cmp     eax,2                         ; нажата клавиша ?
       je      key                           ; если да - на key
       cmp     eax,3                         ; нажата кнопка ?
       je      button                        ; если да - на button
       jmp     still                         ; если другое событие - в начало цикла
;end_still

key:                    ; нажата клавиша на клавиатуре
       mcall   2                             ; функция 2 - считать код символа (в ah)
       jmp     still                         ; вернуться к началу цикла
;end_key

button:
       mcall   17                            ; 17 - получить идентификатор нажатой кнопки
       cmp     ah, 1                         ; если нажата кнопка с номером 1,
       jz      bexit                         ; выходим
       jmp     still
     bexit:
       mcall -1                    ; иначе конец программы
;end_button

; DRAW ========================================================================
draw_window:
       mov     eax,12                        ; функция 12: означает, что будет рисоваться окно
       mov     ebx,1                         ; 1,начало рисования
       int     0x40                          ; Прерывание

       mov     eax,48                        ; Функция 48 - стили отображения окон
       mov     ebx,3                         ; Подфункция 3 - получить стандартные цвета окон.
       mov     ecx,sc                        ; Указатель на буфер размером edx байт, под структуру
       mov     edx,sizeof.system_colors      ; Размер таблицы цветов (должен быть 40 байт)
       int     0x40                          ; Прерывание

       mov     eax,48                        ; Функция 48 - стили отображения окон.
       mov     ebx,4                         ; Подфункция 4 - возвращает eax = высота скина.
       int     0x40                          ; Прерывание
       mov     ecx,eax                       ; Запоминаем высоту скина

       xor     eax,eax                       ; Очищаем eax (mov eax,0) (Функция 0)
       mov     ebx,200 shl 16+160            ; [координата по оси x]*65536 + [размер по оси x]
       add     ecx,200 shl 16+60             ; Высота скина + [координата по y]*65536 + [размер по y]
       mov     edx,[sc.work]                 ; Видимо стиль окна по дефолту
       or      edx,0x34000000                ; Или окно со скином фиксированных размеров
       mov     edi,title                     ; Заголовок окна
       int     0x40                          ; Прерывание

       mov     eax,12                        ; функция 12: означает, что будет рисоваться окно
       mov     ebx,2                         ; 1,начало рисования
       int     0x40                          ; Прерывание

       ret

; DATA ========================================================================
       sc           system_colors
       title        db 'DEMO REC',0

I_END:

http://akyltist.ucoz.org/kolibri/example.zip

Если что не понятно спрашивай, сорцы прокомментировал в принципе.
Список событий для 10-той функции можно посмотреть тут: EVENTS

PS: нам нужны разработчики, так что было бы желание.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг