Recent submissions

Comment · 1 year ago
I've tried to abstract everything architecture dependent but there is still a lot of x86 specific code outside of archutecure specific directories. I've been planning on adding support for new platforms, but I've not yet had the motivation to start doing it.

I'm not familiar with other architectures than x86 so I can't really say what it will take. At least a lot of work :D

Comment · 1 year ago
I've managed to compile the GNU toolchain (binutils + gcc). gcc seems to work fine, it can properly compile source code into assembly. There are some problems with binutils that make it not able to create object files or link. I'm haven't dug deeper to see where the problem actually is.
Comment · 1 year ago
Thank you!
Comment · 1 year ago
Pretty much what others said. You should read through https://wiki.osdev.org/Getting_Started and note that it will take a lot time if you decide to go for developing an OS.
Comment · 1 year ago
I do plan to port more! I want to keep the base OS free of 3rd party code, but ports are really nice way to get things running that I have not yet written.

I have some ports locally that are not yet working. I have git, binutils, gcc, make all compiling but they are giving some weird errors. Probably a bug in my libc or syscalls.

Comment · 1 year ago
Comment · 1 year ago
Oh yeah, sorry. I'm missing documentation on how to access the GUI environment. You have to enter the GUI environment using `start-gui` command. After that doom should start by running `doom` in the GUI terminal. Performance in the web emulator is really bad though, so don't expect much :D
Comment · 1 year ago
I do actually support USB keyboard and mouse with USB-HID. There are some parts I don't support, like mouse specifying its movement with physical units (I haven't encountered any of those yet). Also I only have support for xHCI USB controller so PC's with older UHCI, EHCI or AHCI controllers are not yet supported.
Comment · 1 year ago
Thank you! Yeah there isn't really any data serialization done to data written into the TTY, so can break if you feed it arbitrary binary data :D
Comment · 1 year ago
Yeah basically every commonly used device has its protocol standardized. Although there exist some devices where the manufacturer has to provide the drivers. All of the devices I have written drivers have had their specifications publicly available for free (e.g. NVMe at https://nvmexpress.org/specifications).

I'm not really familiar with how Linux nor Windows handle drivers. While compiling the Linux kernel you specify which drivers you want to build into the kernel and which ones you want as modules. Usually most common ones compiled along side the kernel so there isn't really need to install them later, just load the driver modules. There are also devices that work with just a generic driver but would have more features with a specific one (e.g. led settings on a gaming mouse). I think Windows is maybe installing these optional drivers.

Comment · 1 year ago
> I would imagine this will set you up incredibly well for a career in the industry, arguably moreso than your actual degree.

That's what I hope at least. This is something I would want to do for my career in the future. Good portfolio never hurts :)

Comment · 1 year ago
I do maybe 95% of testing on a VM. It is way faster and much more convenient. I do test on real hardware regularly though. It's always cool to see stuff actually running on bare metal and bare metal is not as forgiving as VMs can be.

Generally I decide a feature I want to add. Then I do a general overview of the corresponding specifications and sometimes look at how already existing OSs handle that. I try to make some kind of mental model about the system and what it needs. Then I basically just write what ever I come up on the spot.

I have a really bad habit of not writing docs or taking notes. Basically I just hold everything in my head (and forget about it when I would need that information again). For some more complex stuff I do draw diagrams and write notes but I pretty much only keep those locally for myself.

Comment · 1 year ago
My current one is really bad. It does work on maybe 50% of the hardware I have tested. I am in the middle on writing a new proper one, it is already way better but still missing some necessary parts before I can integrate it.
Comment · 1 year ago
There has been multiple really great moments during the development. Its always cool to see some completely new features working on real hardware, like first time getting keyboard input, USB mouse input, running DOOM, reading from disks, networking, and getting a compiler working!

I think it became actually fun after I got all the basic requirements done and could start deviating from more or less standard OS code. When I could actually decide what I want to work on. Maybe after couple of months it was in that state. It was also fun at the beginning. it was just way harder as I didn't have any prior knowledge and I was trying to wrap my head around some basic concepts :D

Comment · 1 year ago
I think biggest challenges have to be with reading large specifications. I've never really done that before so it took some time to get used to.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton