Вот «набросал» как пример-черновик первых пять функций:
uKOSFunc.pas:
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:
#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:
#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 )