GRU Devlog 28 - orion, E, LibWeb

March 06, 2022 — G1n

I think this weeks were productive. Last week I have accessed initrd on orion and printed tar archive files. Currently VFS is needed to be implemented and for that I need kmalloc.

Also several more functions were added to EGG E - set background color, drawing rectangles, lines, circles and maybe some other ones. Currently I don’t know how it will be made into real display server, but I hope that we will see.

I think the coolest project I was working this days is LibWeb. It is going to be library where web things will be implemented. Currently I am working on HTML tokenizer and parser. It already can tokenize and parse very simple page with head and body, but it is already very cool, because i started it just several days ago. Also I would like to implement CSS and maybe JavaScript (ECMAScript) there.

Also I thought about some other ideas - LibImage and LibJSON. I think after HTML it won’t be very hard to parse them, and they could help us in future when we will be making more GUI things.

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, orion, egg, e, libweb

GRU Devlog 27 - orion, binutils, E

February 20, 2022 — G1n

Previous week I was working on orion. Implemented serial support and page frame allocator. Also added some functions for serial for better debug output (warnings, todos, errors and other) Page frame allocator and deallocator will be needed when making memory manager. I am going to do that next week.

This week I started making binutils and E (from EGG). I am starting to write objdump. It already can disassemble some instructions, but for now it is very limited. Also yesterday I found why framebuffer wasn’t working and now E (maybe it will be “display server”) can write line on screen, but for some reason not more then one line.

I also had a lot of new ideas this week, but maybe they are just ideas. Compiled x86_64 gcc cross compiler, so maybe will be working on support of this arch soon. Also orion’s makefile is cleaner, so it maybe will be easier to port. I thought about making framebuffer support using GRUB, but first I need to implement memory manager I think.

I feel like I forgot something that I was working on, but maybe they are things that are not relaleted to GRU (but could be useful in future, for example for testing)

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, orion, binutils, objdump, e, egg

GRU Devlog 26 - new server, oircd, orion rewrite

February 06, 2022 — G1n

This 2 weeks were long for me. Previous week chunk donated domain and server for us so now this blog and webpage is avalible on https://gruos.org. Also i setupped mail there and tryed to setup irc network, but we don’t have services yet.

Also previous week I tryed to make hashmap and some other things for oIRCd, but it wasn’t really success.

This week i started developing Orion rewrite. It already has interrupts working and enabled paging. For now I don’t know how to make timer and keyboard working. Currently I am trying to write page frame allocator, it will open road to proper memory manager for us. I hope next few weeks I will focus on Orion.

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, oircd, server, orion

GRU Devlog 9 - orsh, orion, bootloader, GRU xmpp room and logo

September 26, 2021 — G1n

This week I didn’t commited a lot, but started some new projects. I made orsh signal handling working (so it won’t exit on ^C) and homedir “handling” (can replace homedir in prompt with ~, and you can use ‘cd ~’ or just ‘cd’ to change dir to homedir)

Also I started making bootloader, but for now it can only detect what CPU is (intel if x86 and amd if x86_64), some additional instructions (msr) and if apic is avalible.

I was trying to make something with orion fs, maybe it will use pak files for initrd. Currently i am making archiver for it, but after that i will need to understand more how vfs working and rewrite initrd to use pak files.

We now have xmpp room (gru@conference.hmm.st) and logo! Thanks to chunk for it!

I was thinking about making weekly or monthly “conferences”. We could do it via jitsi tildeverse instance or tilde.tel (tel.tilde.org.nz) conference. I think jitsi is better, but we should try tilde.tel confernce at least once, why not? :)

Hope you liked this post and you will join our XMPP muc :). If you would like to help me, contact me via email, xmpp or irc :)

tags: gru, orion, orsh, xmpp, tilde.tel, jitsi

GRU Devlog 8 - orsh and published initrd

September 19, 2021 — G1n

This week I have published initrd, but it is not working as expected.

Also I have started one more project - orsh. It is one more shell, but now in C. Maybe it will be easier to port to Orion. It already supports ; but they are working a bit weird.

Also in orsh you can work with environment variables. From today’s morning I am trying to replace bash with it, but still a lot need to be done.

Hope you liked this post and if you would like to help me, contact me via email, xmpp or irc :)

tags: gru, orsh, orion

GRU Devlog 7 - keyboard, paging and WIP initrd in Orion

September 12, 2021 — G1n

This week I was improving Orion. First I made keyboard working, next day paging! Also I have added several new LibC functions. Today I have made scrolling working.

Last few days I was trying to make initrd working (this required heap implementing so I also did that but I don’t know if it works correctly). Currently it can only output /dev directory.

But I made something wrong with %x in printf and it can display weird chars first and then contents of files!

Hope you liked this post and if you would like to help me, contact me via email, xmpp or irc :)

tags: gru, orion

GRU Devlog 6 - yemu, published gxt and interrupts working in Orion

September 05, 2021 — G1n

This week I have published gxt, but it currently works as more (only down scrolling). Also it has a lot of of runtime error (Segmentation fault and others).

I have started working on yemu - Yet another EMUlator. It currently supports only 6502 proccessor with tiny number of instructions (LDA, LDX and LDY)

Today we have fixed interrupts in Orion and now I can implement timer, paging, keyboard and a lot of other things (thanks to quinn and smlckz from tilde.chat)

Hope you liked this post and if you would like to help me, contact me via email, xmpp or irc :)

tags: gru, gxt, yemu, orion

GRU DevLog 3 - Orion and dreams about GRU software future

August 15, 2021 — G1n

This week I was trying to make interrupts, paging and other memory things working in Orion. I found this guide and tried to follow it without rewriting the whole project: http://www.jamesmolloy.co.uk/index.html

For now only Global Descriptor Table maybe working.

My current goals/dreams:

  • make filesystem (the coolest would be make Ext2 driver)

  • build GCC hosted compiler (this will help GCC understand our OS better)

My very future dreams:

  • make kernel, libs, ports and soft in different repos

  • make proper way to make “distros” on our kernel

  • make some website with mirror of ports scripts (like in Serenity OS but not in one repo with everything and tool for searching and downloading ports from that mirror)

  • maybe (if i will work a lot on this projects) I’ll make one more account on tilde.team for our organisation (domain name - gru.ttm.sh, is cool), but i’ll ask admins about that

Also I think Orion need new name because i found several projects with this name :)

Some ideas about the GRU name:

  • GRU rocks (or rocking) UNIX

  • GloRious UNIX

  • GloRious Union

If you can help me or have some ideas (name/names or anything else) contact me via email or any other type of contact (irc: g1n on tilde.chat, xmpp: g1n@hmm.st)

tags: gru, orion, dreams

GRU DevLog 2 - Orion

August 08, 2021 — G1n

This week I was developing new OS - Orion.

I don’t understand very basic osdev thing so I decided to make OS on C and Asm. Currently that can just output text (with printf arguments) on screen and serial. Now gros is much cooler than Orion - it has input, interupts and a lot of else. But maybe I’ll understand OSdev better. Currently working on GDT (global descriptor table) and than will work on interrupts and exceptions.

Of course if you can help me contact me throught email or in other ways!

tags: gru, orion