Linux Running on an NES?

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024
  • github.com/dec...
    Apologies for the audio quality.
    How it Begins by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 license. creativecommon...
    Source: incompetech.com...
    Artist: incompetech.com/
    Long Time Coming by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 license. creativecommon...
    Source: incompetech.com...
    Artist: incompetech.com/
    Disco Ultralounge by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 license. creativecommon...
    Source: incompetech.com...
    Artist: incompetech.com/

ความคิดเห็น • 596

  • @davey453267
    @davey453267 10 หลายเดือนก่อน +506

    "Now that we've stopped moving the goal posts..." Is the most perfect thing I've ever heard describing the hardware hobby.

    • @ElShotte
      @ElShotte 10 หลายเดือนก่อน +27

      If only people were more comfortable with this. Sometimes it's better to simply move the goal posts.

  • @AnimalFacts
    @AnimalFacts 10 หลายเดือนก่อน +309

    I respect that you acknowledge moving the goal posts.

    • @voltcorp
      @voltcorp 10 หลายเดือนก่อน +21

      yup, and then when it ran on an everdrive in the end I fully felt that this was legit enough. really shows how honesty is the best policy.

    • @I_SEE_RED
      @I_SEE_RED 10 หลายเดือนก่อน +8

      Yeah if he didn’t, I might have added an invisible dislike

  • @dolmondboi
    @dolmondboi 10 หลายเดือนก่อน +1148

    Wow. Didn't even run neofetch

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +382

      Damn. I knew I forgot something!

    • @navinhaze6343
      @navinhaze6343 10 หลายเดือนก่อน +34

      ​@decrazyo It's all good, that would have been cool, but this is still as impressive.

    • @shepardpower
      @shepardpower 10 หลายเดือนก่อน +28

      @@decrazyo you can post the neofetch in a community post

    • @blob5907
      @blob5907 10 หลายเดือนก่อน +8

      ​@@decrazyonow that you remember edit it into the video

    • @RoseQuartz692
      @RoseQuartz692 10 หลายเดือนก่อน +4

      What is neofetch?

  • @TakuikaNinja
    @TakuikaNinja 10 หลายเดือนก่อน +414

    Hold on, I wrote those TODO labels on the FDS page... 😬

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +162

      😂 Maybe I'll add some details to the wiki now that I know a bit more about the FDS.

    • @TakuikaNinja
      @TakuikaNinja 10 หลายเดือนก่อน +103

      @@decrazyo I'd appreciate that. Not enough people have delved into the FDS' low-level behaviour.

    • @alleycatjack4562
      @alleycatjack4562 10 หลายเดือนก่อน +27

      ​@TakuikaNinja you both are awesome.

    • @Ðogecoin
      @Ðogecoin 10 หลายเดือนก่อน +4

      @@decrazyohi

  • @andreapuerto8967
    @andreapuerto8967 10 หลายเดือนก่อน +37

    I will finally be able to turn my 20 famicom into a k8s cluster

  • @tuomollo
    @tuomollo 10 หลายเดือนก่อน +174

    From what I know, someone managed to run Linux on 6502 machine by emulating a 32 bit Motorola CPU. Of course booting it would probably take hours if not days.

    • @matsv201
      @matsv201 10 หลายเดือนก่อน +13

      Linux was made very early on in the 32bit days, most of the runtime is in 16 bit instructions. (Or well it was).
      That is, it needs 32 instructions, but really for very few things.
      Getting from 16 bit to 8 bit is a bit easier. Still yes, there is a boat load of issues.
      But anyway, getting from 32 to 16 bit might bot be as hard as one imagine. It really boils down to 3 main funktion. Ram, drive and security.
      And the solution for ram is quite easy just cap it at 1MB. The solution for drive is also similarly easy. Just don't use 32 bit file system.
      And for security? Who really needs it

    • @ryanr8364
      @ryanr8364 10 หลายเดือนก่อน +29

      @@matsv201This is not accurate. Linux was fully 32-bit from the very beginning in 1991, both the kernel and the userspace. That was one of Linus Torvald's original requirements in his project. The only 16-bit code was in LILO, the bootloader, and it was not part of the kernel.

    • @matsv201
      @matsv201 10 หลายเดือนก่อน

      ​@@ryanr8364 That is not how neither compiler nore 386 opcodes work. A 386 instruction set is really mostly a 286 instruction set with a few 32 bit added instructiosn on top of the 286 code. Because 386 is not 387 there is no floatingpoints in the 386 op-code, and that is really mostly what 32 bit words are used for.
      There is a bit of ops added to handle 32 bit ints, but again, those are not really needed. Most of the added ops is for disc and memory acess. Even at that its worth saying that the 286 did have extended memory space over the bit limit of 1MB. (simular to how most 8bit CPU did memory pageing).
      You might belvie you are writing a 32 bit code, but the compiler don´t care. When its compiled and done most of the code is 16 bit regardless. .... that is.. most.. not all.
      You have to go all the way to x64 untill there is a full ops base for replacing every single 16 bit instruction. Even at that, its a bit flakey. Even today in a 64 bit windows that support aboslutly none 16 bit aplication, there are still ops that are compiled as 16 bit instructions that is needed.
      A few yeras back (we talking like 2021-22 or there about) anuounced a project of totaly wiping the cores from x86-16 code. But it turned out that it didn´t work due to some legacy part of the system is still using part of that code base So in stead they was about to implement a 16 bit emulator in hardware via code morthing to remove the 16 bit instructions.
      If you look at the 386 ops base most of the instructions that is just not totaly new instructions for extended usage or having to do with memory or disc access, are just added clone instructions for 16 bit int in 32 bit.
      Here is the thing, if you use nothing 32 bit, those instruction isn´t needed in the first place. Even if the compiler in some instances would compile them into 32bit int, you will really just have 16 bit numbers with 16 zeros in front of for basically every calculation.
      And of cause yes, you would need to recompile it set to 16 bit and some code would need to be removed or modified. But most would just work as is.
      So its not like because you set the compiler to 32 bit, everything will be 32 bit. Even if it was. Most of the code is not written as bit dependent.

  • @Dubsteppah
    @Dubsteppah 10 หลายเดือนก่อน +17

    Videos like this prove to me that there are just everyday people out there who are geniuses. You are one of those people

  • @catfree
    @catfree 10 หลายเดือนก่อน +248

    Criminally underrated this is such a niche but awesome project I hope you learned alot doing it!

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +31

      It was a great way to learn more about some fundamentals of OS design.

    • @DrakenStark
      @DrakenStark 10 หลายเดือนก่อน +3

      ​@@decrazyo Would love to see what you can decide to actually run on top of it!

    • @Cypryssss
      @Cypryssss 10 หลายเดือนก่อน

      nice pfp

    • @catfree
      @catfree 10 หลายเดือนก่อน

      @@Cypryssss Why, thank you!
      I must return the compliment, as you're looking just as (if not more) dapper.

    • @TheSimoc
      @TheSimoc 10 หลายเดือนก่อน

      Yep, we need more operating systems and software with professionally made, efficient usage of hardware resources.

  • @albinoninjamonkey8967
    @albinoninjamonkey8967 10 หลายเดือนก่อน +61

    i love this type of thing.. youtube has been in a sad state lately.... please please keep making videos

    • @DJBillyQ
      @DJBillyQ 10 หลายเดือนก่อน +14

      dude even included some old internet memes to bring me back to happier days of internetting. :_)

  • @jsnotlout3312
    @jsnotlout3312 10 หลายเดือนก่อน +138

    Man wrote his own drivers and called it easy

    • @alface935
      @alface935 10 หลายเดือนก่อน +20

      "Professionals have Standards"

    • @jsnotlout3312
      @jsnotlout3312 10 หลายเดือนก่อน +12

      @@alface935 Hey, at least he knows they don't have spyware lol

    • @alface935
      @alface935 10 หลายเดือนก่อน +2

      @@jsnotlout3312 True

    • @jsnotlout3312
      @jsnotlout3312 10 หลายเดือนก่อน +7

      @@alface935 The red spy is not in the base

    • @alface935
      @alface935 10 หลายเดือนก่อน +6

      @@jsnotlout3312 He could be in this very room

  • @grant2053
    @grant2053 10 หลายเดือนก่อน +17

    Caught the Star Trek reference you slipped in there where Picard said "He-just-kept-talking-in-one-looong-incredibly-unbroken-sentence-moving-from-topic-to-topic-so-that-no-one-had-a-chance-to-interrupt-it-was-really-quite-hypnotic'

    • @3rdalbum
      @3rdalbum 10 หลายเดือนก่อน

      Oh geez that is really an obscure reference. I get it now.

    • @TSDT
      @TSDT 10 หลายเดือนก่อน +3

      ​@@3rdalbum it was quite popular on YTMND back in the early internet ("The Picard Song") but yeah, rather obscure these days.

    • @mattmurphy7030
      @mattmurphy7030 10 หลายเดือนก่อน

      @@TSDThard to believe YTMND is the “early internet.” Feels like yesterday

  • @bretwashere
    @bretwashere 9 หลายเดือนก่อน +3

    Dude, this is amazing. Your understanding of what is running even mean, the fundamental process of how a UNIX like OS works, and what is involved to actually get this code to run on the NES. People who are able to pull this off is few, far and in between. Good job!

  • @pikaporeon
    @pikaporeon 10 หลายเดือนก่อน +11

    This is the kind of stuff I'm about, esp dealing with the qualifiers of 'not just a raspberry pi in a cartridge'

  • @Ganx_Gooshers
    @Ganx_Gooshers 10 หลายเดือนก่อน +21

    never expected this from a speed run channel. I'd love to see more cool projects like this!

    • @jama211
      @jama211 9 หลายเดือนก่อน

      Ohhh, I KNEW I knew that voice from somewhere!!!

  • @Bro3256
    @Bro3256 10 หลายเดือนก่อน +222

    Interesting project, someone linked me this video on Discord and was curious.
    Since I own a Famicom with the Family BASIC keyboard along with an FDS Stick I was able to run your program on actual hardware and unfortunately I can't seem to get the actual keyboard to work despite it being functional in Family BASIC. When emulating in Mesen the keyboard works fine so I'm a bit puzzled why it isn't working on the actual hardware.
    Edit: I have since tested newer versions of the program and the keyboard now works on actual hardware. Very interested to see where this project goes from here.

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +130

      When the system boots does it display the message "No Keyboard" after the "Family BASIC Keyboard module version 0.3" message? if so then the keyboard driver is disabling itself since it can't detecting a keyboard.
      also, providing tech support for UNIX on a Famicom feels incredibly surreal.

    • @Bro3256
      @Bro3256 10 หลายเดือนก่อน +20

      @@decrazyo yeah it's displaying the message, despite the keyboard being plugged in since power on

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +30

      Strange. I implemented the same keyboard detection algorithm that Lode Runner supposedly uses, according to the nesdev wiki.
      Keyboard detection was the last feature i added so as a quick workaround you could checkout the version before I added that.
      Commit 8421a70 is the latest version that doesn't have keyboard detection.
      github.com/decrazyo/lng-fds/blob/8421a706f76c9fe5d4d2b21e627dc74ba9b96fd9/lunix.fds

    • @Bro3256
      @Bro3256 10 หลายเดือนก่อน +30

      @@decrazyo got around to testing this one, good news is that the keyboard is fully functional on hardware now but bad news is that they keys do not correspond to the output so T on the keyboard would register as W for some reason
      at least it's somewhat functional not entirely sure why its so borked on actual Famicom hardware

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +43

      Ok. This is starting to make sense to me. T and W correspond to the same column on the keyboard matrix, just on different rows. So, for example, when the driver is trying to read row 1 it's actually reading row 2 and so on for every row. That would also explain why keyboard detection doesn't work. I'll see if anyone on the forums has document this behavior or I'll just reverse engineer Family BASIC to see how it handles the keyboard.

  • @mindblow7617
    @mindblow7617 10 หลายเดือนก่อน +3

    this is awesome, it blows my mind how people like you manage to run an OS in such machines, as a linux fan I'm in love with this

  • @Woodywoodah
    @Woodywoodah 10 หลายเดือนก่อน +2

    This is incredible, dude! Thank you for sharing such an awesome project!

  • @MK-of7qw
    @MK-of7qw 10 หลายเดือนก่อน +12

    I didn't even know an 8bit 6502 could do this much. Good video.

  • @CYXXYC
    @CYXXYC 10 หลายเดือนก่อน +16

    I believe the only requirement for "UNIX-like" is just POSIX complicance, which kicks out Windows (in its current form, excluding WSL) right away, and describes most of the things you described.

    • @jfbeam
      @jfbeam 10 หลายเดือนก่อน +4

      POSIX does not equal UNIX. (Windows [NT] has had POSIX layers as far back as 3.5. The NT kernel was based on a UNIX system.)

    • @peter0x444
      @peter0x444 10 หลายเดือนก่อน +8

      ​@@jfbeamthe "posix layer" in this case was actually a sort of malicious compliance scam so Microsoft could bid on US government contracts. NCommander has a good video about it, it was not actually useful. Calling it "posix" is a very, very big stretch.
      There is cygwin which does that in a more useful way.

    • @TheD3cline
      @TheD3cline 10 หลายเดือนก่อน

      this

    • @mattmurphy7030
      @mattmurphy7030 10 หลายเดือนก่อน

      “excluding WSL”
      I mean if you just arbitrarily exclude major parts of windows then sure

    • @CYXXYC
      @CYXXYC 10 หลายเดือนก่อน +4

      @@mattmurphy7030
      1. WSL is not installed by default
      2. WSL has actual linux installed in it
      3. WSL runs via Hyper-V emulation

  • @rars0n
    @rars0n 10 หลายเดือนก่อน +2

    Incredibly cool, very interesting, and I love your straightforward presentation. Subscribed!

  • @EWARS_2
    @EWARS_2 10 หลายเดือนก่อน +68

    Oh my word, thank you for doing this!! I've use LUnix with a Pi1541 on the C64 before, and it's some serious stuff! (Networking drivers go crazy) I've scoured Teh Interwebz for this kind of idea, and I believe you are now the first to have the NES run Unix! 👏👏👏

  • @eric_d
    @eric_d 10 หลายเดือนก่อน +24

    This is pretty damn awesome. Not that anyone would ever actually NEED to do this, but it's still cool that someone was able to.

  • @SirajFlorida
    @SirajFlorida 10 หลายเดือนก่อน +4

    Um, this is something that I have always wanted to do but never set aside the time to do it. Thanks for sharing this!

  • @BalancedSpirit79
    @BalancedSpirit79 10 หลายเดือนก่อน +9

    This is insanely impressive.
    If you like the thought of making an NES/FDS run a modern OS, *please* look up information about Contiki. There's an abandoned NES port for that OS which was supposed to have networking hardware and the ability to use the Zapper gun as a makeshift mouse. This OS has a Wikipedia article, so I suppose that plus websearching would be a good place to start.

    • @cll1out
      @cll1out 10 หลายเดือนก่อน +4

      I’m trying to imagine a Zapper as a mouse. How I understood the zapper to work is a “confirm or deny” the zapper is looking at a predetermined spot on the screen. For this to work to determine aim, I would think it would have to “scan” by moving the white box all over the screen until the zapper hit, which could easily take a good half second to try 16 different regions on the screen and get a low resolution of where the pointer should be. I guess it could then repeat in the smaller region to “refine” the pointer position closer to the aimed spot.
      Maybe I should just go search for a video of this…

    • @BalancedSpirit79
      @BalancedSpirit79 10 หลายเดือนก่อน

      @@cll1out I don't think there would be a mouse cursor. Instead of "point and click" it would probably be "aim and shoot."

    • @tatomar001
      @tatomar001 10 หลายเดือนก่อน +1

      ​@@cll1outyou could do a binary search actually and get which half screen, then which quarter, wich eigth which 16th, maybe that is fast enough in the nes, i imagine the pixel density is also not that big, also most of the screen might not be interactive

    • @bmxscape
      @bmxscape 10 หลายเดือนก่อน

      @@tatomar001 why randomly guess when you could just look it up

  • @vi23a
    @vi23a 10 หลายเดือนก่อน +2

    "...and more like a shitty video card."
    >shows something that basically resembles my current gpu

    • @Tropics09-o6d
      @Tropics09-o6d 2 หลายเดือนก่อน

      Can it rin minecraft?

  • @josephfanning1241
    @josephfanning1241 10 หลายเดือนก่อน +54

    Why didn't you get the lead man for The Police to announce this? It would have been perfect.
    He's sendin' out a NES OS!
    He's sendin' out a NES OS!

    • @ElShotte
      @ElShotte 10 หลายเดือนก่อน +6

      I bet you lived at least half of your life wanting to say that... 😁😁

    • @grendelfly83
      @grendelfly83 10 หลายเดือนก่อน +5

      Sting? 😂

    • @lyghtkruz
      @lyghtkruz 8 หลายเดือนก่อน

      Great, now that's gonna be stuck in my head all day hahaha

  • @havocking9224
    @havocking9224 10 หลายเดือนก่อน +4

    I was having vietnamese clone of NES, it has keyboard, mouse and cartridge, which tries to behave like Windows 95. It has mouse cursor, start menu, text editor, "movies". It was more like educational pc. Good memories.

  • @nikdog419
    @nikdog419 10 หลายเดือนก่อน +3

    When you dropped the FDS bomb, I got excited. I have the System, the keyboard, and the FDS.

  • @casualmotion-u3q
    @casualmotion-u3q 9 หลายเดือนก่อน +1

    Once you started talking about writing your own routines i knew this video is fire

  • @StormsparkPegasus
    @StormsparkPegasus 9 หลายเดือนก่อน +1

    The Linux kernel itself requires a memory management unit. Which the 6502 doesn't have. Minix is the most common Unix-like OS that does not require an MMU.

    • @alienJIZ1990
      @alienJIZ1990 8 หลายเดือนก่อน

      I had the same thought the other day since it's small enough to be baked in every Intel CPU post 2006, but sadly that won't work =/
      LUnix is far closer in architecture out the gate so it was definitely a smarter choice for this project and regarding the MMU I found this on OSdev:
      "Although Minix 3 prior to 3.1.4 doesn't use the MMU, it did use virtual memory and memory protection to some extent. Rather than use paging, it used the segmentation system of x86 processors to achieve similar results."
      Maybe Minix 2 could be possible if there's no need for MMU and it doesn't rely on x86 specific functions but I'm sure it wouldn't be easy without basically rewriting it

  • @fairvalesecondary5883
    @fairvalesecondary5883 10 หลายเดือนก่อน +1

    Nicely put together! Looking forward to your content.

  • @gregkempchannel
    @gregkempchannel 10 หลายเดือนก่อน +2

    Thank you for answering this question I didn't know I needed answered until seeing this video on my feed.

  • @whatskenmaking
    @whatskenmaking 10 หลายเดือนก่อน

    Very nice - you've given me an interesting idea for a project/video that I have planned for this summer. I'll be thinking about this more, but I may possibly jump into the repo and make a couple of contributions.

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน

      That'd be great.

  • @vectrex28
    @vectrex28 10 หลายเดือนก่อน +8

    Oh wow! That's amazing, especially with reverse-engineering the FDS. One of my friends actually did a full disassembly of the BIOS

  • @6LordMortus9
    @6LordMortus9 10 หลายเดือนก่อน +3

    That STNG plug was amazing! :)

  • @theITGuy-no3nt
    @theITGuy-no3nt 10 หลายเดือนก่อน +1

    5:44 Wait, what? I just looked that up and that is batshite crazy! Thanks for this, man; I had no idea. This is going to be a fun little rabbit hole for me.

  • @HypherNet
    @HypherNet 10 หลายเดือนก่อน +1

    Yeah you got a sub for "one long unbroken spiral moving from sector to sector" ... (it's really quite hypnotic)

  • @Zhuge_Liang
    @Zhuge_Liang 10 หลายเดือนก่อน

    Your honesty, and your ability - instant sub.

  • @LegendBegins
    @LegendBegins 10 หลายเดือนก่อน

    Very cool! It's clear a lot of work went into this project.

  • @Debu_Ranger
    @Debu_Ranger 9 หลายเดือนก่อน +1

    You are hardcore! Very cool! Must have taken hours to write and figure it all out.

  • @trevormurphy7041
    @trevormurphy7041 10 หลายเดือนก่อน +2

    Hands-down the best idea I’ve seen in a very long time I think Nintendo is messing up big time and not hiring people like you best advice I was given think outside the box in this video is a prime example of it

  • @Thurloat
    @Thurloat 10 หลายเดือนก่อน +4

    That picard / disk reading joke was 10/10 😂

  • @jmalmsten
    @jmalmsten 10 หลายเดือนก่อน +12

    In keeping with the premise of using only available hardware of the time. Would it not be appropriate to use memory swapping or what it's called, like how they used to get games like Kirby to run on the NES with the 6 Megabit cartridge?

    • @3rdalbum
      @3rdalbum 10 หลายเดือนก่อน +3

      Bank switching? That's to enable cartridges larger than the Cartridge RAM space.

  • @sophiamarchildon3998
    @sophiamarchildon3998 10 หลายเดือนก่อน +5

    "Unix-like is pretty much every contemporary common OS, ... but like all Unixy everywhere". Feels circular to me.

    • @mayteramarble1578
      @mayteramarble1578 10 หลายเดือนก่อน +2

      it's more just that unix ideas are so pervasive in modern os design. windows is pretty much the only non-unix and even it takes a bunch from unix

  • @AnimeHyperDimention
    @AnimeHyperDimention 10 หลายเดือนก่อน +1

    This is good news for NES retro developers, everyone will want the cartridge with the penguin logo, adapted with more memory, SD input peripherals, sound chips, etc. It can help create better games and development platforms to play online.

  • @iamtimsson
    @iamtimsson 9 หลายเดือนก่อน

    5:35 tracks and sectors
    got it learned now
    simple and intuitive thanks

  • @Mr.1.i
    @Mr.1.i 8 หลายเดือนก่อน +1

    6510 assembly works on c64 and the Nintendo if you format mario for a c64 a 5 line patch and the game loads level by level

  • @brainletplays3946
    @brainletplays3946 10 หลายเดือนก่อน +2

    absolute mad man. Subscribed

  • @wezyap
    @wezyap 10 หลายเดือนก่อน +7

    The quiestion now becomes "Can it run doom?"

    • @DJBillyQ
      @DJBillyQ 10 หลายเดือนก่อน +2

      at a ludicrously low clock speed, maayyybe? 🤔🤷‍♂

    • @BalancedSpirit79
      @BalancedSpirit79 10 หลายเดือนก่อน +4

      This is an NES/FDS, let's start with Wolfenstein 3D first. Or maybe Curse of the Catacombs.

    • @Littlefighter1911
      @Littlefighter1911 10 หลายเดือนก่อน +1

      @@DJBillyQ Well, at a ludicrously low speed (not clock speed), everything runs potentially on the NES.

  • @yaboyted817
    @yaboyted817 10 หลายเดือนก่อน +1

    This is dope. Great job!

  • @mungodude
    @mungodude 10 หลายเดือนก่อน

    That's so cool! I completely forgot everdrives were a thing, and thought the endpoint was gonna be an emulated FDS, did not expect the real hardware at the end

  • @extenos
    @extenos 10 หลายเดือนก่อน

    this is probably one of the most impressive things ive seen in a while

  • @Myphton
    @Myphton 10 หลายเดือนก่อน +1

    Nice work!
    My suggestion would be to utilize a Miracle Piano Keyboard cable to interface a QWERTY keyboard. It was used for cartridge, but it takes the regular port of the NES and has a 25-pin male adapter on the end (assuming you want closer to native hardware..). I would start there.

  • @Twenty_Six_Hundred
    @Twenty_Six_Hundred 10 หลายเดือนก่อน +1

    Love these little projects. Some would ask why and what's the point but to me seeing it run on native hardware is brilliant

  • @ElShotte
    @ElShotte 10 หลายเดือนก่อน

    Deffo got my subscription. Cool project, well explained, definitely interesting. People don't credit old hardware enough. Any one that wants to learn coding or computer science nowadays wants to start with the best stuff. Problem is, best stuff is also the most complex stuff, and at the fundamental level, everything works (mostly) just like their initial counterparts did. Sometimes, it's helpful to learn how an old piece of hardware or software works, because it will help you understand the new stuff.

  • @JamesR624
    @JamesR624 10 หลายเดือนก่อน +2

    So I like how he starts by saying the Pi method is "cheating" since it's not "on the NES", but this isn't even though it isn't "linux". Yeah, okay. Going by this logic, Every modern Apple computer not only can run linux but is already doing so out of the box, as well as every iPhone and iPad.
    Spoiler: Just because it shares some ideas as UNIX because it was inspired by it, doesn't mean Linux is even remotely the same as UNIX.

  • @opentsmx
    @opentsmx 10 หลายเดือนก่อน

    thank you for sharing this, it’s really amazing what you did, it’s been a while that I didn’t see anything so cool. “*why you do this? , **because is cool and I can do it “

  • @willworkforicecream
    @willworkforicecream 10 หลายเดือนก่อน

    @1:12 Colonel Space Code is my favorite old sci-fi tv show

  • @the_kombinator
    @the_kombinator 10 หลายเดือนก่อน +8

    6:35 that music sounds a lot like Star Control II mod files ;)

  • @savagesarethebest7251
    @savagesarethebest7251 10 หลายเดือนก่อน

    The amazing song is apparently "long time coming" by Kevin mcloadm. Same as in aa/bb

  • @MrCalcwatch
    @MrCalcwatch 10 หลายเดือนก่อน

    Awesome work! I haven’t studied the code yet, but if you want less glitching, I’d recommend using the MMC5 mapper, which maps a chunk of cartridge RAM to the PPU, making it more like Commodore hardware. It would also give you a lot more data available for bank swapping, if you want to include more executables, and battery-backed-up memory to save its state or have a rewritable file system. Plus, you’d remove the FDS read bottleneck you mentioned.

  • @floridebori7626
    @floridebori7626 10 หลายเดือนก่อน

    i understood probably 10% but this was amazing. will follow you. thx

  • @j_c_93
    @j_c_93 10 หลายเดือนก่อน

    An interesting thing about the NES/Famicom is that is uses a 6502 processor, where were originally released in 1975.

  • @oglothenerd
    @oglothenerd 10 หลายเดือนก่อน +1

    Lunix is literally Linux, but with the vowels swapped. 😂

  • @ogrooster69
    @ogrooster69 10 หลายเดือนก่อน

    "Well now that we're done moving the goal posts." I really want to get this printed as a quote and toss it in our sales teams area.

  • @WhiteThumbs
    @WhiteThumbs 10 หลายเดือนก่อน

    Very in depth knowledge, you rock!

  • @jama211
    @jama211 9 หลายเดือนก่อน +2

    This is so cool!

  • @veselcraft
    @veselcraft 10 หลายเดือนก่อน +2

    is there a way to patch kde2 for LUnix?

    • @SL4RK
      @SL4RK 10 หลายเดือนก่อน

      вот кого точно не ожидал тут увидеть

    • @veselcraft
      @veselcraft 10 หลายเดือนก่อน

      @@SL4RK :D

  • @MoonSarito
    @MoonSarito 10 หลายเดือนก่อน

    This is so impressive to see, especially considering the limitations of the NES, I wonder if this would also be possible on the SNES and be more usable in some way due to the more powerful hardware or if in the end there wouldn't be that much of a difference running a OS between the two.

  • @harry_kr
    @harry_kr 10 หลายเดือนก่อน

    Awesome project and super interesting and concise video!

  • @szebike
    @szebike 9 หลายเดือนก่อน

    Nice, this takes the "computer" in the word famicom to another level.

  • @xenorac
    @xenorac 10 หลายเดือนก่อน +1

    Loved the Timescape reference!

  • @notexactlysiev
    @notexactlysiev 10 หลายเดือนก่อน +3

    great work! I wonder how much work it would be to eliminate lunix's disk reliance entirely. also, this makes me fantasize about porting the original unix version 6 to the system

  • @le9038
    @le9038 10 หลายเดือนก่อน +8

    That was just incredible... I can't believe someone like you could do something of this scale...

    • @quinndirks5653
      @quinndirks5653 9 หลายเดือนก่อน

      Sounds kinda like a back handed compliment, but I doubt that was intentional.

  • @Drozerix
    @Drozerix 10 หลายเดือนก่อน +1

    I'd say you can't really run Linux on an NES as there is no real separation between user-space and kernel space.
    How can the 2A03 - a 6502 based CPU - detect and issue an interrupt when a user program is attempting to write in kernel space? In other words, how do you perform a trap? From my thinking, everything here will run on “ring 0.” Also, there are no specialized instructions, like syscall, sysenter or int in 6502, that allow software interrupts (signals) to be raised or to handle this transition from kernel to user-space. You might get away with it if you had some special mapper with an ASIC that interrogated each read/write address that was happening on the cart RAM, and was able to be set in a special mode - like user or supervisor - and utilized the IRQ line going from the cartridge to the NES system.
    On x86 systems (286 and up) there are privilege levels that are governed by physical modes. When in user-mode, if a process attempts to access memory that it shouldn’t (like kernel memory), then a trap is fired and handled. With the current set up you described, even with the Famicom and extra cart RAM, I don’t see how this separation of user-space and kernel space is actually achieved outside of just saying “this region of memory is for the kernel and this region is for the user.”

  • @LobotomyTC
    @LobotomyTC 10 หลายเดือนก่อน

    I have a Sharp Twin Famicom and a Family Basic Keyboard, with an everdrive. I'm going to give this a shot! The C64 Kernal and BASIC port is super fun to play with, as well!

  • @2000freefuel
    @2000freefuel 10 หลายเดือนก่อน

    Perhaps an Everdrive port is in order? to make use of the additional RAM available in those carts.

  • @EmeraldEyesEsoteric
    @EmeraldEyesEsoteric 10 หลายเดือนก่อน

    I don't know about Linux, but I'd like to put Nestopia, and my entire library of NES games into one single cartridge and play it an actual NES. That would be pretty cool.

  • @royerxd3212
    @royerxd3212 10 หลายเดือนก่อน +1

    We got Linux on the NES before Half Life 3

  • @GregStrike
    @GregStrike 10 หลายเดือนก่อน

    Well done man! Nice explanation too!

  • @jingo500
    @jingo500 10 หลายเดือนก่อน +1

    I always thought the Question was "Can it run Crysis", but I guess this'll do.

  • @navinhaze6343
    @navinhaze6343 10 หลายเดือนก่อน

    Aw man this is so badass my dude.

  • @sinom
    @sinom 9 หลายเดือนก่อน

    It would probably be a good idea to update the readme of the repo

  • @gapheu
    @gapheu 10 หลายเดือนก่อน

    Thank you Sir for your contributions to the advancement of humanity.

  • @2000freefuel
    @2000freefuel 10 หลายเดือนก่อน

    the Famicom disk system adapter has an expansion port providing 7 GPIO lines, perhaps an adapter could be worked up to adapt to the Commodore IEC bus for a less painful and more usable floppy disk experience. Or at a minimum an Arduino implementing a more sane way to store and access files.

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน

      That certainly seems possible. Its just hard for me to do since I'm primarily developing on emulator. There are tons of things that could be done with the RAM adapter's parallel port.

    • @2000freefuel
      @2000freefuel 10 หลายเดือนก่อน

      @@decrazyo the Everdrive N8PRO has a USB port that might be very useful for development.

    • @2000freefuel
      @2000freefuel 10 หลายเดือนก่อน

      @@decrazyo I just had another look at the interface requirements for the SD card interface, beyond a logic level converter and some pull-up resistors along with a pair of card sockets there are enough GPIO lines on the RAM adapter to control TWO SD Cards.

  • @InsaneFirebat
    @InsaneFirebat 10 หลายเดือนก่อน +1

    I learned 65816 a couple years ago, without any other programming knowledge. I've often wondered if I could write some kind of operating system for the SNES. I don't really know how all that memory management stuff is supposed to work, so the answer is currently no. But theoretically...

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน

      I believe the 65816 is backwards compatible with the 6502 and the SNES has a lot of similarities with the NES. I bet it could run LUnix easily.

    • @PorcoZio79
      @PorcoZio79 10 หลายเดือนก่อน

      Too bad the 65816 is a failed CPU concept. Came too late to to fill a gap for hardcore 6502 users but kept presence on only 3 commercial systems (an Accorn model, SNES and the AppleIIGs). The GS was a filler platform by itself.

  • @bozimmerman
    @bozimmerman 10 หลายเดือนก่อน

    LUnix, and its author "Poldi", was well known in the C64 community in the 90s and 00s, but less known today. As a fan, I appreciate DeCrAzYo showing it some love.

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน

      I can't believe that I hadn't heard any retro computing youtubers talk about LUnix. I was completely unaware of it before I started this project.

  • @villagerjj
    @villagerjj 10 หลายเดือนก่อน +1

    and here I was trying to program my own kernel for a gameboy operating system.

    • @thewhitefalcon8539
      @thewhitefalcon8539 10 หลายเดือนก่อน

      It should be possible on Gameboy Advance or Nintendo DS. The DS has the RAM requirement for Windows 95 - and more if you install a RAM expansion cartridge.

  • @disketa25
    @disketa25 10 หลายเดือนก่อน +1

    As a cursed idea: could Famicom use cartridges and FDS simultaneously on a hardware level through some form of T-adapter, or could controller port be interacted as a serial port? Because if either is possible, you can use special cartridge or joy port device as a form of removable, mountable data storage by adding some SRAM and battery on it, similarly to how (somewhat) permanent memory storage was achieved on portable electronics of the era.
    This would allow things like separate programs or file saving to be possible here...
    P.S. Joy port device could be the most interesting option, as it could be hot swapped.

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +2

      The Famicom Disk System's RAM adapter has a has a parallel port on it that wasn't ever used afaik. I think that could be used for what you're talking about.

  • @johneygd
    @johneygd 10 หลายเดือนก่อน +2

    It would be cool if the fds version of linux will not only support the keyboard but also support the data recorder to load and save stuff on it sothat you can use the famicom as a real computer😁🙏

  • @mrDoctorWho0
    @mrDoctorWho0 10 หลายเดือนก่อน +4

    This is amazing. Would love to see what you could've achieved on a more powerful Genesis. I had this idea for a while, even looked up for linux 68k (and found it), but never got myself to come around the implementation

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +5

      hmm... I do have a Genesis. also an SNES. Both with everdrives. oh no, I'm getting all sorts of silly ideas now.

    • @mrDoctorWho0
      @mrDoctorWho0 10 หลายเดือนก่อน

      @@decrazyo Imagine running Linux on TWO m68ks! (with the Mega CD addon which is also emulated by mega everdrive pro). And what crazy stuff could be done with the 32x addon...

  • @willbill808
    @willbill808 10 หลายเดือนก่อน

    Subscribed just because of the humor, stayed for the tech knowledge

  • @MatteoPascolini
    @MatteoPascolini 10 หลายเดือนก่อน +2

    What about CP/M?

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน +1

      hmm... that's an interesting idea.

    • @Stoney3K
      @Stoney3K 10 หลายเดือนก่อน +1

      Would probably not work. CP/M was designed for the Z80 architecture. That's why the C128 has a Z80 built in alongside a 6502.

  • @PAcifisti
    @PAcifisti 10 หลายเดือนก่อน

    I don't think it would be counting as "adding" more memory to the cartridges. Didn't they go up to 1mb of storage space on the cards towards the end of its lifespan as games got bigger and bigger? Gamedevs already did that to many of its games, some even adding more compute to the cartridges to allow it to run their games if my memory isn't entirely incorrect.

    • @flameofthephoenix8395
      @flameofthephoenix8395 9 หลายเดือนก่อน +1

      All of this is true, but there's a limit to how much you can add before it stops being an NES running a cartridge and becomes a cartridge using an NES to display.

  • @techmouse.
    @techmouse. 10 หลายเดือนก่อน

    2:06 What is D?

    • @decrazyo
      @decrazyo  10 หลายเดือนก่อน

      PowerShell

    • @techmouse.
      @techmouse. 10 หลายเดือนก่อน

      @@decrazyo Oh yeah I heard that sucks. it's funny as hell because you needed to know it to even get considered for jobs.
      "You wasted 10 years on PowerShell and Perl? Perfect! You're hired!"

  • @johnm9263
    @johnm9263 9 หลายเดือนก่อน +1

    i think if it existed during the console's lifespan, including extra hardware should be "allowed" in terms of this type of challenge
    the entire purpose is that the NES should be the one in control, and not, as you say, "a shitty video card" where it basically takes a backseat to its "coprocessor" and instead becomes the coprocessor itself
    so even if the coprocessor is more powerful than the normal processor, the main processor should be doing all of the management, and using the coprocessor instead as support hardware
    what this means is that regardless of how fast the coprocessor works, its limited by the instruction processing power of the host processor, and what the host processor can then do with that

  • @pennyandrews3292
    @pennyandrews3292 10 หลายเดือนก่อน

    I would have been really surprised if any version of Linux worked on a 6502 at all, let alone an NES specifically. The very first version of Linux was written for a 386, which is 32-bit. Even the original Unix from Bell Labs would be kind of a stretch, simply because the PDP-11 computers it was designed for were 16-bit systems already. That's basically why it took so long for a Unix-like operating system to be possible on microcomputers... Unix was relegated to the server room and that paved the way for stuff like CP/M and DOS that was designed for single-user microcomputers rather than big expensive mainframes. Even so, the very first version of Xenix from Microsoft did run on an 8088, but that was a 16-bit architecture internally with an 8-bit data bus. Plus it required 256K of RAM. So yeah, I can imagine a lot of compromises would be needed for a Unix-like experience on that CPU, even without the RAM constraints of the NES.

  • @andrerenault
    @andrerenault 10 หลายเดือนก่อน

    That JonTron clip brought me gleeful laughter. I like that “but why?” a little too much

  • @l-l
    @l-l 10 หลายเดือนก่อน

    Seriously awesome project.

  • @sammiches6859
    @sammiches6859 8 หลายเดือนก่อน

    I wish I had the attention span to learn these things. I can't even get a Yamaha sound card to work with Blood (the 1997 PC game) in an original Gateway PC.