Page 7 of 8

Re: Названия системных функций

Posted: Mon Jan 04, 2016 9:44 am
by Pathoswithin
Ну так делайте, я в высокоуровневых языках вообще не разбираюсь. Берёте названия из KOSfuncs.inc, удаляете префикс, подфункции через точку (или не обязательно), выбираете макросы или функции и делаете KOSfuncs.h.
viewtopic.php?f=33&p=63699#p63491

Re: Названия системных функций

Posted: Mon Jan 04, 2016 12:15 pm
by ALEXS1983
Вот «набросал» как пример-черновик первых пять функций:
uKOSFunc.pas:
Spoiler:unit uKOSFunc;
interface

type TkfColor= record R,G,B:Word; end; // Будет ли такое ?!
type TkfTime= record H,M,S:Word; end; // Будет ли такое ?!
// в interface процедуры пока не вписывал!!!
implementation

//SF_TERMINATE_PROCESS=-1
procedure TerminateProcess; begin end;

//SF_CREATE_WINDOW=0 ; define and draw the window
procedure CreateWindow(
x,y:Word; SizeX,SizeY:Word;
// КООРДИНАТЫ и размер
WindowColor:Cardinal;
// mainAreaColour ?! - Цвет //или всё таки WindowColor:TkfColor
WindowStyleX,WindowStyleY:Byte;
// mainAreaType ?! в sysfuncr стиль окна вхожа в цвет * edx = 0xXYRRGGBB, где: * Y = стиль окна:
// думаю правильно делать отдельно! т.е. цвет отдельно color, стиль отдельно StyleWindow
HeadColor:Cardinal;
// цвет заголовка //или всё таки WindowColor:TkfColor и вот опять же надо разделять со стилями
HeadStyleX,HeadStyleY:Byte;
// headerType ?!
FrameColor:Cardinal
// borderColour?! цвет рамки //или всё таки FrameColor:TkfColor
); begin end;

// SF_PUT_PIXEL=1 ; draw pixel to the window
procedure PutPixel(
x,y:Word;
// координаты
Color:Cardinal
// цвет
); begin end;

//Функцию 2 предлагаю "разбить" на две функции, считаю что так будет удобней например
// в циклах ожидания нажатия GetKeyStatus и после нажатия опрос кода самой клвиши
// GetKey
//SF_GET_KEY=2 ; get code of the pressed key
Function GetKeyStatus:Boolean;begin end;
Function GetKey:Byte;begin end;

//SF_GET_SYS_TIME=3
Function GetSysTime:Cardinal;begin end;
// или GetSysTime:TkfTime; ?

//SF_DRAW_TEXT=4 ДОРАБОТАТЬ !!!
procedure DrawText(x,y:Word;Color:Cardinal;fontType:Byte;t:string);
begin end;

//SF_SLEEP=5
procedure Sleep(Value:Cardinal); begin end; // ; pause process

end.
Тем кто не умеет и не хочет читать поскакалевские файлы, вот «перевод» программой «Delphi2Cpp»,
файл uKOSFunc.h:
Spoiler:#ifndef uKOSFuncH
#define uKOSFuncH


#include <System.hpp>


struct TkfColor;
struct TkfTime;




struct TkfColor {
WORD R, G, B;
}; // Будет ли такое ?!




struct TkfTime {
WORD H, M, S;
}; // Будет ли такое ?!
// в interface процедуры пока не вписывал!!!


#endif // uKOSFuncH
...и файл файл uKOSFunc.cpp:
Spoiler:#include <vcl.h>
#pragma hdrstop

#include "uKOSFunc.h"



//SF_TERMINATE_PROCESS=-1


#include <System.hpp>


typedef unsigned char unsignedchar;
typedef unsigned int unsignedint;



void __fastcall TerminateProcess( )
{
}

//SF_CREATE_WINDOW=0 ; define and draw the window



void __fastcall CreateWindow( WORD x, WORD y, WORD SizeX, WORD SizeY,
// КООРДИНАТЫ и размер
unsignedint WindowColor,
// mainAreaColour ?! - Цвет //или всё таки WindowColor:TkfColor
unsignedchar WindowStyleX, unsignedchar WindowStyleY,
// mainAreaType ?! в sysfuncr стиль окна вхожа в цвет * edx = 0xXYRRGGBB, где: * Y = стиль окна:
// думаю правильно делать отдельно! т.е. цвет отдельно color, стиль отдельно StyleWindow
unsignedint HeadColor,
// цвет заголовка //или всё таки WindowColor:TkfColor и вот опять же надо разделять со стилями
unsignedchar HeadStyleX, unsignedchar HeadStyleY,
// headerType ?!
unsignedint FrameColor
// borderColour?! цвет рамки //или всё таки FrameColor:TkfColor
)
{
}

