nasm, vc, gcc и другие

Applications development, KoOS API questions
  • ОЧЕНЬ ПОЛЕЗНАЯ статья.
  • Статья хорошая. Я бы добавил ещё часть по Watcom С но он пока в зачаточном состоянии.
  • Отличная статья! спасибо.
  • Не нашел магического pe2kos и хидеров в статье :)
  • Они не в статье, они в прилагаемом к статье архиве, ссылка на который дана в самой статье.
  • http://board.flatassembler.net/topic.ph ... sc&start=0
    тут есть пример программы на Ада и файлы для gnat
  • Статья просто замечательная. Огромное спасибо! Только что возился с написанием "Хеллоуворлда" на Visual C++ для Kolibri :-).

    Только вот заметил небольшую ошибочку (в главе "Среды Visual C++ 6, C++ из Visual Studio .NET/2005"). Если написать

    Code: Select all

    kos_WriteTextToWindow(30,10,8,0,(char*)string,0);
    то мы ничего не увидим, ибо последним аргументом (длиной строки) мы передаём 0. Если же передать реальную длину строки, то всё работает:

    Code: Select all

    kos_WriteTextToWindow(30,10,8,0,(char*)string,strlen(string));
  • Code: Select all

    // функция 4
    void kos_WriteTextToWindow(
    	Word x, Word y,
    	Byte fontType,
    	Dword textColour,
    	char *textPtr,
    	Dword textLen
    	);
    
    Третий параметр соответствует старшему байту ecx в функции 4 ( http://diamondz.land.ru/klbr_doc/04.htm ). Установленный 3-й бит (маска 8 ) означает "выводить ASCIIZ-строку", для которой переданная длина (последний аргумент) игнорируется (вычисляется автоматически). Так что строку мы увидим (по крайней мере, начиная с версии K0600).
  • Может быть я что-то не так делаю, но...

    Code: Select all

    kos_WriteTextToWindow(270,200,8, 0xFFFFFF ,"K  O  S  I  L  K  A",0);
    не дает ровным счётом ничего, в отличие от

    Code: Select all

    kos_WriteTextToWindow(270,200,8, 0xFFFFFF ,"K  O  S  I  L  K  A",19);
    Проверял на ядре ревизии #605
  • Мне кажется, что 3-й параметр - тип шрифта (0 или 1). Может попробовать написать

    Code: Select all

    kos_WriteTextToWindow(270, 200, 0, 0x80FFFFFF , "K  O  S  I  L  K  A", 0);
  • Dron2004
    Если
    Третий параметр соответствует старшему байту ecx в функции 4
    то должнобы быть так:

    Code: Select all

    kos_WriteTextToWindow(270,200,0x80, 0xFFFFFF ,"K  O  S  I  L  K  A",0);
  • В тексте статьи ошибка: на самом деле должно быть не 8, а 0x80, как отметил Alver. Кстати, в исходниках к статье (vc/hello.cpp) приведён правильный вариант.
  • Пытаюсь обьявить функцию как stdcall, но mingw начинает ругаться
    error: syntax error before '*' token
    error: `stdcall' declared as function returning a function
    Добавляю пару дефайнов

    Code: Select all

    #  ifdef GNUC
    #    define stdcall __stdcall
    #    define cdecl __cdecl
    #  else
    #    define stdcall __attribute__ ((__stdcall))
    #    define cdecl  __attribute__ ((__cdecl))
    #  endif
    
    ругаться начинает по другому
    error: syntax error before "__attribute__"
    .

    Не знаю в чем дело... Как ни странно в menuetlibc ниразу не пробегает слово stdcall, cdecl и подобные им.
  • Разобрался... если сделать дефайн GNUC то всё компилируетя
  • Who is online

    Users browsing this forum: No registered users and 4 guests