📜 ⬆️ ⬇️

First public performance of RTOS Systemicus + video

image

Good night, Habr!

I think it's time to post the first video and the first information about your operating system, completely written on flat assembler. I know that much has already been written and done like this, but I think that fans of this topic will be a bit interesting.
')


So, I'm testing the whole thing on QEMU with 48 megabytes of RAM, but the whole system works well on 8 megabytes (including the graphical shell). The requirements for the hard disk are also small - the core itself takes 64 kilobytes (in fact, 20-24 kilobytes, but due to the specifics of my file system, I fill in the rest of the space with zeros up to 64kb.).
The required files also include 4 libraries, such as user32.dll, kernel32.dll and omfs3.dll (there is also network.dll, but so far I have abandoned the network ...). Also, you need the presence of two fonts - for the terminal and graphics. + terminal program and graphical environment program.

Immediately make a reservation. All programs are compiled into the Windows PE GUI format and the PE console. Those. they can also be run on Windows, the only catch is that my dll format is incompatible with the Windows DLL format. From this it follows that you can add similar libraries under Windows (with the same functions) and all programs can be ported to Windows. Similarly, if I write libraries (more precisely rewrite) under Systemicus, then Windows programs can work on my OS. By the way, the samples were mainly only with the functions of MessageBox and other trifles. But that's not the point.

The next point is the use of its FS - OMFS-3. Its distinctive feature is the built-in end-to-end encryption system (GOST + RC6 in conjunction with GOST 34.11-2012 Stribog. Everything is also assembler). Moreover, when forming the boot image, the system files are not encrypted, but after any operation (for example, copying a file) the final file is already encrypted. This is not a limitation of the FS, it will be very difficult to encrypt this data during compilation when assembling the boot image, even on the fasm macro. Since Since all the logic and functionality is crammed in omfs3.dll, then I plan to do something like LeanfsGUI later, but for OMFS3.

Of the essentials that I intend to do in the near future is RealMode Int, desktop optimization (as long as there are problems with speed, I haven’t optimized its code yet, because I finished it just yesterday), porting the fasm to Systemicus (+ several other applications), int 0x21 support (at least - to run some file manager and several games under DOS). In the future, I still want to add support for the minimal WinAPI functions to my DLLs, not so much for compatibility with Windows, as for reasons of economy, in order not to rewrite the code of some applications. Thank God, there is some groundwork, I have already launched a couple of simple console Windows applications on Systemicus.

Here it is. If this is interesting to someone, I will write further about the progress in the development + I will lay out the most interesting difficulties I have experienced in the implementation of some things. For example, the implementation of PE + DLL support helped me a lot to understand how this bundle works in Windows, which helped me write a good PE packer for it ;-)

At the end - screencast of work ...

Source: https://habr.com/ru/post/219851/


All Articles