// SF_PUT_PIXEL=1 ; draw pixel to the window



void __fastcall PutPixel( WORD x, WORD y,
// координаты
unsignedint Color
// цвет
)
{
}

//Функцию 2 предлагаю "разбить" на две функции, считаю что так будет удобней например
// в циклах ожидания нажатия GetKeyStatus и после нажатия опрос кода самой клвиши
// GetKey
//SF_GET_KEY=2 ; get code of the pressed key


bool __fastcall GetKeyStatus( )
{
bool result = false;
return result;
}


unsignedchar __fastcall GetKey( )
{
unsignedchar result = 0;
return result;
}

//SF_GET_SYS_TIME=3



unsignedint __fastcall GetSysTime( )
{
unsignedint result = 0;
return result;
}
// или GetSysTime:TkfTime; ?

//SF_DRAW_TEXT=4 ДОРАБОТАТЬ !!!


void __fastcall DrawText( WORD x, WORD y, unsignedint Color, unsignedchar fontType, String t )
{
}

//SF_SLEEP=5



void __fastcall Sleep( unsignedint Value )
{
} // ; pause process
Возникающие вопросы и проблемы:
* «CreateWindow» может оказаться что есть такая процедура в каком-то ЯВУ например в том же BS6 помоему она есть. Думаю нужны приставки к имени процедур. Думаю, сами приставки должны быть в верблюддауне, например «kCreateWindow” или «kpCreateWindow” или «kfCreateWindow”, не очень то важно какая именно приставка, но должна быть короткой из одного или двух символов.

* Параметры процедур должны быть разнотипные?... Byte, Word, DWord ?... или все параметры DWord ? Если разнотипные то, какие иммено типы должны быть? Byte, Word, DWord ? Хватит ? Или еще какие-то должны применяться ?

* Будем ли утверждать свои типы? Например type TkfColor= record R,G,B:Word; end; ?

* Нужно внимательно изучить и обработать функцию 4, procedure DrawText. К слову. в файле kosSyst.cpp их две: void kos_WriteTextToWindow(Word x,Word y, Byte fontType, Dword textColour, char *textPtr, Dword textLen) и void kos_WriteTextToWindow_internal (Dword pos, Dword font, const char *textPtr, Dword textLen )

Re: Названия системных функций

Posted: Mon Jan 04, 2016 9:53 pm
by Pathoswithin
может оказаться что есть такая процедура в каком-то ЯВУ
И что? Процедуры не в языке, а в библиотеках. Зачем подключать библиотеку с API от другой ОС?

Re: Названия системных функций

Posted: Mon Jan 04, 2016 9:56 pm
by ALEXS1983
Pathoswithin wrote:И что? Процедуры не в языке, а в библиотеках. Зачем подключать библиотеку с API от другой ОС?
Ну да ладно об этом!...
Другие замечания будут ?

Re: Названия системных функций

