delete lua && add background funcs

This commit is contained in:
2025-05-02 13:13:56 +05:00
parent 1c77f25017
commit 105f80a8f6
7 changed files with 214 additions and 43 deletions

View File

@@ -13,6 +13,19 @@
"SYSCALLS_VERSION_C" "SYSCALLS_VERSION_C"
] ]
}, },
{
"name": "Windows Lua5.3",
"includePath": [
"C:/MinGW/msys/1.0/home/autobuild/tools/win32/include",
"C:/MinGW/msys/1.0/home/autobuild/tools/win32/include/lua5.3",
"${workspaceFolder}/../kolibrios/contrib/sdk/sources/newlib/libc/include"
],
"defines": [
"SYSCALLS_VERSION_A",
"SYSCALLS_VERSION_B",
"SYSCALLS_VERSION_C"
]
},
{ {
"name": "Debug", "name": "Debug",
"includePath": [ "includePath": [

View File

@@ -38,7 +38,7 @@ Socket_O = src/sockets/socket.o src/sockets/socket_lua.o src/sockets/sockaddr.o
Debug_O = src/debug/debug.o src/debug/registers.o Debug_O = src/debug/debug.o src/debug/registers.o
Version_O = src/version/coreversion.o src/version/version_type.o Version_O = src/version/coreversion.o src/version/version_type.o
ALL_O = src/syscalls.o src/ARP_entry.o src/systemColors.o src/graphic.o $(Socket_O) $(Debug_O) $(Version_O) ALL_O = src/syscalls.o src/ARP_entry.o src/systemColors.o src/graphic.o $(Socket_O) $(Debug_O) $(Version_O) src/background/background.o
syscalls.dll: $(ALL_O) syscalls.dll: $(ALL_O)
$(LD) -shared -T dll.lds --entry _DllStartup $(LDFLAGS) -o $@ $(ALL_O) $(LIBS) $(LD) -shared -T dll.lds --entry _DllStartup $(LDFLAGS) -o $@ $(ALL_O) $(LIBS)
@@ -61,6 +61,7 @@ src/debug/debug.o: src/debug/debug.c src/debug/debug.h src/debug/registers.h
src/debug/registers.o: src/debug/registers.c src/debug/registers.h src/syscalls.h src/debug.h src/debug/registers.o: src/debug/registers.c src/debug/registers.h src/syscalls.h src/debug.h
src/version/coreversion.o: src/version/coreversion.c src/version/coreversion.h src/version/coreversion.o: src/version/coreversion.c src/version/coreversion.h
src/version/version_type.o: src/version/version_type.c src/version/version_type.h src/debug.h src/version/version_type.o: src/version/version_type.c src/version/version_type.h src/debug.h
src/background/background.o: src/background/background.c src/background/background.h
## headers ## headers
@@ -71,3 +72,4 @@ src/debug/debug.h: src/syscalls.h
src/debug/registers.h: src/syscalls.h src/debug/registers.h: src/syscalls.h
src/version/coreversion.h: src/version/version_type.h src/version/coreversion.h: src/version/version_type.h
src/version/version_type.h: src/syscalls.h src/version/version_type.h: src/syscalls.h
src/background/background.h: src/syscalls.h

1
lua

repo.diff.submodule_deleted%!(EXTRA template.HTML=lua, template.HTML=eae2ea0aaa)

129
src/background/background.c Normal file
View File

@@ -0,0 +1,129 @@
#include "background.h"
static ksys_pos_t sizes;
int syscalls_backgroundGetSize(lua_State* L)
{
asm_inline(
"int $0x40"
:"=a"(sizes)
: "a"(39), "b"(1)
);
syscalls_push_pos_t(L, sizes);
return 1;
}
int syscalls_backgroundSetSize(lua_State* L)
{
sizes = syscalls_check_pos_t(L, 1);
_ksys_bg_set_size(
sizes.x,
sizes.y
);
return 0;
}
int syscalls_backgroundPutPixel(lua_State* L)
{
uint32_t x = luaL_checkinteger(L, 1);
uint32_t y = luaL_checkinteger(L, 2);
_ksys_bg_put_pixel(
x,
y,
sizes.x,
luaL_checkinteger(L, 3)
);
return 0;
}
ksys_color_t background_read_point(ksys_pos_t pos, uint16_t w)
{
ksys_color_t color;
asm_inline(
"int $0x40"
:"=a"(color)
: "a"(39), "b"(2), "c"((pos.x + pos.y * w) * 3)
);
return color;
}
int syscalls_backgroundReadPoint(lua_State* L)
{
lua_pushinteger(
L,
background_read_point(syscalls_check_pos_t(L, 1), sizes.x)
);
return 1;
}
int syscalls_backgroundRedraw(lua_State* L)
{
_ksys_bg_redraw();
return 0;
}
int syscalls_backgroundSetDrawMode(lua_State* L)
{
_ksys_bg_set_mode(luaL_checkinteger(L, 1));
return 0;
}
int syscalls_backgroundGetDrawMode(lua_State* L)
{
enum KSYS_BG_MODES mode;
asm_inline(
"int $0x40"
:"=a"(mode)
: "a"(39), "b"(4)
);
lua_pushinteger(L, mode);
return 1;
}
int syscalls_backgroundOpenMap(lua_State* L)
{
lua_pushinteger(
L,
_ksys_bg_get_map()
);
return 1;
}
int syscalls_backgroundCloseMap(lua_State* L)
{
if (_ksys_bg_close_map(luaL_checkinteger(L, 1)) == 0)
{
lua_pushnil(L);
}
else
{
lua_pushboolean(L, true);
}
return 1;
}
int syscalls_backgroundRedrawArea(lua_State* L)
{
_ksys_bg_redraw_bar(
syscalls_check_pos_t(L, 1),
syscalls_check_pos_t(L, 3)
);
return 0;
}

View File

@@ -0,0 +1,33 @@
#ifndef __BACKGROUND_H__
#define __BACKGROUND_H__
#include "../syscalls.h"
int syscalls_backgroundSetSize(lua_State* L);
int syscalls_backgroundPutPixel(lua_State* L);
int syscalls_backgroundRedraw(lua_State* L);
int syscalls_backgroundSetDrawMode(lua_State* L);
int syscalls_backgroundGetDrawMode(lua_State* L);
int syscalls_backgroundOpenMap(lua_State* L);
int syscalls_backgroundCloseMap(lua_State* L);
int syscalls_backgroundRedrawArea(lua_State* L);
inline syscalls_push_BackgroundDrawMode(lua_State* L)
{
lua_createtable(L, 0, 2);
LUA_PUSH_INTEGER_FIELD(L, KSYS_BG_MODE_PAVE, "Pave");
LUA_PUSH_INTEGER_FIELD(L, KSYS_BG_MODE_STRETCH, "Stretch");
lua_setfield(L, -2, "DrawMode");
}
#endif // __BACKGROUND_H__

View File

@@ -17,6 +17,7 @@
#include "graphic.h" #include "graphic.h"
#include "version/coreversion.h" #include "version/coreversion.h"
#include "version/library_version.h" #include "version/library_version.h"
#include "background/background.h"
/* /*
Режим ввода с клавиатуры Режим ввода с клавиатуры
@@ -107,7 +108,7 @@ static int syscalls_SetSkin(lua_State* L)
return 1; return 1;
} }
static int syscalls_GetSkinTilteArea(lua_State* L) static int syscalls_GetSkinTitleArea(lua_State* L)
{ {
ksys_pos_t leftRight, topBottom; ksys_pos_t leftRight, topBottom;
@@ -408,37 +409,6 @@ static int syscalls_getButton(lua_State* L)
} }
/*
Backgound
*/
static int syscalls_backgroundSetSize(lua_State* L)
{
_ksys_bg_set_size(
luaL_checkinteger(L, 1),
luaL_checkinteger(L, 2));
return 0;
}
static int syscalls_backgroundPutPixel(lua_State* L)
{
_ksys_bg_put_pixel(
luaL_checkinteger(L, 1),
luaL_checkinteger(L, 2),
luaL_checkinteger(L, 3),
luaL_checkinteger(L, 4));
return 0;
}
static int syscalls_backgroundRedraw(lua_State* L)
{
_ksys_bg_redraw();
return 0;
}
static int syscalls_getCPUClock(lua_State* L) static int syscalls_getCPUClock(lua_State* L)
{ {
lua_pushinteger(L, _ksys_get_cpu_clock()); lua_pushinteger(L, _ksys_get_cpu_clock());
@@ -1495,7 +1465,7 @@ static const luaL_Reg syscallsLib[] = {
{"SetWindowTitle", syscalls_setWindowTitle}, {"SetWindowTitle", syscalls_setWindowTitle},
{"GetSkinHeight", syscalls_getSkinHeight}, {"GetSkinHeight", syscalls_getSkinHeight},
{"SetSkin", syscalls_SetSkin}, {"SetSkin", syscalls_SetSkin},
{"GetSkinTitleArea", syscalls_GetSkinTilteArea}, {"GetSkinTitleArea", syscalls_GetSkinTitleArea},
/* Buttons funcs*/ /* Buttons funcs*/
{"DefineButton", syscalls_defineButton}, {"DefineButton", syscalls_defineButton},
{"DeleteButton", syscalls_deleteButton}, {"DeleteButton", syscalls_deleteButton},
@@ -1510,6 +1480,11 @@ static const luaL_Reg syscallsLib[] = {
{ "BackgroundSetSize", syscalls_backgroundSetSize }, { "BackgroundSetSize", syscalls_backgroundSetSize },
{ "BackgroundPutPixel", syscalls_backgroundPutPixel }, { "BackgroundPutPixel", syscalls_backgroundPutPixel },
{ "BackgroundRedraw", syscalls_backgroundRedraw }, { "BackgroundRedraw", syscalls_backgroundRedraw },
{ "BackgroundSetDrawMode", syscalls_backgroundSetDrawMode },
{ "BackgroundGetDrawMode", syscalls_backgroundGetDrawMode },
{ "BackgroundOpenMap", syscalls_backgroundOpenMap },
{ "BackgroundCloseMap", syscalls_backgroundCloseMap },
{ "BackgroundRedrawArea", syscalls_backgroundRedrawArea },
/* system funcs */ /* system funcs */
{ "GetRamSize", syscalls_getRamSize }, { "GetRamSize", syscalls_getRamSize },
{"GetFreeRam", syscalls_getFreeRam}, {"GetFreeRam", syscalls_getFreeRam},

View File

@@ -4,8 +4,9 @@
#include <lua.h> #include <lua.h>
#include <lualib.h> #include <lualib.h>
#include <lauxlib.h> #include <lauxlib.h>
#include <sys/ksys.h>
inline void syscalls_ReturnIntegerOrNil(LUA_INTEGER value, lua_State* L) static inline void syscalls_ReturnIntegerOrNil(LUA_INTEGER value, lua_State* L)
{ {
if (value == -1) if (value == -1)
{ {
@@ -17,7 +18,7 @@ inline void syscalls_ReturnIntegerOrNil(LUA_INTEGER value, lua_State* L)
} }
} }
inline void syscalls_ReturnIntegerValueOrNil(LUA_INTEGER cond, LUA_INTEGER value, lua_State* L) static inline void syscalls_ReturnIntegerValueOrNil(LUA_INTEGER cond, LUA_INTEGER value, lua_State* L)
{ {
if (cond == -1) if (cond == -1)
{ {
@@ -29,7 +30,7 @@ inline void syscalls_ReturnIntegerValueOrNil(LUA_INTEGER cond, LUA_INTEGER value
} }
} }
inline void syscalls_ReturnTrueOrNil(LUA_INTEGER value, lua_State* L) static inline void syscalls_ReturnTrueOrNil(LUA_INTEGER value, lua_State* L)
{ {
if (value == -1) if (value == -1)
{ {
@@ -41,7 +42,7 @@ inline void syscalls_ReturnTrueOrNil(LUA_INTEGER value, lua_State* L)
} }
} }
inline void syscalls_ReturnStringOrNil(LUA_INTEGER cond, const char* value, lua_State* L) static inline void syscalls_ReturnStringOrNil(LUA_INTEGER cond, const char* value, lua_State* L)
{ {
if (cond == -1) if (cond == -1)
{ {
@@ -57,4 +58,23 @@ inline void syscalls_ReturnStringOrNil(LUA_INTEGER cond, const char* value, lua_
#define LUA_PUSH_STRING_FIELD(L, val, name) lua_pushstring(L, val); lua_setfield(L, -2, name); #define LUA_PUSH_STRING_FIELD(L, val, name) lua_pushstring(L, val); lua_setfield(L, -2, name);
#define LUA_PUSH_NUMBER_FIELD(L, val, name) lua_pushnumber(L, val); lua_setfield(L, -2, name); #define LUA_PUSH_NUMBER_FIELD(L, val, name) lua_pushnumber(L, val); lua_setfield(L, -2, name);
static inline ksys_pos_t syscalls_check_pos_t(lua_State* L, int index)
{
ksys_pos_t pos;
pos.x = luaL_checkinteger(L, index);
pos.y = luaL_checkinteger(L, index + 1);
return pos;
}
static inline void syscalls_push_pos_t(lua_State* L, ksys_pos_t pos)
{
lua_createtable(L, 0, 2);
LUA_PUSH_INTEGER_FIELD(L, pos.x, "x");
LUA_PUSH_INTEGER_FIELD(L, pos.y, "y");
}
#endif // __SYSCALLS_H__ #endif // __SYSCALLS_H__