XOS: Build your own operating system
xosnitc.github.io
xosnitc.github.io
What an... odd architecture. Fun for experimentation, I'm sure, but I think it's too different from contemporary CPUs to give a good taste of what the "real" thing is like.
In Nock, instead of beta reduction privileging certain types (e.g. symbols, closures) as having special meanings at the head of a cons cell, Nock just defines a mapping between integers and functions. Effectively, Nock is a Lisp-2: the f in (f x) and the f in (g f) have different meanings.
In fact, in Nock, both the meaning of the f in (g f), and the meaning of the f in (g (f x)), are entirely determined by g—you could think of this as every Nock function being a hygenic macro, though it's more than that. This seems dangerous, but Nock is supposed to be a "VM target language" only: the source languages that compile to it are left to define their own "platform semantics" by restricting and making guarantees on how arguments to functions in those languages will be evaluated (eagerly/lazily, early/late-bound, pre-beta-reduced like a function or post-beta-reduced like a macro, etc.) They're also left to define dynamic/lexical scoping rules, by leaving the g the responsibility of resolving the f—and the x, if it wants—in (g (f x)).
See the following course: https://courses.engr.illinois.edu/ece391/
Isn't building what you consider fun what hacking is all about? I think it's healthy to completely ignore "usefulness" at times and doodle along :)
XOS is used at the National Institute of Technology Calicut, India to teach Operating System principles [0]. The OS Lab essentially consists of students designing and implementing a kernel for XOS, starting from scratch:
"Cross compiler, debugger, file system interface and other supporting software tools are provided. The student will implement the scheduler, memory management, process management, exception handling and file system management functions of the OS."
https://code.google.com/p/high-concurrency-btree/
"Lehman and Yao's high concurrency B-Tree in C language with Jaluta's balanced B-link tree operations including a locking enhancement for increased concurrency"
What's really unique is the option to use Notch's DCPU-16 or a MIPS-like TR3200 as the main processor. The whole system has a good "real computer" feeling to it, which I think is especially important for educational use.
Yeah, it get details of both. Also, we did take a look to Amiga's autoconfig and Z80 and 8086 interrupt handling schemes.
The TR3200 itself is inspired on MIPS and ARC (a simplified SPARC cpu for using on computer architecture courses )
One could go the ARM or MIPS route and these machines actually exist.
BTW what is this Trillek thing?? I was browsing a bit and I can't quite figure out what's the point.
Trillek is open source game inspired on Notch's 0x10c . So the idea of the game is have a open world space game were you have a computer were you can do anything with it.
As for Trillek I see that now. However if you looked at the project page alone without these references, it's very off-putting by the lack of a concrete plan and the abuse of flamboyant language.
https://github.com/ayourtch/ayos
a little experiment of my own to see what happens if I put Lua on bare metal (currently KVM-only) in x86_64 mode.
Lots of fun to toy with, though it does not do much yet.
The stock Lua 5.1 has the least number of dependencies, so I picked it - the idea is to practice and then to eventually have LuaJIT run on bare metal.
I found this: https://code.google.com/p/lualisp/ - could be fun to get it atop. I'll see next time when I am in the mood for hacking on it.
Back when I started (sometime in May), rump did not run on "bare metal" yet, so I decided to reinvent a bicycle of my own.
Also, looks like it's running in 32-bit mode ?
http://en.wikipedia.org/wiki/Not_Another_Completely_Heuristi...