https://github.com/1fishe2fishe/EXODUS Skip to content Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} 1fishe2fishe / EXODUS Public * Notifications * Fork 3 * Star 89 * Run TempleOS in user space License Zlib license 89 stars 3 forks Branches Tags Activity Star Notifications * Code * Issues 1 * Pull requests 0 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights 1fishe2fishe/EXODUS This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master BranchesTags Go to file Code Folders and files Name Name Last commit Last commit message date Latest commit History 92 Commits T T cmake cmake img img src src vendor vendor .clang-format .clang-format .gitattributes .gitattributes .gitignore .gitignore BuildHCRT.HC BuildHCRT.HC CMakeLists.txt CMakeLists.txt CONTRIBUTING.md CONTRIBUTING.md HCRT_BOOTSTRAP.BIN HCRT_BOOTSTRAP.BIN LICENSE LICENSE README.MD README.MD View all files Repository files navigation * README * Zlib license EXODUS: Executable Divine Operating System in Userspace EXODUS EXODUS is a port of the TempleOS kernel to user space for Linux, Windows and FreeBSD. EXODUS makes HolyC a user-space general programming language that isn't just an exclusivity of virtual machines. It contains a mostly full-featured GUI from stock TempleOS, and a CLI mode which has found uses for running the networked servers automatically and building EXODUS' kernel itself. Building EXODUS Linux/FreeBSD Install the packages for CMake and the development headers for SDL2. Navigate to the directory and run these commands: mkdir build cd build cmake .. make -j$(nproc); cd .. You'll see the exodus binary. NOTE: WARNs during the build process aren't a sign of failure. Windows Windows users tend to be less technically sophisticated, so here is a more detailed instruction: 1. Install msys2 2. Run "MSYS2 MINGW64" (NOTE: MUST BE MINGW64, NO SUPPORT FOR OTHER ENVIRONMENTS) 3. Run pacman -Sy mingw-w64-x86_64-{gcc,SDL2,cmake} 4. Run the following after navigating to the directory(Ignore any WARNs): mkdir build cd build cmake .. ninja cd .. 5. You will see the exodus binary in the directory Running EXODUS Run EXODUS with ./exodus. Consult ./exodus -h for more command-line options such as CLI mode. Features * Host filesystem integration (T:/ is the root drive, and Z:/ is where EXODUS was launched) * Documentation in T:/Server (run #include "run"; after Cd ("Server");, on localhost:8080) * Mostly orthodox TempleOS GUI * CLI mode * Community software in T:/Community, such as Satania-buddy and games like BlazeItFgt2 * Networking (Take a look at T:/Community/{gihon,HolyIRC} and T:/ Server's code) There have been some disputes on whether TempleOS can have networking or not. To borrow the man's words, God did not ban networking. Terry didn't implement networking in stock TempleOS because of the line number restriction. "God did not ban networking" (archived) Terry has also documented that the ideal TempleOS PC needs networking through a simple serial interface. Networking with serial Changes from stock TempleOS * The Windows key functionality has been replaced with the Alt key * Context switching is slower than a VM or native hardware because it runs in Ring 3, but it does not degrade general performance * Ring-0 opcodes (HLT, etc) and routines (InU8, etc) are not available (you can assemble the opcodes but they'll raise a fault) * Fs and Gs are pointers to CTask/CCPU instead of the whole structures at gs:0x28 and gs:0x50 respectively (blame microsoft) A bit of trivia on Fs and Gs, gs:0 is not touched by 64 bit Windows but it's written to (not sure about read) on Wine, which doesn't guarantee consistency of gs:0. TEBs are allocated 0x2000 apart and sizeof(TEB) is 0x1838 so I could probably use 0x1900 or something but that seemed too hacky. Eventually I had to resort storing Fs at gs:0x28 and Gs at gs:0x50 (NtCurrentTeb()->ActiveRpcHandle (it isn't used anywhere)). Contributing Refer to this document. Very quick HolyC reference /* CTRL+SHIFT+F * after typing in a function name will show its src */ DirMk("folder"); Dir; Dir("fold*");//supports wildcards Cd("folder"); Man("Ed"); Ed("file.HC.Z"); Unzip("file.HC.Z"); Zip("file.HC"); Find("str",,"-i");//"-i" is for case-sensitivity (grep -rn . -e str) FF("file.*");//find .|grep file RedSeaISO("Something.ISO.C","Community");//archive folder into an ISO MountFile("Something.ISO.C");//defaults to M Cd("M:/"); *0=0;//Raise the debugger DbgHelp;//help on how to debug Shutdown; Credits * argtable3 * qprocessordetection.h * dyad * map * vec * isocline * templeos-loader People: * nrootconauto for working on the Wiki About Run TempleOS in user space Topics c assembly x86-64 templeos holyc Resources Readme License Zlib license Activity Stars 89 stars Watchers 4 watching Forks 3 forks Report repository Releases No releases published Packages 0 No packages published Languages * HolyC 96.6% * C 3.1% * Other 0.3% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.