July 03, 2025
finally played doom, yayy
What's up everyone! I made a funny promo video before shipping.
After 6 months of work I'm finally ready to ship MyraOS v1.0.0!
Tell me what you think :D
Hi guys! I just finished adding the release part to my Makefile, which means now I'm going to add the first GitHub release in MyraOS history!
I'm presenting, MyraOS v1.0.0!
Hi everyone! I added a driver that controls shutdown and reset, and also added an icon in the top bar for a quick shutdown! I'm adding some small stuff before I ship. I just want to be extra sure MyraOS is ready!
So I'm pretty sure I'll ship in the next few days, I'll keep y'all updated :D
What's up guys! I can finally tell you I fixed the problem we had with the desktop icons, and you won't believe what it is; it wasn't even a problem in my code!
It was a problem in the qemu, it didn't have enough ram, that's why it caused some random opens when opening large procs like Doom.
But I fixed it, and now we are really close to shipping it!
Hi guys, what's up! I still have some problems with my icons, so I decided to take a different approach and make some design updates until I can work on the icons again. I've made some optimizations and also created icons with transparent backgrounds, which I think look way better. What y'all think?
Hello everyone! I have some updates for y'all. I really want to ship already, but I want to make sure everything is 100% ready for shipping, with no bugs or anything like that. But I noticed I got a problem after relaunching Doom multiple times, Doom just PageFaults, which I'm trying to figure out why. I'll try to fix it and I'll keep y'all updated!
Hope you won't see that screen when trying my OS :p
Guys, what's up! I have a new update for y'all!
I finally have desktop icons! Finally, we are getting closer to ship the project. What do you think about the new design of the icons? I'll add more features in the future.
I have some amazing news, after a lot of time that I was trying to run Doom, I can officially say that Doom in MyraOS is fully working now! I added support in controls and fixed all the random PFs, and now you can play Doom as you wish.
Watch my Doom gameplay here
Well, I do have some good news for y'all!
The Doom is running! I worked so many hours on it, but we finally have Doom!
Although there are still some issues and some random PFs, I'll work on it and keep y'all updated. :D
Hey guysss, what's up! I'm making some improvements, bug fixing, and some polishing now before shipping, so I'm gonna ship soon! I hope I'll have enough time! Tbh, the doom has some problems now, but I'm still making some progress, I hope everything will be fine soon! I'll keep y'all updated :D
Guysssss I have amazing news. Finally, after five months of hard work, countless errors, and pain, we have achieved our dream goal! I don't even need to write about it, just watch it! :D
It doesn't mean the progress stopped, we still have some way to continue and keep going!
Guysssss I have some good new now!!!!
After wayyy too much debugging time I finally have some improvements on Doom. Hopefully I would be able to run it soon.
I'll keep y'all updated :D
Hey everyone! Tbh I have some bad news, I'm reallyyyy stuck lately, I improved the window manager and made some improvements to the window syscalls to be able to support the doom generic functions but I noticed some problems with that. I hope I'll find what causes everything soon! Thanks y'all :D
The image has the current improved window manager!
We have a small update before we can run Doom now. I'm working on the Doom generic API, so I added the syscalls for sleep! We would later see Doom running :D
These are the Doom generic func I need to impl!
What's up everyoneeee I have an amazing update for y'all! tbh, I really like this feature now, and I think it's a huge update. It took me a lot of time, but I think it's worth it, now each process has an API where it can get a buffer to draw on, and it shows on a window by the kernel. So as you see here, we have a process drawing on a screen, right now it's just a test process called Doom Eternal. But later we would see real doom (not eternal lol) running here!! :D
What's up guysss I have a great update to tell you about!
I worked a lot of time on an updated UI manager with an event handling system, and tbh I really like it and I think MyraOS is starting to look like a real OS now!
I'll keep y'all updated in the future! :D
Guyss look at that, we have images in our OS! That's so cool, finally seeing the OS come to life.
I think that's one step closer to running Doom! And having our own desktop in MyraOS :D
Guyssss, another really cool update! I have a mouse support now! :D
That means we can... Control the mouse now!
I don't have much to talk about it, but just look at it ig.
I promise Doom is coming soon
Heyyy guys! Look what we finally got in MyraOS!
We finally have text rendering!
Tbh text rendering took way longer than I thought, so the mouse driver would be delayed a bit, but I think we are making some great progress!
So check it out and tell me what you think :)
Guysss what's up! We have some progress towards Doom! We have our MyraOS first animation (So that means games are reallyyyy close). So that's really cool and nice progress, finally watching MyraOS starting to look alive!
So watch the first animation! (I swear it's not flickering on my screen).
Hello guys!! What's up! Tbh it's reallyyy cool doing all that graphics stuff. The graphics engine in my OS is getting more stuff right now.
So now I implemented the option to do basic lines and shapes!
And I also implemented double buffering, it's way better and gives more smoother visualization for later animations! (Or Doom!)
Right now, I can draw basic shapes, that would be the structure for our UI later!
I'll keep y'all updated :)
Well, it's so cool, I like it! Finally seeing colors after months of terminal! Right now I'm just playing around with it
What's up, everyone!! I have a great update for y'all :)
I added video mode, which means we can now draw pixels and do a real GUI! Right now, it's just a green screen. But it would become Doom in the future!
Heyyy, what's up! I shifted from our goal Doom a bit just for some QOL, check it out! I added a tty! Which means we have full operations support on our shell, just like the kernel shell had.
I promise I'll start with doom now!
What's up guyssss! We finally have some progress!!
I was stuck for a few days making the shell a process. I had a few problems that needed fixing about what I did earlier with the processing. But now it works! I have a working process shell! I'll do some improvements, and that means we could run Doom veryyy closely (I hope)
Thanks all :)
Hey guys!! Today I had a pretty small feature, I made the user libc, so now we can run external programs (Like Doom :D). Which is really cool! So that means we can start working on the main terminal of our OS, which would be in user space. And then start video mode, and start running Doom!!
Everyoneee!!! That's amazing! I have reallyyyy good news :) We are so close to running Doom!
Today I completed the multiprocessing part! Here is what I did:
I have finished multiprocessing and resolved all the issues. I implemented the scheduler, and now two processes can run concurrently. And I created a process crash handler; if a process crashes, it doesn't affect the kernel/other processes, and everything immediately returns to normal.
Now I need to complete the userlib, then the GUI, and then we will be able to run Doom.
I'll keep you updated!
You can see in the image that both processes run concurrently.
Hey guys! How are ya'll, tbh It's been pretty rough today...
I got a lotttt of multiprocessing issues while working on multiprocessing. It's really hard to debug as faults happen in random addresses. But I believe that I'm really close to finishing it! I'll keep you updated until I solve that. The code is completed and we just need a few small adjustments. Wish me luck tomorrow!
We would run Doom one day :)
In the image, we have the two processes I'm running (After they were compiled to ELF, and parsed with the ELF parser I did and talked about last devlog)
Guyssss what's uppp, we are getting wayyy closer to running Doom!!
Finallyyyy I have an ELF parser!! And now I can run processes with full segment support.
So... What's next?
Now we need to do multiprocessing, then we have video mode, and that's it, we would have doom in no time!
heyyyy guysssss, we have it!
The goal is back again! We are getting closer and closer to reaching Doom running on my OS.
Look at that beautiful process! We have now completed real processing, with all, CR3 switch, ring3, and TSS, it's a real proc now!
And it has everything a real process needs. Now we need to keep going with the ELF parser! And we would soon have Doom here.
I know it still doesn't really look amazing at a first glance, but after so many memory problems, syscall problems, and all other kinds of problems. We can finally see the Doom light approaching us!
I happily announce that I fixed my VMM problems; it took way too much time, but now I can finally move back to where we stopped and continue with the processing. Hopefully, with no more problems in the future.
Now I'll learn about all the relevant theory, which means I won't have more coding time until I finish researching, but I'll try to keep you updated with my way.
Thank you all!
heyyy
My goal is still to run Doom, even tho things got hard lately..
A lot of virtual memory management problems, but it would be fine in the end.
Right now, I have implemented a higher half kernel, where the physical address of the kernel is:
0x10000, but it's mapped to every virtual address space for each process, which means each page dir contains the kernel at 0xC0000000. This approach is used in a lot of UNIX OS.
So that's cool, and it would help us with making the processes now!
In the screenshot, we can see the main part of the higher half kernel, the jump from the physical address 0x10000, which was identity mapped, to the higher half at 0xC000000. You can see the first part at the multiboot section, while the higher-half is at the text section.
I have bad news..
I'm still stuck on the higher-half kernel part. I do a ton of debugging, but it's quite difficult debugging so early in the boot and especially between jumps from phys to virt memory.
But I'm sure I'll figure out a way to do it! We'll get Doom running one day.
(In the image you can see what I'm trying to debug until 4 am)
What's up, guys?
My Goal: Running Doom.
Today it seems way harder to achieve my goal of running doom..
I switched to GRUB from my bootloader, and I'll try to keep fixing all the problems with the virtual memory after that.
Right now, we have GRUB.
Hello everyone! My Goal: Running Doom.
Now I have another feature, it's an extension of the last feature I had, now I have processes!
That means we can later implement multiprocessing, which is pretty cool.
I'll keep y'all updated ;)
Hello everyone! My Goal: Running Doom.
Today, we have another feature close to being ready to run Doom!
I implemented a few things during this sprint:
TSS, Syscalls, and user space!
Now we are able to run code from ring 3 and jump between rings.
I'll keep you updated on my journey! :)
Hello everyone!
My Goal: Running Doom.
Today I have full read support in EXT2!
It's amazing that we can read files now, and it will get us way closer to achieving the goal of running Doom. It was a long feature with lots of theory and debugging hours. But I finally made it!
So... What's next?
Now I'll take a break from EXT2 a bit as write support is wayy harder.
So the next thing we should do is the User Space!
A x86 Unix-like OS made entirely from scratch. Funny promo video for MyraOS: https://drive.google.com/file/d/143Xu3nv00AmYucIdzWTfGQHSsnJWB3Sn/view?usp=sharing Features - Protected mode (GDT/IDT, ISRs/IRQs) - Paging and virtual memory - Memory management - Heap and dynamic memory - User-mode (ring 3) and kernel mode (ring 0) - Processes and scheduling - Drivers (PIT, RTC, Keyboard, Mouse, Framebuffer, PATA) - ext2 filesystem - UI compositor with window widgets, labels, icons, buttons, and even a custom-made font - ELF loader, which gives you the ability to run real apps All these features let you run real games, just like Doom, giving the preloaded Doom port in MyraOS ready to be played! So, this isn't just a toy OS or a look-alike, it's a real OS that can run on real devices! Thank you for reading :D I hope you like it
This was widely regarded as a great move by everyone.