Compare commits
52
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e54b34aa93 | ||
|
|
fcfe7c3204 | ||
|
|
be4b482bde | ||
|
|
6f50b053b7 | ||
|
|
ece376660c | ||
|
|
98a14bc7dc | ||
|
|
989e36ffe2 | ||
|
|
ceb03a9d7e | ||
|
|
4ef61b0d3b | ||
|
|
2b071a58c7 | ||
|
|
1145b900e4 | ||
|
|
436cd86d8c | ||
|
|
540444dfbf | ||
|
|
2d7c51ed15 | ||
|
|
c842d9774f | ||
|
|
5963504f6b | ||
|
|
e64a59714a | ||
|
|
dd5d908e43 | ||
|
|
28846af43c | ||
|
|
b1e3953960 | ||
|
|
7e00e23801 | ||
|
|
bd12bbe862 | ||
|
|
48c203f028 | ||
|
|
d859e40e4a | ||
|
|
8c3649f691 | ||
|
|
b47194ed99 | ||
|
|
6bca42f2a5 | ||
|
|
f1211f3cca | ||
|
|
0913daebc6 | ||
|
|
d1a4b4d42f | ||
|
|
2906b8724b | ||
|
|
5e6e6c394a | ||
|
|
315050f095 | ||
|
|
f795ba24f8 | ||
|
|
738307d070 | ||
|
|
04cff2e2c3 | ||
|
|
0b5981242b | ||
|
|
f0dc598f44 | ||
|
|
d4236f455e | ||
|
|
96fcf19c14 | ||
|
|
8c51bd8690 | ||
|
|
43464bb550 | ||
|
|
6a1b87e250 | ||
|
|
9473e26b50 | ||
|
|
f19444201d | ||
|
|
f907b7e072 | ||
|
|
80d0183391 | ||
|
|
5f3de290f3 | ||
|
|
07106b9aed | ||
|
|
25df276101 | ||
|
|
dbc5105b9b | ||
|
|
a61289a318 |
No files matched your search
+14
@@ -50,3 +50,17 @@ steps:
|
|||||||
- |
|
- |
|
||||||
curl -X PUT https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
|
curl -X PUT https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
|
||||||
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
|
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
|
||||||
|
|
||||||
|
- name: msg status
|
||||||
|
image: appleboy/drone-discord
|
||||||
|
failure: ignore
|
||||||
|
depends_on:
|
||||||
|
- compile
|
||||||
|
when:
|
||||||
|
status: [success, failure, changed]
|
||||||
|
settings:
|
||||||
|
webhook_id:
|
||||||
|
from_secret: discord_webhook_id
|
||||||
|
webhook_token:
|
||||||
|
from_secret: discord_webhook_secret
|
||||||
|
message: "**Asuro Build**\n\n{{#success build.status}}✅ Build successful!\n\n{{else}}❌ Build failed!\n\n{{/success}}Repository: `{{repo.namespace}}/{{repo.name}}`\nBranch: `{{commit.branch}}`\nCommit: `{{commit.sha}}`\nAuthor: `{{commit.author}} <{{commit.email}}>`\n\nGitea Diff: [Link](<{{commit.link}}>)\nDrone Build: [Link](<{{build.link}}>)\n\nMessage: {{commit.message}}"
|
||||||
@@ -11,3 +11,7 @@
|
|||||||
/*.img
|
/*.img
|
||||||
src/include/asuro.pas
|
src/include/asuro.pas
|
||||||
localenv.json
|
localenv.json
|
||||||
|
/lvgl/
|
||||||
|
dockerout.txt
|
||||||
|
AGENTS.md
|
||||||
|
*.log
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Map all Aaron identities to a single preferred identity
|
||||||
|
Aaron Hance <[email protected]> aaron <aaron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
|
||||||
|
Aaron Hance <[email protected]> aaronhance <[email protected]>
|
||||||
|
Aaron Hance <[email protected]> aaron hance <[email protected]>
|
||||||
|
Aaron Hance <[email protected]> Aaron <[email protected]>
|
||||||
|
|
||||||
|
# Map all Kieron identities to a single preferred identity
|
||||||
|
Kieron Morris <[email protected]> kieron <kieron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
|
||||||
|
Kieron Morris <[email protected]> Kieron <[email protected]>
|
||||||
|
Kieron Morris <[email protected]> t3hn3rd <[email protected]>
|
||||||
|
|
||||||
|
# Map goose's multiple identities
|
||||||
|
goose <goose@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c> goose <[email protected]>
|
||||||
+2
-5
@@ -5,14 +5,11 @@ VOLUME ["/code"]
|
|||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN dpkg --add-architecture i386
|
RUN dpkg --add-architecture i386
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin \
|
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin gcc gcc-multilib && \
|
||||||
gcc-multilib g++-multilib && \
|
|
||||||
apt-get clean my room
|
apt-get clean my room
|
||||||
|
|
||||||
RUN git clone --depth=1 --recurse-submodules https://github.com/cimgui/cimgui.git /cimgui
|
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-c"]
|
SHELL ["/bin/bash", "-c"]
|
||||||
ARG FPC_VERSION=2.6.4
|
ARG FPC_VERSION=3.2.2
|
||||||
RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \
|
RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \
|
||||||
pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \
|
pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \
|
||||||
rm -rf fpc-$FPC_VERSION.i386-linux
|
rm -rf fpc-$FPC_VERSION.i386-linux
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ echo "Asuro Compilation"
|
|||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
#Compile Stub.asm
|
#Compile Stub.asm
|
||||||
rm lib/*
|
rm -f lib/*
|
||||||
|
|
||||||
runOrFail() {
|
runOrFail() {
|
||||||
local binary=$1
|
local binary=$1
|
||||||
@@ -23,7 +23,7 @@ runOrFail() {
|
|||||||
declare -a run_steps=(
|
declare -a run_steps=(
|
||||||
"compile_stub.sh" "Failed to compile stub!"
|
"compile_stub.sh" "Failed to compile stub!"
|
||||||
"compile_vergen.sh" "Versions failed to compile"
|
"compile_vergen.sh" "Versions failed to compile"
|
||||||
"compile_imgui.sh" "Failed to compile ImGui!"
|
"compile_lvgl.sh" "Failed to compile LVGL!"
|
||||||
"compile_sources.sh" "Failed to compile FPC Sources!"
|
"compile_sources.sh" "Failed to compile FPC Sources!"
|
||||||
"compile_link.sh" "Failed linking!"
|
"compile_link.sh" "Failed linking!"
|
||||||
"compile_isogen.sh" "Failed to create ISO!"
|
"compile_isogen.sh" "Failed to create ISO!"
|
||||||
|
|||||||
@@ -1,90 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
echo " "
|
|
||||||
echo "======================="
|
|
||||||
echo " "
|
|
||||||
echo "Compiling ImGui (cimgui)..."
|
|
||||||
echo " "
|
|
||||||
|
|
||||||
IMGUI_DIR=/cimgui
|
|
||||||
IMGUI_SRC=$IMGUI_DIR/imgui
|
|
||||||
BRIDGE_SRC=src/driver/video/imgui
|
|
||||||
|
|
||||||
# Flags shared by all C/C++ compilation units:
|
|
||||||
# -m32 -> i386 target
|
|
||||||
# -ffreestanding -> no implicit stdlib inclusion
|
|
||||||
# -fno-builtin -> don't inline memcpy/memset/etc. so our stubs are used
|
|
||||||
# -O2 -> optimise for speed
|
|
||||||
# -ffunction-sections -fdata-sections -> allow --gc-sections in linker
|
|
||||||
C_FLAGS="-m32 -ffreestanding -fno-builtin -O2 -ffunction-sections -fdata-sections"
|
|
||||||
|
|
||||||
# Extra flags for C++ translation units (cimgui/imgui sources):
|
|
||||||
# -fno-exceptions -> no stack-unwinding machinery
|
|
||||||
# -fno-rtti -> no typeinfo / dynamic_cast
|
|
||||||
# -fno-use-cxa-atexit -> don't emit __cxa_atexit calls for static dtors
|
|
||||||
# -fno-threadsafe-statics -> no guard-variable emission for local statics
|
|
||||||
# NOTE: *not* -ffreestanding / -fno-builtin here — imgui includes <cmath> and
|
|
||||||
# other hosted headers that refuse to compile in freestanding mode.
|
|
||||||
# The object files are archived into a static lib and linked freestanding;
|
|
||||||
# any hosted-stdlib calls (malloc/free/sin/cos/…) resolve to crtshim.c.
|
|
||||||
CPP_FLAGS="-m32 -O2 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -fno-threadsafe-statics -fno-stack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -DNDEBUG -DIMGUI_ENABLE_STB_TRUETYPE"
|
|
||||||
|
|
||||||
INCLUDE="-I$IMGUI_DIR -I$IMGUI_SRC"
|
|
||||||
|
|
||||||
echo "Compiling C runtime shim..."
|
|
||||||
gcc $C_FLAGS $INCLUDE \
|
|
||||||
-c $BRIDGE_SRC/crtshim.c \
|
|
||||||
-o lib/imgui_crtshim.o || { echo "Failed: crtshim.c"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling render bridge..."
|
|
||||||
# imgbridge is compiled as C++ so it sees cimgui.h function declarations
|
|
||||||
# (C++ mode is required; the .c extension is overridden with -x c++)
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-x c++ \
|
|
||||||
-DCIMGUI_DEFINE_ENUMS_AND_STRUCTS \
|
|
||||||
-c $BRIDGE_SRC/imgbridge.c \
|
|
||||||
-o lib/imgui_bridge.o || { echo "Failed: imgbridge.c"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling cimgui wrapper..."
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-c $IMGUI_DIR/cimgui.cpp \
|
|
||||||
-o lib/imgui_cimgui.o || { echo "Failed: cimgui.cpp"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling imgui core..."
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-c $IMGUI_SRC/imgui.cpp \
|
|
||||||
-o lib/imgui_core.o || { echo "Failed: imgui.cpp"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling imgui draw..."
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-c $IMGUI_SRC/imgui_draw.cpp \
|
|
||||||
-o lib/imgui_draw.o || { echo "Failed: imgui_draw.cpp"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling imgui tables..."
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-c $IMGUI_SRC/imgui_tables.cpp \
|
|
||||||
-o lib/imgui_tables.o || { echo "Failed: imgui_tables.cpp"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling imgui widgets..."
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-c $IMGUI_SRC/imgui_widgets.cpp \
|
|
||||||
-o lib/imgui_widgets.o || { echo "Failed: imgui_widgets.cpp"; exit 1; }
|
|
||||||
|
|
||||||
echo "Compiling imgui demo..."
|
|
||||||
g++ $CPP_FLAGS $INCLUDE \
|
|
||||||
-c $IMGUI_SRC/imgui_demo.cpp \
|
|
||||||
-o lib/imgui_demo.o || { echo "Failed: imgui_demo.cpp"; exit 1; }
|
|
||||||
|
|
||||||
echo "Archiving cimgui.a..."
|
|
||||||
# NOTE: imgui_bridge.o and imgui_crtshim.o are NOT in the archive because
|
|
||||||
# compile_link.sh already picks them up individually via find lib/ -name "*.o".
|
|
||||||
# Including them here would cause duplicate symbol errors.
|
|
||||||
ar rcs lib/cimgui.a \
|
|
||||||
lib/imgui_cimgui.o \
|
|
||||||
lib/imgui_core.o \
|
|
||||||
lib/imgui_draw.o \
|
|
||||||
lib/imgui_tables.o \
|
|
||||||
lib/imgui_widgets.o \
|
|
||||||
lib/imgui_demo.o || { echo "Failed: ar"; exit 1; }
|
|
||||||
|
|
||||||
echo "ImGui compiled successfully."
|
|
||||||
exit 0
|
|
||||||
+5
-2
@@ -14,6 +14,9 @@ done;
|
|||||||
objstring=lib/stub.o" "$objstring
|
objstring=lib/stub.o" "$objstring
|
||||||
echo "Object Files: "$objstring
|
echo "Object Files: "$objstring
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
|
# Find libgcc for i386 (needed by LVGL compiled with gcc)
|
||||||
LIBGCC=$(gcc -m32 -print-libgcc-file-name)
|
LIBGCC=$(gcc -m32 -print-libgcc-file-name)
|
||||||
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring \
|
echo "libgcc: ${LIBGCC}"
|
||||||
--start-group lib/cimgui.a $LIBGCC --end-group
|
|
||||||
|
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring --start-group lib/liblvgl.a ${LIBGCC} --end-group
|
||||||
+117
@@ -0,0 +1,117 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# compile_lvgl.sh — Download LVGL v9.2 source and compile into lib/liblvgl.a
|
||||||
|
# Clone & compile in /tmp (fast container-local fs).
|
||||||
|
# Copy source + objects to /lvgl (host mount) for debugging.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
LVGL_VERSION="v9.2.2"
|
||||||
|
LVGL_REPO="https://github.com/lvgl/lvgl.git"
|
||||||
|
LVGL_DIR="/tmp/lvgl"
|
||||||
|
OBJ_DIR="/tmp/lvgl_obj"
|
||||||
|
CONF_DIR="$(pwd)/lvglh"
|
||||||
|
OUT_DIR="$(pwd)/lib"
|
||||||
|
|
||||||
|
CC="gcc"
|
||||||
|
CFLAGS="-m32 -march=i686 -ffreestanding \
|
||||||
|
-fno-builtin -fno-stack-protector -fno-pic -fno-pie \
|
||||||
|
-O2 -Wall -Wno-unused-function -Wno-unused-variable \
|
||||||
|
-I${CONF_DIR} \
|
||||||
|
-I${LVGL_DIR} \
|
||||||
|
-I${LVGL_DIR}/.. \
|
||||||
|
-DLV_CONF_INCLUDE_SIMPLE"
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "======================="
|
||||||
|
echo " "
|
||||||
|
echo "Compiling LVGL..."
|
||||||
|
echo " "
|
||||||
|
|
||||||
|
# Clone LVGL into /tmp (container-local)
|
||||||
|
rm -rf "$LVGL_DIR"
|
||||||
|
echo "Downloading LVGL ${LVGL_VERSION}..."
|
||||||
|
git clone --depth 1 --branch "${LVGL_VERSION}" "${LVGL_REPO}" "${LVGL_DIR}" 2>&1
|
||||||
|
echo "Download complete."
|
||||||
|
|
||||||
|
# Gather all LVGL .c source files (core library only, no demos/examples)
|
||||||
|
SOURCES=$(find "${LVGL_DIR}/src" -name '*.c' -not -path '*/test/*')
|
||||||
|
TOTAL=$(echo "$SOURCES" | wc -l)
|
||||||
|
echo "Found ${TOTAL} LVGL source files."
|
||||||
|
|
||||||
|
# Compile each .c file to .o (container-local)
|
||||||
|
rm -rf "$OBJ_DIR"
|
||||||
|
mkdir -p "$OBJ_DIR"
|
||||||
|
|
||||||
|
COUNT=0
|
||||||
|
ERRORS=0
|
||||||
|
for src in $SOURCES; do
|
||||||
|
COUNT=$((COUNT + 1))
|
||||||
|
rel="${src#${LVGL_DIR}/src/}"
|
||||||
|
obj_path="${OBJ_DIR}/${rel%.c}.o"
|
||||||
|
mkdir -p "$(dirname "$obj_path")"
|
||||||
|
|
||||||
|
if ! $CC $CFLAGS -c "$src" -o "$obj_path" 2>&1; then
|
||||||
|
echo "FAILED: $rel"
|
||||||
|
ERRORS=$((ERRORS + 1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $((COUNT % 50)) -eq 0 ]; then
|
||||||
|
echo " Compiled ${COUNT}/${TOTAL}..."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Compiled ${COUNT} files (${ERRORS} errors)."
|
||||||
|
|
||||||
|
if [ "$ERRORS" -ne 0 ]; then
|
||||||
|
echo "LVGL compilation FAILED with ${ERRORS} errors."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Archive into static library
|
||||||
|
OBJECTS=$(find "$OBJ_DIR" -name '*.o')
|
||||||
|
ar rcs "${OUT_DIR}/liblvgl.a" $OBJECTS
|
||||||
|
echo "Created ${OUT_DIR}/liblvgl.a"
|
||||||
|
|
||||||
|
# Compile custom LVGL extension files from lvglh/
|
||||||
|
LVGLH_SOURCES=$(find "${CONF_DIR}" -name '*.c' 2>/dev/null || true)
|
||||||
|
if [ -n "$LVGLH_SOURCES" ]; then
|
||||||
|
echo " "
|
||||||
|
echo "Compiling custom LVGL files from lvglh/..."
|
||||||
|
LVGLH_OBJ_DIR="/tmp/lvglh_obj"
|
||||||
|
rm -rf "$LVGLH_OBJ_DIR"
|
||||||
|
mkdir -p "$LVGLH_OBJ_DIR"
|
||||||
|
HCOUNT=0
|
||||||
|
HERRORS=0
|
||||||
|
for src in $LVGLH_SOURCES; do
|
||||||
|
HCOUNT=$((HCOUNT + 1))
|
||||||
|
rel="${src#${CONF_DIR}/}"
|
||||||
|
obj_path="${LVGLH_OBJ_DIR}/${rel%.c}.o"
|
||||||
|
mkdir -p "$(dirname "$obj_path")"
|
||||||
|
echo " [lvglh] $rel"
|
||||||
|
if ! $CC $CFLAGS -c "$src" -o "$obj_path" 2>&1; then
|
||||||
|
echo " FAILED: $rel"
|
||||||
|
HERRORS=$((HERRORS + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "Compiled ${HCOUNT} custom files (${HERRORS} errors)."
|
||||||
|
if [ "$HERRORS" -ne 0 ]; then
|
||||||
|
echo "Custom LVGL compilation FAILED."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Append custom objects into the existing archive
|
||||||
|
HOBJECTS=$(find "$LVGLH_OBJ_DIR" -name '*.o')
|
||||||
|
ar rcs "${OUT_DIR}/liblvgl.a" $HOBJECTS
|
||||||
|
echo "Updated ${OUT_DIR}/liblvgl.a with custom objects."
|
||||||
|
else
|
||||||
|
echo "No custom LVGL files in lvglh/."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy source + objects to /lvgl host mount for debugging
|
||||||
|
echo "Copying LVGL source and objects to host mount..."
|
||||||
|
rm -rf /lvgl/* /lvgl/.[!.]* /lvgl/..?* 2>/dev/null || true
|
||||||
|
cp -a "$LVGL_DIR/src" /lvgl/src
|
||||||
|
cp -a "$OBJ_DIR" /lvgl/obj
|
||||||
|
echo "Done."
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "LVGL compilation complete."
|
||||||
|
echo " "
|
||||||
+1
-1
@@ -4,4 +4,4 @@ echo "======================="
|
|||||||
echo " "
|
echo " "
|
||||||
echo "Compiling FPC Sources..."
|
echo "Compiling FPC Sources..."
|
||||||
echo " "
|
echo " "
|
||||||
fpc -Aelf -gw -g -gl -n -vlewn -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* -Fusrc/driver/video/* -Fusrc/driver/video/imgui/* src/kernel.pas
|
fpc -Aelf -gw -g -gl -n -v0ew -O3 -OpPENTIUM3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* src/kernel.pas
|
||||||
@@ -3,3 +3,4 @@ services:
|
|||||||
build: .
|
build: .
|
||||||
volumes:
|
volumes:
|
||||||
- .:/code
|
- .:/code
|
||||||
|
- ./lvgl:/lvgl
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
4023:CIMGUI_API float igGetWindowDpiScale(void);
|
|
||||||
4081:CIMGUI_API const ImVec4_c* igGetStyleColorVec4(ImGuiCol idx);
|
|
||||||
4082:CIMGUI_API ImVec2_c igGetCursorScreenPos(void);
|
|
||||||
4084:CIMGUI_API ImVec2_c igGetContentRegionAvail(void);
|
|
||||||
4085:CIMGUI_API ImVec2_c igGetCursorPos(void);
|
|
||||||
4086:CIMGUI_API float igGetCursorPosX(void);
|
|
||||||
4087:CIMGUI_API float igGetCursorPosY(void);
|
|
||||||
4091:CIMGUI_API ImVec2_c igGetCursorStartPos(void);
|
|
||||||
4350:CIMGUI_API void igBeginDisabled(bool disabled);
|
|
||||||
4372:CIMGUI_API ImVec2_c igGetItemRectMin(void);
|
|
||||||
4373:CIMGUI_API ImVec2_c igGetItemRectMax(void);
|
|
||||||
4374:CIMGUI_API ImVec2_c igGetItemRectSize(void);
|
|
||||||
4377:CIMGUI_API ImDrawList* igGetBackgroundDrawList(ImGuiViewport* viewport);
|
|
||||||
4378:CIMGUI_API ImDrawList* igGetForegroundDrawList_ViewportPtr(ImGuiViewport* viewport);
|
|
||||||
4387:CIMGUI_API ImVec2_c igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width);
|
|
||||||
4388:CIMGUI_API ImVec4_c igColorConvertU32ToFloat4(ImU32 in);
|
|
||||||
4405:CIMGUI_API bool igIsMouseDoubleClicked_Nil(ImGuiMouseButton button);
|
|
||||||
5092:CIMGUI_API ImDrawList* igGetForegroundDrawList_WindowPtr(ImGuiWindow* window);
|
|
||||||
5161:CIMGUI_API void igBeginDisabledOverrideReenable(void);
|
|
||||||
5244:CIMGUI_API bool igIsMouseDoubleClicked_ID(ImGuiMouseButton button,ImGuiID owner_id);
|
|
||||||
+374
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -838,18 +838,6 @@ const
|
|||||||
MAX_WINDOWS = 255; //< Maximum number of Windows open.
|
MAX_WINDOWS = 255; //< Maximum number of Windows open.
|
||||||
DefaultWND = 0; //< The Window assigned for output when no Window is specified. (Default).
|
DefaultWND = 0; //< The Window assigned for output when no Window is specified. (Default).
|
||||||
|
|
||||||
type
|
|
||||||
TWNDCaptureCallback = procedure(s: pchar);
|
|
||||||
|
|
||||||
var
|
|
||||||
WND_CaptureActive : boolean = false;
|
|
||||||
WND_CaptureHWND : uint32 = 0;
|
|
||||||
WND_CaptureBuf : array[0..511] of char;
|
|
||||||
WND_CaptureBufIdx : uint32 = 0;
|
|
||||||
WND_CaptureCallback : TWNDCaptureCallback = nil;
|
|
||||||
|
|
||||||
procedure flushCapture;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
@@ -2271,7 +2259,6 @@ var
|
|||||||
x,y: Byte;
|
x,y: Byte;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if WND_CaptureActive and (WND = WND_CaptureHWND) then exit;
|
|
||||||
if WindowManager.Windows[WND] <> nil then begin
|
if WindowManager.Windows[WND] <> nil then begin
|
||||||
for y:=0 to Console_Properties.MAX_CELL_Y do begin
|
for y:=0 to Console_Properties.MAX_CELL_Y do begin
|
||||||
for x:=0 to Console_Properties.MAX_CELL_X do begin
|
for x:=0 to Console_Properties.MAX_CELL_X do begin
|
||||||
@@ -2432,26 +2419,8 @@ begin
|
|||||||
console.writeintlnexWND(i, Console_Properties.Default_Attribute, WND);
|
console.writeintlnexWND(i, Console_Properties.Default_Attribute, WND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure flushCapture;
|
|
||||||
begin
|
|
||||||
if WND_CaptureActive and (WND_CaptureCallback <> nil) and (WND_CaptureBufIdx > 0) then begin
|
|
||||||
WND_CaptureBuf[WND_CaptureBufIdx] := #0;
|
|
||||||
WND_CaptureCallback(@WND_CaptureBuf[0]);
|
|
||||||
WND_CaptureBufIdx := 0;
|
|
||||||
WND_CaptureBuf[0] := #0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure writecharexWND(character: char; attributes: uint32; WND : uint32);
|
procedure writecharexWND(character: char; attributes: uint32; WND : uint32);
|
||||||
begin
|
begin
|
||||||
if WND_CaptureActive and (WND = WND_CaptureHWND) and (WND_CaptureCallback <> nil) then begin
|
|
||||||
if WND_CaptureBufIdx < 511 then begin
|
|
||||||
WND_CaptureBuf[WND_CaptureBufIdx] := character;
|
|
||||||
inc(WND_CaptureBufIdx);
|
|
||||||
WND_CaptureBuf[WND_CaptureBufIdx] := #0;
|
|
||||||
end;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if WindowManager.Windows[WND] <> nil then begin
|
if WindowManager.Windows[WND] <> nil then begin
|
||||||
WindowManager.Windows[WND]^.Buffer[WindowManager.Windows[WND]^.Cursor.Y][WindowManager.Windows[WND]^.Cursor.X].Character:= character;
|
WindowManager.Windows[WND]^.Buffer[WindowManager.Windows[WND]^.Cursor.Y][WindowManager.Windows[WND]^.Cursor.X].Character:= character;
|
||||||
WindowManager.Windows[WND]^.Buffer[WindowManager.Windows[WND]^.Cursor.Y][WindowManager.Windows[WND]^.Cursor.X].Attributes:= attributes;
|
WindowManager.Windows[WND]^.Buffer[WindowManager.Windows[WND]^.Cursor.Y][WindowManager.Windows[WND]^.Cursor.X].Attributes:= attributes;
|
||||||
@@ -2634,13 +2603,6 @@ end;
|
|||||||
|
|
||||||
procedure backspaceWND(WND : uint32);
|
procedure backspaceWND(WND : uint32);
|
||||||
begin
|
begin
|
||||||
if WND_CaptureActive and (WND = WND_CaptureHWND) then begin
|
|
||||||
if WND_CaptureBufIdx > 0 then begin
|
|
||||||
dec(WND_CaptureBufIdx);
|
|
||||||
WND_CaptureBuf[WND_CaptureBufIdx] := #0;
|
|
||||||
end;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if WindowManager.Windows[WND] <> nil then begin
|
if WindowManager.Windows[WND] <> nil then begin
|
||||||
Dec(WindowManager.Windows[WND]^.Cursor.X);
|
Dec(WindowManager.Windows[WND]^.Cursor.X);
|
||||||
writecharWND(' ', WND);
|
writecharWND(' ', WND);
|
||||||
@@ -2697,13 +2659,6 @@ end;
|
|||||||
|
|
||||||
procedure _safeincrement_y_WND(WND : uint32);
|
procedure _safeincrement_y_WND(WND : uint32);
|
||||||
begin
|
begin
|
||||||
if WND_CaptureActive and (WND = WND_CaptureHWND) and (WND_CaptureCallback <> nil) then begin
|
|
||||||
WND_CaptureBuf[WND_CaptureBufIdx] := #0;
|
|
||||||
WND_CaptureCallback(@WND_CaptureBuf[0]);
|
|
||||||
WND_CaptureBufIdx := 0;
|
|
||||||
WND_CaptureBuf[0] := #0;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if WindowManager.Windows[WND] <> nil then begin
|
if WindowManager.Windows[WND] <> nil then begin
|
||||||
WindowManager.Windows[WND]^.Cursor.Y:= WindowManager.Windows[WND]^.Cursor.Y+1;
|
WindowManager.Windows[WND]^.Cursor.Y:= WindowManager.Windows[WND]^.Cursor.Y+1;
|
||||||
if WindowManager.Windows[WND]^.Cursor.Y > WindowManager.Windows[WND]^.WND_H-1 then begin
|
if WindowManager.Windows[WND]^.Cursor.Y > WindowManager.Windows[WND]^.WND_H-1 then begin
|
||||||
|
|||||||
+8
-1
@@ -293,7 +293,14 @@ end;
|
|||||||
|
|
||||||
procedure enableAVX();
|
procedure enableAVX();
|
||||||
begin
|
begin
|
||||||
if CPUID.Capabilities1^.AVX then begin
|
if CPUID.Capabilities1^.AVX and CPUID.Capabilities1^.XSAVE then begin
|
||||||
|
{ Enable OSXSAVE in CR4 (bit 18) - required before XGETBV/XSETBV }
|
||||||
|
asm
|
||||||
|
MOV EAX, CR4
|
||||||
|
OR EAX, (1 shl 18)
|
||||||
|
MOV CR4, EAX
|
||||||
|
end;
|
||||||
|
{ Set XCR0 bits: x87 (0) + SSE (1) + AVX (2) }
|
||||||
asm
|
asm
|
||||||
PUSH EAX
|
PUSH EAX
|
||||||
PUSH ECX
|
PUSH ECX
|
||||||
|
|||||||
+126
-50
File diff suppressed because it is too large.
Load diff
@@ -58,16 +58,19 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function sinb(port : uint16) : uint8;
|
function sinb(port : uint16) : uint8;
|
||||||
|
var
|
||||||
|
tmp : uint8;
|
||||||
begin
|
begin
|
||||||
asm
|
asm
|
||||||
PUSH EAX
|
PUSH EAX
|
||||||
PUSH EDX
|
PUSH EDX
|
||||||
MOV DX, port
|
MOV DX, port
|
||||||
IN AL, DX
|
IN AL, DX
|
||||||
MOV sinb, AL
|
MOV tmp, AL
|
||||||
POP EDX
|
POP EDX
|
||||||
POP EAX
|
POP EAX
|
||||||
end;
|
end;
|
||||||
|
sinb := tmp;
|
||||||
io_wait;
|
io_wait;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
@@ -491,22 +491,26 @@ begin
|
|||||||
|
|
||||||
{ Create a new header to the use in our DHCP REQUEST packet }
|
{ Create a new header to the use in our DHCP REQUEST packet }
|
||||||
SendHeader:= createHeader();
|
SendHeader:= createHeader();
|
||||||
CopyIPv4(puint8(@Header^.Your_IP[0]), puint8(@SendHeader^.Client_IP[0]));
|
CopyIPv4(@getIPv4Config^.Address[0], puint8(@SendHeader^.Client_IP[0]));
|
||||||
CopyIPv4(puint8(@Header^.Server_IP[0]), puint8(@SendHeader^.Server_IP[0]));
|
CopyIPv4(puint8(@Header^.Server_IP[0]), puint8(@SendHeader^.Server_IP[0]));
|
||||||
processHeader(SendHeader);
|
processHeader(SendHeader);
|
||||||
|
|
||||||
{ Setup Options }
|
{ Setup Options }
|
||||||
SendOptions:= newOptions();
|
SendOptions:= newOptions();
|
||||||
|
|
||||||
{ Create a message type option and assign it the value REQUEST }
|
{ Create a message type option and assign it the value REQUEST }
|
||||||
SendMsgType:= ord(TDHCPMessageType.REQUEST);
|
SendMsgType:= ord(TDHCPMessageType.REQUEST);
|
||||||
NewOption(SendOptions, TDHCPOpCode.DHCP_MESSAGE_TYPE, void(@SendMsgType), 1, false);
|
NewOption(SendOptions, TDHCPOpCode.DHCP_MESSAGE_TYPE, void(@SendMsgType), 1, false);
|
||||||
|
|
||||||
{ Create a Requested IP option and assign it the value from the OFFER packet header }
|
{ Create a Requested IP option and assign it the value from the OFFER packet header }
|
||||||
NewOption(SendOptions, TDHCPOpCode.REQUESTED_IP_ADDRESS, void(@SendHeader^.Client_IP[0]), 4, false);
|
NewOption(SendOptions, TDHCPOpCode.REQUESTED_IP_ADDRESS, void(@Header^.Your_IP[0]), 4, false);
|
||||||
|
|
||||||
{ Create a Server Identifier Option and assign it the value from the OFFER packet options }
|
{ Create a Server Identifier Option and assign it the value from the OFFER packet options }
|
||||||
Option:= getOptionByOpcode(Options, TDHCPOpCode.SERVER_IDENTIFIER);
|
Option:= getOptionByOpcode(Options, TDHCPOpCode.SERVER_IDENTIFIER);
|
||||||
if Option <> nil then begin
|
if Option <> nil then begin
|
||||||
NewOption(SendOptions, TDHCPOpCode.SERVER_IDENTIFIER, void(@Option^.Value[0]), 4, false);
|
NewOption(SendOptions, TDHCPOpCode.SERVER_IDENTIFIER, void(@Option^.Value[0]), 4, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Create a Parameter Request List, Request the following: Netmask, Gateway, DNS Name & DNS Server }
|
{ Create a Parameter Request List, Request the following: Netmask, Gateway, DNS Name & DNS Server }
|
||||||
RequestParams[0]:= Ord(TDHCPOpCode.SUBNET_MASK);
|
RequestParams[0]:= Ord(TDHCPOpCode.SUBNET_MASK);
|
||||||
RequestParams[1]:= Ord(TDHCPOpCode.ROUTER);
|
RequestParams[1]:= Ord(TDHCPOpCode.ROUTER);
|
||||||
@@ -522,9 +526,13 @@ begin
|
|||||||
MAC:= getMAC();
|
MAC:= getMAC();
|
||||||
packetCtx:= PPacketContext(Kalloc(sizeof(TPacketContext)));
|
packetCtx:= PPacketContext(Kalloc(sizeof(TPacketContext)));
|
||||||
packetCtx^.TTL:= 128;
|
packetCtx^.TTL:= 128;
|
||||||
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
|
||||||
|
{ Copy over MAC - src: broadcast - dst: DHCP Server }
|
||||||
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
|
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
|
||||||
copyIPv4(@NULL_IP[0], @packetCtx^.IP.Source[0]);
|
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
||||||
|
|
||||||
|
{ Copy over IP - src: NULL - dst: Broadcast }
|
||||||
|
CopyIPv4(@getIPv4Config^.Address[0], @packetCtx^.IP.Source[0]);
|
||||||
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
|
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
|
||||||
|
|
||||||
{ Setup UDPContext (UDP) & copy in the correct details }
|
{ Setup UDPContext (UDP) & copy in the correct details }
|
||||||
@@ -570,7 +578,7 @@ begin
|
|||||||
|
|
||||||
{ Check the frame is for us and then process }
|
{ Check the frame is for us and then process }
|
||||||
MAC:= getMAC;
|
MAC:= getMAC;
|
||||||
if MACEqual(@context^.PacketContext^.MAC.Destination[0], MAC) then begin
|
if MACEqual(@context^.PacketContext^.MAC.Destination[0], MAC) or MACEqual(@context^.PacketContext^.MAC.Destination[0], BROADCAST_MAC) then begin
|
||||||
Outputln('DHCP','Frame is addressed to us.');
|
Outputln('DHCP','Frame is addressed to us.');
|
||||||
{ Check the message type is client specific }
|
{ Check the message type is client specific }
|
||||||
If Header^.Message_Type = $02 then begin
|
If Header^.Message_Type = $02 then begin
|
||||||
@@ -655,7 +663,7 @@ begin
|
|||||||
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
||||||
MAC:= getMAC;
|
MAC:= getMAC;
|
||||||
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
|
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
|
||||||
copyIPv4(@NULL_IP[0], @packetCtx^.IP.Source[0]);
|
CopyIPv4(@getIPv4Config^.Address[0], @packetCtx^.IP.Source[0]);
|
||||||
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
|
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
|
||||||
|
|
||||||
{ Setup UDPContext (UDP) }
|
{ Setup UDPContext (UDP) }
|
||||||
|
|||||||
@@ -92,7 +92,6 @@ var
|
|||||||
Root : PVFSObject;
|
Root : PVFSObject;
|
||||||
CurrentDirectory : pchar = nil;
|
CurrentDirectory : pchar = nil;
|
||||||
PushPopDirectory : PLinkedListBase;
|
PushPopDirectory : PLinkedListBase;
|
||||||
MountDepth : uint32 = 0;
|
|
||||||
|
|
||||||
procedure init();
|
procedure init();
|
||||||
Function OpenFile(Filename : pchar; OpenMode : TOpenMode; WriteMode : TWriteMode; Lock : Boolean; Error : PError) : TFileHandle;
|
Function OpenFile(Filename : pchar; OpenMode : TOpenMode; WriteMode : TWriteMode; Lock : Boolean; Error : PError) : TFileHandle;
|
||||||
@@ -105,7 +104,6 @@ function GetDirectories(Handle : uint32; Path : pchar) : PHashMap;
|
|||||||
function PathValid(Path : pchar) : TIsPathValid;
|
function PathValid(Path : pchar) : TIsPathValid;
|
||||||
function changeDirectory(Path : pchar) : TIsPathValid;
|
function changeDirectory(Path : pchar) : TIsPathValid;
|
||||||
function getWorkingDirectory : pchar;
|
function getWorkingDirectory : pchar;
|
||||||
function GetDirectoryListing(Path : pchar) : PHashMap;
|
|
||||||
|
|
||||||
//VFS Functions
|
//VFS Functions
|
||||||
function newVirtualDirectory(Path : pchar) : TError;
|
function newVirtualDirectory(Path : pchar) : TError;
|
||||||
@@ -290,7 +288,6 @@ begin
|
|||||||
NewObj:= PVFSObject(hashmap.get(ht, item));
|
NewObj:= PVFSObject(hashmap.get(ht, item));
|
||||||
if NewObj = nil then begin
|
if NewObj = nil then begin
|
||||||
GetObjectFromPath:= nil;
|
GetObjectFromPath:= nil;
|
||||||
STRLL_Free(SplitPath);
|
|
||||||
tracer.push_trace('vfs.GetObjectFromPath.shortexit_1');
|
tracer.push_trace('vfs.GetObjectFromPath.shortexit_1');
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@@ -307,7 +304,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
GetObjectFromPath:= Obj;
|
GetObjectFromPath:= Obj;
|
||||||
STRLL_Free(SplitPath);
|
|
||||||
tracer.push_trace('vfs.GetObjectFromPath.exit');
|
tracer.push_trace('vfs.GetObjectFromPath.exit');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -352,17 +348,7 @@ begin
|
|||||||
GetDirectoryListing:= nil;
|
GetDirectoryListing:= nil;
|
||||||
end;
|
end;
|
||||||
otMOUNT:begin
|
otMOUNT:begin
|
||||||
{ Safety: cap mount-follow depth to prevent infinite recursion
|
GetDirectoryListing:= GetDirectoryListing(PVFSMount(Obj^.Reference)^.Path);
|
||||||
from circular mounts. Use a simple static counter. }
|
|
||||||
if MountDepth < 16 then begin
|
|
||||||
Inc(MountDepth);
|
|
||||||
GetDirectoryListing:= GetDirectoryListing(PVFSMount(Obj^.Reference)^.Path);
|
|
||||||
Dec(MountDepth);
|
|
||||||
end else
|
|
||||||
GetDirectoryListing:= nil;
|
|
||||||
end;
|
|
||||||
else begin
|
|
||||||
GetDirectoryListing:= nil;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
@@ -434,7 +420,7 @@ begin
|
|||||||
|
|
||||||
NewObj^.Reference:= void(NewDev);
|
NewObj^.Reference:= void(NewDev);
|
||||||
|
|
||||||
hashmap.add(ht, stringCopy(DeviceName), void(NewObj));
|
hashmap.add(ht, stringCopy(DeviceName), void(NewDev));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Filesystem Functions }
|
{ Filesystem Functions }
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
Loaded 20 of 43 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user