• Project log 8 (07.12.2023) - MaslOS2

    Marcel12/06/2023 at 23:11 0 comments

    Hello people!

    As you might have seen, there have not been any updates here for quite a while.

    Neither have there been many updates on the MaslOS Github repository.

    But you might have spotted a link to my new project, which is MaslOS 2!

    MaslOS 2 is essentially an attempt to fix some of the shortcomings of MaslOS.

    Those mainly being the usage of other programs and scheduling.

    Modifying MaslOS to support ELF-Programs is a really really really bad idea and would be a massive pain, so I have chosen to essentially rewrite the basics to have a Scheduling and ELF infrastructure. 

    This has taken a bit of time, but I am now approaching a good state, with the desktop having a lot of functionality, apps having gui support and a few apps already ported from MaslOS.

    From the outside MaslOS2 might look identical to MaslOS but the internals are very different.

    There are still a lot of things I am working on and features that are missing but I am working on it.

    Here is an image of the current state of MaslOS2: (on actual hardware ofc)

    More apps ported

    I will probably start a new project on here aswell and post updates there.

  • Project log 7 (15.07.2023) - Refactoring, Serial Port, Suffering and a new Audio System

    Marcel07/15/2023 at 18:20 0 comments

    Hoi ppl. 

    It has been like 3 months but I haven't died yet!

    School has been a lot of pain so I didn't work much on the OS for the last few months.

    Buuuuuut recently I did!

    I started doing some stuff on like a midi format (which i then scrapped, but we'll come to that later)

    Soooo i refactored some stuff in the Github Repo and the code itself.

    Then I added support for the serial interface!

    (The serial thingy works in QEMU and on actual hardware with a serial port)

    Slight problemo: I have 2 PCs for testing: 1 has a serial port but I can't put expansion cards in it and one has no serial port but allows for expansion cards which I want for sound cards and later on maybe networking or something idfk.

    Well the solution is simple enough: buy a pci serial card! Which is what I did but trying to get it to work has given me a lot of pain. So I've currently stopped trying to get it to work. For now atleast. (If anyone is experienced in writing drivers for PCI serial expansion cards and especially the "PCIE to Dual Serial Ports and Printer Port Chip CH382" please let me know!!!!!!)

    Also with the serial interface comes more debugging possibilities.

    If the os now gets into a kernel panic, it will actually send the stack trace to the serial port and launch an interactive shell, where you can even restart the renderloop to possibly recover and save stuff! Also the OS reserves like 16MB of memory for safety reasons when it runs out of mem or the heap gets corrupted. And in total there are 4 different crash commands in the os now.

    And for the big thing of this update MaslOS now has an actually good sound system. I designed it from scratch, mostly because i was too lazy to look at how other operating systems do sound stuff. Also the OS supports the PC-Speaker, AC97, (and it did kinda support SB16 for a bit but then I found out about AC97 and decided to use that instead).

    Basically my Audiosystem allows for audio sources and destinations which have an audio buffer. That buffer has a specific sample rate, sample count, bits per sample and channel count. (Every source and destination has a buffer, where the stuff can be customized)

    And how my system basically works is that destinations steal the data from connected sources to replenish their buffer. Then they can play it until they are done and then they'll request more data. This can be a whole chain with multiple sources in between and it allows for destinations to have multiple sources connected at once without any issues. Technically you can also make a splitter source/destination thingy but that might have issues since the source is not sending the data so if a destination lags or is somehow slower than each destination could be affected, but it can be made, just i haven't yet bc laziness ig)

    So yeah, I think i might be doing it in like reverse order than how most systems work, but imo I think it works well and the system does make sense. Also the neat thing is, that the audio system actually natively supports lets say a 44Khz 16 bit stereo source playing to a 20khz 8 bit mono speaker and even an 8 bit mono source playing to a 16 bit stereo or mono or whatever destination. basically the audio system converts the buffers on the fly so you dont actually have to do anything, except for using the correct buffer settings.

    The OS also has a default input and output device. tho the input device is null since i dont really have any microphones hooked up or taken a look at the ac97 microphone thingy. also the default output device is the pc speaker, unless MaslOS finds an AC97 card and it will set that as the default output device!

    Also I did actually buy an AC97 sound card for my testing PC but that's not quite working yet. (It's in the pile of working in the VM but not on real hardware, like the PCI serial card and the AHCI Driver smh)

    Also I have added a music player which can play wav files!

    There is a bad apple music file on the main virtual disk created on boot. (the wav is like 20MB even converted...

    Read more »

  • Project log 6 (17.04.2023) - Birthday, DOOM, Audio and Gnomes

    Marcel04/17/2023 at 18:16 0 comments

    Hello!

    Yes, today is my birthday!

    Also added a cool loading bar that gets used by default, instead of the verbose boot.

    Also added an Image Viewer:

    (Stretched Gnome lol)

    Also added a simple Notepad:

    Oh yeah and also I did some stuff with the PC-Speaker.

    I can now "play" 1 channel MIDIs (hardcoded for now) on the PC-Speaker (even with chords!)

    It sounds meh but atleast it works.

    Also made a custom binary 1 bit audio file which the os can play. 

    So You can take a wav file, convert it to 1 bit, then convert it to my format and play it in the OS.

    I made a custom converter for it and maybe I'll share it later.

    Here is an audio sample.

    And I also added doom to MaslOS:

    Doom Port

    (Using this nice project: https://github.com/Daivuk/PureDOOM)

    It is playable (although has a few issues and also like made the iso 30mb of which 70% is used by DOOM)

    Actually idk if you can include the WAD file in the OS or not. I sure hope not lol.

    That's about everything that happened I think.

    Stuff I'm currently working on / planning to do: (mostly the same)

    - Improving MIDI thing maybe and making a file format

    - Improving Tetris

    - Adding The Debug Ram Viewer to the Start Menu

    - Maybe making a Debug Ram Image Viewer

    Stuff which is far away on my Todo:

     - Fixing AHCI Driver

     - Making Paint

     - Improving Notepad

     - Improving the Image Viewer

    - Making a GUI Taskmanager


    And ye that's it.

    Have a nice day!

  • Project log 5 (04.04.2023) - Bugfixes, Apps, RTC and more

    Marcel04/04/2023 at 00:12 0 comments

    Hello.

    Yes yes this blog still exists. Don't worry.

    A lot of school exams, trips, competitions and stuff happened but I also had some time to work on the os.

    Some cool things that happened:

    - I finally fixed a stupid bug that made the os crash randomly on random computers.

    - The OS now runs great on most 64 bit computers. (Even my laptop :D)

    - MaslOS now has a working RTC in the taskbar

    - The Taskbar is now improved and is always on top

    - There now is a working explorer showing files and folders. You can even click into folders

    - There is a Debug Ram Viewer now

    - There is a bad Tetris (WIP) now

    - Also the OS now boots verbosely (Even has a debug terminal :) and the log auto scrolls)

    Also I improved the rendering of GUI apps from making it rerender everything every frame to only rendering the "changes". It should be working fine and has increased performance with big windows by a ton!

    Stuff I'm currently working on / planning to do: (mostly the same)

    - Adding a quiet boot with like a loading bar maybe.

    - Improving Tetris

    - Adding The Debug Ram Viewer to the Start Menu

    - Maybe making a Debug Ram Image Viewer

    - Documenting Debug Ram Viewer and Explorer (atleast the commands to launch em)

    - Making a modified version of the explorer where i can open/select a file to load from/ save into.

    - Using those to make a Notepad app

    Stuff which is far away on my Todo:

    Fix ACPI Boot

    Fix AHCI Driver

    Making GUI Apps in the OS: (Either directly or using MAAL)

     - Paint

     - A GUI Taskmanager

     - Etc.

  • Project log 4 (17.02.2023) - More Fancy Stuff

    Marcel02/17/2023 at 19:36 0 comments

    A lot of stuff happened including school, holidays, and sickness.

    Buuut I added some cool stuff to the OS.

    Firstly I added a very basic way to load in external compiled ASM/C/C++ apps into MaslOS. For now it needs statically linked object files.

    For loading object files I followed a great cloudflare article from here.

    As a demo, I yoinked a raycaster from here and modified it to work.

    The raytracer crashes on real hardware for some reason but it does technically also work on real hardware due to the advanced amazing crash handling I added.

    Basically by doing some black magic, if my OS crashes with a GPF (General Protection Fault) which it often can't recover from, it will enter a special Render Loop where it still runs but limited. In there you should still be able to use your mouse and keyboard. Though for now the timer is broken. 

    So the OS should have a kernel panic less often and if it does crash and recover you should be able to see the actual reason.

    Also added a way to benchmark stuff: (Not really too useful rn I think but I'll see)


    Also added ACPI Shutdown from here (though it doesn't work on real hardware yet)

    Stuff I'm currently working on / planning to do: (mostly the same)

    Adding a Loading Bar when booting and making a verbose boot which actually shows stuff in detail and slowly.

    Making a thing that converts the benchmark data into an image which i can screenshot and then convert back on my normal pc to analyze stuff more closely. Especially when it crashes and even kernel panics!

    Stuff which is far away on my Todo:

    Fix ACPI Boot

    Fix AHCI Driver

    Making GUI Apps in the os.

    Either directly or using MAAL or the external apps.

    Some Examples:

     - Notepad

     - Paint

     - A GUI Taskmanager

     - Etc.

  • Project log 3 (29.01.2023) - Big Updates

    Marcel01/28/2023 at 23:31 0 comments

    I have finally merged the main repos together. Support on the UEFI version has been officially dropped.

    Also our school had an open house day and I showed off my OS there. It was stable and didn't crash on real hardware.

    I also finished most basic GUI Interfacing stuff in MAAL. And I made a pong game in MAAL and put it into the OS.

    It works nicely. Especially smooth on real hardware!

    I also added a Start Menu window and finally added functionality to the maximize window.

    For now MAAL still doesn't have functions or is like a DLL file but that's still on my Todo-List.

    Also for things I want to add soon I have a basic Audio Driver and maybe a network card driver.

    Stuff I'm currently working on / planning to do: (mostly the same)

    Edit MAAL completely so that its like a JAVA or DLL file.

    Maybe updating MAAL so that it has functions.

    Stuff which is far away on my Todo:

    Making GUI Apps in the os.

    Either directly or using MAAL.

    Some Examples:

     - Notepad

     - Paint

     - A GUI Taskmanager

     - Etc.

  • Project log 2 (16.01.2023)

    Marcel01/16/2023 at 20:39 0 comments

    School was very annoying with a bunch of exams so I didn't do too much EXCEPT for rewriting part of my kernel to work on BIOS systems. (It's not on Github yet and it'll be a massive pain to combine them but I'll do that sometime)

    Stuff I recently finished:

    Making MaslOS run on BIOS systems and testing it on real hardware. (Works surprisingly well on old laptops xd)


    Adding Support for creating/deleting GUI Components.

    Adding Window "API" for creating editing and deleting windows.

    Stuff I'm currently working on / planning to do: (mostly the same)

    Fix some bugs.

    Edit MAAL completely so that its like a JAVA or DLL file.

    Add Bindings to the GUI Framework so you can make GUI Apps in MAAL.

    Maybe updating MAAL so that it has functions.

    Stuff which is far away on my Todo:

    Making GUI Apps in the os.

    Either directly or using MAAL.

    Some Examples:

     - Notepad

     - Paint

     - A GUI Taskmanager

     - Etc.

  • Project log 1 (7.1.2023)

    Marcel01/07/2023 at 16:56 0 comments

    I have made a profile on hackaday and decided to make a project for MaslOS.

    d

    Stuff I recently finished:

    Making a simple console task manager.

    Making a base GUI Framework. You can see it when starting the OS.

    There is a Test GUI Window with a moving face, a button you can click and a Black rectangle which is actually a textfield if you click into it.

    Stuff I'm currently working on / planning to do:

    Adding Support for creating/deleting GUI Components.

    Edit MAAL completely so that its like a JAVA or DLL file.

    Add Bindings to the GUI Framework so you can make GUI Apps in MAAL.

    Maybe updating MAAL so that it has functions.

    Stuff which is far away on my Todo:

    Making GUI Apps in the os.

    Either directly or using MAAL.

    Some Examples:

     - Notepad

     - Paint

     - A GUI Taskmanager

     - Etc.