Board.KolibriOS.org
https://board.kolibrios.org/

Помогите новичку
https://board.kolibrios.org/viewtopic.php?f=2&t=684
Page 65 of 76

Author:  clisti [ Wed Jan 28, 2015 1:31 pm ]
Post subject:  Re: Помогите новичку

Здравствуйте! Помогите, пожалуйста, новичку: какие 5 наиболее важных изменений были сделаны в KoOS после отделения от MeOS?

Author:  Artyom [ Wed Jan 28, 2015 8:20 pm ]
Post subject:  Re: Помогите новичку

Поддержка железа, достаточно. Да и вообще, с какой целью интерессуетесь?

Author:  clisti [ Wed Jan 28, 2015 10:53 pm ]
Post subject:  Re: Помогите новичку

Offtopic:
Artyom wrote:
Поддержка железа, достаточно. Да и вообще, с какой целью интерессуетесь?


Хочу написать небольшое (15 000 - 20 000 asm строк) коммерческое приложение на fasm'е. Выбираю между MeOS и KoOS, сравниваю.

Author:  Artyom [ Fri Jan 30, 2015 3:47 am ]
Post subject:  Re: Помогите новичку

Право выбора есть у всех, не мне за тебя решать!!!

Author:  igevorse [ Sat Jan 31, 2015 2:09 pm ]
Post subject:  Re: Помогите новичку

Здравствуйте. Попытка открытия файла с диска с помощью библиотеки libio:
Code:
...
FILE* (* __attribute__((stdcall)) fopen_)(const char*, unsigned int);
...
kol_struct_import *libio = kol_cofflib_load("/sys/lib/libio.obj");
if (libio == 0)
    killMainThread();

fopen_ = ( __attribute__((stdcall)) FILE* (*) (const char*, unsigned int))
      kol_cofflib_procload (libio, "file_open");
if (fopen_ == NULL)
    killMainThread();
...

Code:
int main() {
...
    printf("trying to open file 1.txt\n");
    fopen_("1.txt", 0b00000001); // O_READ = 00000001b
    printf("done!");
...
}

Вывод программы:
Quote:
trying to open file 1.txt

Доска отладки сообщает, что произошёл page fault. MTDBG: "Debugger program called an exception 0E. Suspended."
Image
Файл 1.txt присутствует в каталоге с программой. При прописывании абсолютного пути к файлу наблюдается то же поведение. Что я делаю не так?

Author:  klb1 [ Mon Feb 02, 2015 11:34 am ]
Post subject:  Re: Помогите новичку

Вобщем-то эта "Колибри" хоть и хороша из-за хорошей скорости, но здесь надо быть программистом и самим программировать все, что необходимо иметь для работы. Странно, что так много игровых games. Может разработано для детского садика? Ну не серьезно-же это. Были-бы шахматы и то как-то понятно, а тут все просто тупой азарт.
Невозможно usb-modem установить.

Author:  Wildwest [ Mon Feb 02, 2015 7:18 pm ]
Post subject:  Re: Помогите новичку

Запустите программу PCIDEV, сделайте скриншот или сохраните в *.txt файл. Посмотрим назначены ли прерывания, что за модем. Хотя шансов мало, если софт-модем.

Author:  Artyom [ Tue Feb 03, 2015 7:36 pm ]
Post subject:  Re: Помогите новичку

klb1 wrote:
Вобщем-то эта "Колибри" хоть и хороша из-за хорошей скорости, но здесь надо быть программистом и самим программировать все, что необходимо иметь для работы. Странно, что так много игровых games. Может разработано для детского садика? Ну не серьезно-же это. Были-бы шахматы и то как-то понятно, а тут все просто тупой азарт.
Невозможно usb-modem установить.

На вкус и цвет - ОС нет и НЕ БУДЕТ!!!

Author:  klb1 [ Thu Feb 05, 2015 3:26 pm ]
Post subject:  Re: Помогите новичку

Вобщем-то у меня обычный модем - флешка "билайн".
Программа от нее не устанавливается под "KolibriOS".
Тут на форуме пожалуй много интересного можно просто узнать и на досуге почитаю
Спасибо.

Author:  Wildwest [ Thu Feb 05, 2015 5:04 pm ]
Post subject:  Re: Помогите новичку

http://moskva.beeline.ru/customers/help ... nstrukcii/ Ну там есть несколько моделей... Де-факто есть 2 человека, которые могут помочь (или сказать, что надо писать отдельный драйвер для модема) - CleverMouse и hidnplayr.

Author:  igevorse [ Fri Feb 06, 2015 8:25 pm ]
Post subject:  Re: Помогите новичку

Quote:
Здравствуйте. Попытка открытия файла с диска с помощью библиотеки libio:

Всё ещё актуально.
Нужно ли мне загружать и запускать lib_init из libio перед использованием file_open? Если да, то какие должны быть аргументы и возвращаемое значение mem.*?
Code:
;;================================================================================================;;
proc libio._.init ;///////////////////////////////////////////////////////////////////////////////;;
;;------------------------------------------------------------------------------------------------;;
;? Library entry point (called after library load)                                                ;;
;;------------------------------------------------------------------------------------------------;;
;> eax = memory allocation routine <mem.alloc*>                                                   ;;
;> ebx = memory freeing routine <mem.free*>                                                       ;;
;> ecx = memory reallocation routine <mem.realloc*>                                               ;;
;> edx = library loading routine <dll.load*>                                                      ;;
;;------------------------------------------------------------------------------------------------;;
;< eax = 1 (fail) / 0 (ok) (library initialization result)                                        ;;
;;================================================================================================;;
        mov     [mem.alloc], eax
        mov     [mem.free], ebx
        mov     [mem.realloc], ecx
        mov     [dll.load], edx
        xor     eax, eax
        ret
endp

Author:  dunkaist [ Fri Feb 06, 2015 10:33 pm ]
Post subject:  Re: Помогите новичку

Lib_init вызывать нужно, mem.* и dll.load -- это указатели на функции работы с памятью и загрузки библиотек. Не обязательно эти, но вести себя они должны так же.

Тут явно кто-то использовал libio из C; может, подскажут, куда смотреть за примером.

Author:  igevorse [ Sat Feb 21, 2015 11:38 am ]
Post subject:  Re: Помогите новичку

dunkaist, спасибо!
Теперь другая проблема:
При вызове функции time() из menuetlibc получаю время, сдвинутое вперед на 6 с чем-то лет (конкретно: на 191808000 секунд).
При этом, календарь отображает правильную дату.
Что интересно, день недели и время отображаются верно, а день, месяц и год - 5 марта 2021 вместо 21 февраля 2015.

Code:
#include <time.h>

time_t t = time(NULL);
string s = ctime(&t);


Дистрибутив от 21 февраля 2015 года.
Сообщите, пожалуйста, если это ожидаемое поведение, а не баг.

Author:  gc986 [ Wed Mar 11, 2015 9:53 am ]
Post subject:  Re: Помогите новичку

Только начал разбираться с программированием для Kolibri на ассемблере (в основное время пишу на языках высокого уровня), поэтому задаю глупый вопрос. Я изменил простую программу, добавил кнопку, с её помощью я хочу закрывать приложение. Что я делаю не так?
Code:
include "macros.inc"

MEOS_APP_START

CODE
redraw:
   call   draw_window
wait_event:
   mcall   10
   dec   eax
   jz   redraw
   dec   eax
   jz   key
   cmp   eax,3
   jz   button_event
key:
; Нажата клавиша, читать и игнорировать
   mcall   2
   jmp   wait_event
button_event:
   cmp  ah,1
   jne   close_program
   jmp   wait_event

close_program:
   mcall   -1
; Отрисовка окна
draw_window:
   mcall   12, 1
   mcall   0, <10,150>, <40,80>, 0x33FFFFFF, , header
   mcall   4, <30,10>, 0x80000000, string
   mcall   4, <30,20>, 0x80000000, string

   mcall   8, <30,50>, <30,20>, 1, 0xf0f0f0
   mcall   4, <38,37>, 0x80000000, button
   mcall   12,2
   ret
; Константы
DATA
header   db   'HelloWorld test',0
string   db   'Тестовая строка',0
button   db   'Кнопка',0


UDATA

MEOS_APP_END

Author:  Gluk [ Wed Mar 11, 2015 10:51 am ]
Post subject:  Re: Помогите новичку

если коротко, следует заменить
Code:
cmp   eax,3

на
Code:
dec   eax

Page 65 of 76 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/