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

Applications development, KoOS API questions
  • Поддержка железа, достаточно. Да и вообще, с какой целью интерессуетесь?
    Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!
  • : [quote="Artyom"]Поддержка железа, достаточно. Да и вообще, с какой целью интерессуетесь?[/quote]

    Хочу написать небольшое (15 000 - 20 000 asm строк) коммерческое приложение на fasm'е. Выбираю между MeOS и KoOS, сравниваю.
  • Право выбора есть у всех, не мне за тебя решать!!!
    Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!
  • Здравствуйте. Попытка открытия файла с диска с помощью библиотеки libio:

    Code: Select all

    ...
    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: Select all

    int main() {
    ...
        printf("trying to open file 1.txt\n");
        fopen_("1.txt", 0b00000001); // O_READ = 00000001b
        printf("done!");
    ...
    }
    Вывод программы:
    trying to open file 1.txt
    Доска отладки сообщает, что произошёл page fault. MTDBG: "Debugger program called an exception 0E. Suspended."
    Image
    Файл 1.txt присутствует в каталоге с программой. При прописывании абсолютного пути к файлу наблюдается то же поведение. Что я делаю не так?
  • Вобщем-то эта "Колибри" хоть и хороша из-за хорошей скорости, но здесь надо быть программистом и самим программировать все, что необходимо иметь для работы. Странно, что так много игровых games. Может разработано для детского садика? Ну не серьезно-же это. Были-бы шахматы и то как-то понятно, а тут все просто тупой азарт.
    Невозможно usb-modem установить.
  • Запустите программу PCIDEV, сделайте скриншот или сохраните в *.txt файл. Посмотрим назначены ли прерывания, что за модем. Хотя шансов мало, если софт-модем.
  • klb1 wrote:Вобщем-то эта "Колибри" хоть и хороша из-за хорошей скорости, но здесь надо быть программистом и самим программировать все, что необходимо иметь для работы. Странно, что так много игровых games. Может разработано для детского садика? Ну не серьезно-же это. Были-бы шахматы и то как-то понятно, а тут все просто тупой азарт.
    Невозможно usb-modem установить.
    На вкус и цвет - ОС нет и НЕ БУДЕТ!!!
    Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!
  • Вобщем-то у меня обычный модем - флешка "билайн".
    Программа от нее не устанавливается под "KolibriOS".
    Тут на форуме пожалуй много интересного можно просто узнать и на досуге почитаю
    Спасибо.
  • http://moskva.beeline.ru/customers/help ... nstrukcii/ Ну там есть несколько моделей... Де-факто есть 2 человека, которые могут помочь (или сказать, что надо писать отдельный драйвер для модема) - CleverMouse и hidnplayr.
  • Здравствуйте. Попытка открытия файла с диска с помощью библиотеки libio:
    Всё ещё актуально.
    Нужно ли мне загружать и запускать lib_init из libio перед использованием file_open? Если да, то какие должны быть аргументы и возвращаемое значение mem.*?

    Code: Select all

    ;;================================================================================================;;
    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
  • Lib_init вызывать нужно, mem.* и dll.load -- это указатели на функции работы с памятью и загрузки библиотек. Не обязательно эти, но вести себя они должны так же.

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

    Code: Select all

    #include <time.h>
    
    time_t t = time(NULL);
    string s = ctime(&t);
    Дистрибутив от 21 февраля 2015 года.
    Сообщите, пожалуйста, если это ожидаемое поведение, а не баг.
  • Только начал разбираться с программированием для Kolibri на ассемблере (в основное время пишу на языках высокого уровня), поэтому задаю глупый вопрос. Я изменил простую программу, добавил кнопку, с её помощью я хочу закрывать приложение. Что я делаю не так?

    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
    	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
    
  • если коротко, следует заменить

    Code: Select all

    cmp   eax,3
    на

    Code: Select all

    dec   eax
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Who is online

    Users browsing this forum: No registered users and 7 guests