From 1d14a89fb7c6a9ae331c2ccbc5bbe6f36ae920ed Mon Sep 17 00:00:00 2001 From: modeco80 Date: Sun, 16 Jul 2023 06:05:19 -0400 Subject: [PATCH] begin actually setting up the repository as a GMod addon.. --- data/.gitkeep | 0 ideas.md | 26 ++++++++++++------- lua/autorun/lcpu_load.lua | 4 +++ .../CMakeLists.txt | 0 .../{gmsv_lcpu => gmsv_lcpu_native}/NOTES.md | 0 .../{gmsv_lcpu => gmsv_lcpu_native}/abi.ver | 0 .../lucore/include/lucore/OptionalRef.hpp | 4 +-- native/projects/lucore/src/Assert.cpp | 4 +-- 8 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 data/.gitkeep create mode 100644 lua/autorun/lcpu_load.lua rename native/projects/{gmsv_lcpu => gmsv_lcpu_native}/CMakeLists.txt (100%) rename native/projects/{gmsv_lcpu => gmsv_lcpu_native}/NOTES.md (100%) rename native/projects/{gmsv_lcpu => gmsv_lcpu_native}/abi.ver (100%) diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ideas.md b/ideas.md index e18ebb2..ac876fe 100644 --- a/ideas.md +++ b/ideas.md @@ -1,17 +1,23 @@ -- cpu cores +- cpu entities - controllable paramaters (ram size, ...) - - admin controlled per-user max RAM size (default 16mb) - - possibly override for "respectful" users and admins? - - admin controlled per-user max lcpu chip count (default 4) - - admins can override? - - admin controled global (affects all placed lcpus) scheduler timeslice (? cpus wouldn't block source anyways, the only way they could is if they start posting too many cpu thread -> lua thread callbacks ?) + - admin controlled per-user max RAM size (default 32mb) + - possibly override for "respectful" users and admins (admins probably wouldn't even count)? + - admin controlled per-user max lcpu chip count (default 8) + - admins can override/do not count? + + - admin controled global (affects all placed lcpus) scheduler timeslice. + - couldn't be faster than tickrate though or we might block source (and.. well, i dont think i have to explain) + - upload a raw binary (or elf? we could probably just imitate a "boot loader" and throw it into memory and move the given register to it?) to execute - - or write code as a "lcpu project." in theory exporting out to a Makefile/etc should be possible + - or write assembly/maybe c code for tiny projects + - text editor for lcpu projects + + - some example projects? - - supported architechures (iniitally. more could be added and a "common" abstraction framework for devices could be agreed on) - - riscv rv32-ima cpu core - - llvm assembler/maybe clang integration? (this might make the addon unwieldly though) + - riscv rv32-ima cpu core + - llvm assembler used in this case + - maybe clang integration? (this might make the addon unwieldly though) - wiremod interopability (to obsolete ZCPU at least for my purposes) - gpio (which uses normal wire stuff) diff --git a/lua/autorun/lcpu_load.lua b/lua/autorun/lcpu_load.lua new file mode 100644 index 0000000..8b89532 --- /dev/null +++ b/lua/autorun/lcpu_load.lua @@ -0,0 +1,4 @@ +-- skeleton load file to get gmod to recognize this as an addon +-- this will contain files later on in life. + +print("hello world?") diff --git a/native/projects/gmsv_lcpu/CMakeLists.txt b/native/projects/gmsv_lcpu_native/CMakeLists.txt similarity index 100% rename from native/projects/gmsv_lcpu/CMakeLists.txt rename to native/projects/gmsv_lcpu_native/CMakeLists.txt diff --git a/native/projects/gmsv_lcpu/NOTES.md b/native/projects/gmsv_lcpu_native/NOTES.md similarity index 100% rename from native/projects/gmsv_lcpu/NOTES.md rename to native/projects/gmsv_lcpu_native/NOTES.md diff --git a/native/projects/gmsv_lcpu/abi.ver b/native/projects/gmsv_lcpu_native/abi.ver similarity index 100% rename from native/projects/gmsv_lcpu/abi.ver rename to native/projects/gmsv_lcpu_native/abi.ver diff --git a/native/projects/lucore/include/lucore/OptionalRef.hpp b/native/projects/lucore/include/lucore/OptionalRef.hpp index a1ae9a7..82ad1d7 100644 --- a/native/projects/lucore/include/lucore/OptionalRef.hpp +++ b/native/projects/lucore/include/lucore/OptionalRef.hpp @@ -68,6 +68,6 @@ namespace lucore::detail { } // namespace lucore::detail namespace lucore { - using detail::NullRef; - using detail::OptionalRef; + using detail::NullRef; // NOLINT ..yes, yes they are used. why do you think they aren't. + using detail::OptionalRef; // NOLINT ... ditto!!! } // namespace lucore diff --git a/native/projects/lucore/src/Assert.cpp b/native/projects/lucore/src/Assert.cpp index 46f423e..1a56e95 100644 --- a/native/projects/lucore/src/Assert.cpp +++ b/native/projects/lucore/src/Assert.cpp @@ -6,8 +6,8 @@ namespace lucore { [[noreturn]] void ExitMsg(const char* fileName, int fileLine, const char* message) { - // TODO: move this to logger functionality of lucore (gmsv_lcpu will end up containing a - // Sink impl..) + // TODO: move this to logger functionality of lucore (the native module will end up + // containing a Sink implementation that funnels to either gmod or tier libs..) std::puts(message); std::quick_exit(0xAF); }