| 
| 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: нам нужны разработчики, так что было бы желание.
 |  |  |  |  |