The GIF of this shows
C:\>dsl
Starting DOS subsystem for Linux, please wait... ok
C:\>_
and this immediately got me headscratching about the mechanics of how this was done. My first serious consideration (after noticing the Building section and hastily discarding notions of "remote/out-of-band terminal I/O...?") was that it was somehow boxing Linux up into a TSR and then somehow running that in the background. Coool.But no; the custom init.c uses virtual 8086 (vm86) mode to call back into DOS, trapping on a specific interrupt to enable DOS<->Linux communication. The launcher loads Linux into memory and jumps into it just like a bootloader would, then the init program maps the first 1MB of RAM (to cover all 640K of conventional memory) and hands the whole DOS address space area to vm86(2) to continue within DOS where everything left off. So, this isn't a TSR in the literal sense (it doesn't exit using INT 27h, "Terminate and stay resident"), nor in the figurative sense, wherein the program encapsulates Linux and then returns to DOS (which certain interpretations of the program output might suggest) in the same way exiting Netware or Windows 9x ("reboot in DOS mode", in certain circumstances) would. (But there are some interesting "it quacks like a duck" arguments in there, I can't deny that.)
The actual situation is basically the reverse of my first impression - this isn't a TSR that runs Linux, it's a DOS program that launches Linux that then continues DOS using v86. I've read how mainframes perform similar insanity, like where the kernel will initialize a VMM and then promote the bootloader/boot-up code into a task/process during startup. By some measures, this madness is arguably more awesome than a TSR.
Now, my question, which is squishy, and which I don't know how to articulate well (read: more concisely). Being able to run Linux in a TSR - cooool - leaps out at me as a captivating ball of interestingness that stands well above all the "oh yeah that would be kind of neat to look at one day... after I count to infinity twice" intrinsically non-interesting, passive armchair thoughts I'll forget within seconds of thinking of them. But I'd probably be able to keep coming back to an idea like "Linux in TSR" for many months before giving up.
Flip the whole thing around, though ("start Linux and then resume DOS in emulation"), and poof, the interestingness is all gone. I think this is not because I consider the idea fundamentally less cool (or worse, think it's outright silly or stupid!), but due to the opposite physiological reaction.
I discovered https://www.teamten.com/lawrence/writings/norris-numbers.htm... yesterday. It was a really cool read, describing how programmers hit walls in terms of how much code they can write (and presumably then continue to reason about) before everything devolves into madness. I think I've been dealing with an almost identical type of wall for some time, which I'm not sure how to scale.
Learning and experience seem to basically be ways to build neurological surface area (or, room to store irreducible complexity) that allow us to stuff more and more stuff into our creative problem-solving/reward loops ("productivity: finding happiness, just with ever more (and more...) steps!"). As this develops, and as we associatively fold doing more things into our reward loops, it seems that the habit-forming parts of the brain coordinate subconsciously with the parts of our executive function that internalize the core intrinsics of whatever we're learning about, and we just find ourselves especially drawn to things that will further deepen and specialize our understanding. And sometimes, we find areas are so interesting that the persistence is just there to keep at certain things even when they're hard. And that persistence... is our worldview, or focal point, of "what I'm doing right now". It's our baseline watermark, or threshold, of keeping on.
But this process seems to have a hair-trigger limit. Push the whole thing even a tiny bit too hard, and it loudly cracks, sparks fly and springs and gears go everywhere.
I think the inspiration associated with restriction and limitation is strongly related to this. It seems that the most fun projects are those that exceed an individual's (socially?) measured accomplishment by a significant amount, but fit well within the complexity scale of the untapped feedback-loop surface area.
Which leads me to my current existential juxtaposition. The systemic incoherence that accompanies ADHD, autism and depression (or any combination thereof), and the subsequent conscious "driving" of the brain (and veering all over the metaphorical road, without access to the feedback loops available to the subconscious), exacerbates this situation; without the machinery to maintain relaxed focus without losing disorientation, I constantly consciously course-correct - but these systems do not like to be "driven", they only function correctly when they can lead, and when there is harmony.
It also seems very difficult (at the very least) to consciously drive the machinery/focus that builds raw mental capacity; I wonder if this construction process is subconscious by design, while the usage or resolution process of achievement, that chases the delta between untapped potential and achievement, is conscious by design. If so, yay.
Without the cohesion of subconscious-first leadership, building and maintaining this delta between capacity and interest is a game of second-guessing how my brain works, which I'm not winning at, and so the level of fundamental interest I have in the sorts of things I do want to master lags behind my logical interest levels.
To complete my question, I look at projects like this, and I perceive their complexity scales like a person standing within a tiny fenced-in square and saying "I am outside the fence". If the person were defined to be inside the tiny square, that would represent a small amount of problem-solving complexity that might even be described as "cute" (see also: every well-executed minimalist software project ever). But with the definitions flipped around, the complexity quotient might as well be practically infinite, because it falls outside of the incredibly narrow window of surface area I have available, which I don't know how to build upon and expand, and so the interest just vaporizes. Thus, this project is too cool to be fundamentally interesting to me! :( (And yes, this is a meta-explanation; the "Linux in DOS vs DOS in Linux" pathway was what got me thinking about all this, and then gave me the mental framework to follow the ideas well enough to write them down.)
So, to anyone out there that this makes sense to, who has maybe figured out how to, well, https://twitter.com/Davidson_03/status/846740485200891909...
...I'm stuck. My brain thinks that logical awesomeness should directly translate to follow-through and persistence. I logically know it doesn't work that way (something something effort). But there's a short-circuit somewhere (kinda like the example of the monkey who had its fingers bound together for a few months, then couldn't move them independently - except instead of fusing, I'm dealing with something that never spliced apart), and the step(s) that are supposed to go in the middle are missing. Wat do, if you by any chance know?
This was a weird ramble, and if you got to the end of it, thanks very much for taking the time.