Posted: Thu Jan 07, 2016 2:01 pm
by ALEXS1983
В общем, вот с 1-16 функции, паскалевский(дельфийский) модуль. Переводчик Delphi2Cpp почему-то не захотел переводить, выдаёт ошибку, я не вникал какую и почему. Пока модуль-"пустышку" буду писать на под паскаль (дельфи), после видно будет. Пока надо бы утвердить сами процедуры с входящими и возвращаемыми параметрами, реализация их потом.
Хотя как я посмотрю, никому уже никакого дела нет до этой темы! :-(
Ну да ладно!... утвержу сам себе!... :-) раз никому до этого нет никакого дела! :-(
uKOSFunc.pas (6.73 KiB)
Downloaded 394 times

Re: Названия системных функций

Posted: Mon Jan 11, 2016 7:29 pm
by IgorA
Предлагаю обновить документацию в файле sysfuncr.txt . Если не будет замечаний на кину прикрепленный файл на svn.

Re: Названия системных функций

Posted: Mon Jan 11, 2016 10:58 pm
by Wildwest
чего-то нехватает.......

посмотри внимательно все изменения файла хотя бы за последний год, я вот посмотрел, когда делал дайджест http://habrahabr.ru/company/kolibrios/blog/274487/ - файл на русском обновлялся раза 2, а на английском раз 6 и в английском намного больше нового, чем в файле на русском.

Re: Названия системных функций

Posted: Tue Jan 12, 2016 12:06 pm
by Pathoswithin
За последний год оба обновлялись раз 10.
IgorA, лучше сразу заливай, чтоб было видно изменения.

Re: Названия системных функций

Posted: Tue Jan 12, 2016 2:50 pm
by IgorA
Просмотрел русский файл справки, не было функции 76.
Обновил на svn ревизия 6056. Осталось еще в английский файл те же константы всунуть.

Re: Названия системных функций

Posted: Sat Oct 20, 2018 9:27 pm
by 0CodErr
Некоторые всё-таки используют константы из файла KOSfuncs.
Я когда-то ответил автору в ЛС про кое-какие проблемы с наименованиями, но его ответ был в духе "я художник, я так вижу".
0CodErr wrote:...........................................................
По поводу тех констант. Я их использовать не хочу, так как некоторые из них только вносят путаницу.

Code: Select all

SF_TERMINATE_PROCESS
SSF_TERMINATE_THREAD=2;//       ; terminate process/thread by the slot number
SSF_TERMINATE_THREAD_ID=18;//    ; Terminate process/thread by the ID
В одном случае PROCESS, в другом THREAD.
В одном случае суффикс ID, почему тогда в другом не SLOT?

Code: Select all

    SF_DRAW_TEXT=4;
    SF_DRAW_RECT=13;//         ; draw rectangle to the window
    SF_DRAW_LINE=38;
    SF_DRAW_NUMBER=47;//       ; draw number to the window
    SF_PUT_IMAGE_EXT=65;//     ; draw image with palette to the window
    SF_PUT_IMAGE=7;//          ; draw image to the window
Везде DRAW, а в 2-ух последних внезапно PUT.

Code: Select all

    SF_PUT_PIXEL=1;//          ; draw pixel to the window
Привычнее всё-таки SetPixel.

Code: Select all

      SSF_HEAP_INIT=11;
      SSF_MEM_ALLOC=12;
      SSF_MEM_FREE=13;
Я раньше тоже примерно так называл, но считаю, что логичнее будет вместо mem сделать Heap. HeapCreate, HeapAllocate, HeapFree, HeapReallocate.

Code: Select all

SSF_MEM_OPEN=22;//       ; open named memory area
SSF_MEM_CLOSE=23;
Это очень похоже на предыдущее, вводит в заблуждение.
Лучше явно указывать SharedMemoryOpen, SharedMemoryClose.

Даже, казалось бы, такие "безобидные" неточности могут создать неприятные впечатления.
Можно подумать даже, что разработчики сами не очень-то разбираются.
...........................................................

Re: Названия системных функций

Posted: Sat Oct 20, 2018 10:32 pm
by Pathoswithin
А почему в ЛС? Итоговый вариант утверждали коллективно.

Re: Названия системных функций

Posted: Sat Oct 20, 2018 10:54 pm
by b00bl1k
0CodErr wrote:Некоторые всё-таки используют константы из файла KOSfuncs.
Считаю, что константы просто обязательны к использованию.

Почти по всем пунктам согласен, кроме PUT_PIXEL.

Проверял компиляцию только fasm-программ.

Re: Названия системных функций

Posted: Sat Oct 20, 2018 11:07 pm
by 0CodErr
Pathoswithin wrote:А почему в ЛС?
Там был другой предмет обсуждения.
Просто он предложил мне их использовать, а я ему назвал причины, по которым я этого делать не хочу.
b00bl1k wrote:константы просто обязательны к использованию
Ну для кого-то может и так.
Но мне вполне хватает обёрток, к тому же это гораздо удобнее, просто сравни
это

Code: Select all

mcall SF_SYSTEM, SSF_MOUSE_SETTINGS, SSSF_GET_DOUBLE_CLICK_DELAY
и это

Code: Select all

Invoke GetDoubleClickTime

Re: Названия системных функций

Posted: Sat Oct 20, 2018 11:11 pm
by b00bl1k
Перефразирую: использование магических чисел это плохо

Re: Названия системных функций

Posted: Mon Jul 05, 2021 5:28 am
by dunkaist
I propose to replace the word folder with dir or directory.

Even Microsoft(R) uses this term in its API: CreateDirectoryA, RemoveDirectoryA, SetCurrentDirectory.
Of course, POSIX mentions directories: mkdir, chdir.
Yes, MenuetOS does it: http://www.menuetos.net/sys64.txt.