This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Hey guys!
After more than 5 months since my last release, I finally make another alpha release of xOS. A lot can happen in 5 months, and a lot has happened. New things:
Rewrote AHCI driver - boots from SATA on QEMU, VirtualBox and real HW.
Reworked GUI - wallpaper, transparency, and shell.
Graphical toolkit and applications to demonstrate, including calculator.
Loading programs from disk.
Performance improvements everywhere.
(Incomplete) ACPI AML interpreter.
Other small things I can't think of now.
I've also moved to the MIT license instead of the GPL. Here's the GitHub release. Your feedback is greatly appreciated!
You know your OS is advanced when you stop using the Intel programming guide as a reference.
It reminds me of KolibriOS. Great operating system! I would love to see you have a file manager and to be able to install it on hard disk with ISO. Did you use jmp word 0xffff:0000 for reboot? By the way, where's the shell?
One day in the future... computers will be holograms...
stevej150 wrote:It reminds me of KolibriOS. Great operating system! I would love to see you have a file manager and to be able to install it on hard disk with ISO. Did you use jmp word 0xffff:0000 for reboot? By the way, where's the shell?
Thanks! A file manager is coming soon, but ISO and CD/DVD support is rather far down in my to-do list. For reboot, I use the PS/2 controller (writing 0xFE to port 0x64) but ACPI reset will be implemented in the coming time, for better real hardware compatibility. The shell doesn't mean a traditional "terminal"; I have a graphical shell. The start menu and taskbar are parts of the graphical shell.
You know your OS is advanced when you stop using the Intel programming guide as a reference.
It does not seem to track the active window properly when a mouse button is depressed. When a window is dragged too fast, or the mouse pointer is too close to the title bar border, the GUI tends to stop updating the window position (and mouse input is delivered to the window under the mouse pointer instead).
Also, it's possible do move a window when the mouse pointer is completely outside that window. To reproduce: open a window. Start moving the window by dragging it's title bar. Rapidly move the mouse pointer upwards. The GUI stops updating the window position despite the mouse button is not released. Move the mouse pointer to the left or right of the window. The GUI suddenly resumes to update the window position even though the mouse pointer is outside the window.
Finally, when the left mouse button is depressed and the mouse pointer is moved over a button in the calculator app, the app responds as if the button was clicked each time the mouse pointer is moved inside a button. This leads to inadvertent entry of digits when trying to quickly enter numbers into the calculator.
I noticed the same things in the GUI, and also crashed the graphical shell by opening many applications, I left the serial outputs in an issue on your github release.
stevej150 wrote:It reminds me of KolibriOS. Great operating system! I would love to see you have a file manager and to be able to install it on hard disk with ISO. Did you use jmp word 0xffff:0000 for reboot? By the way, where's the shell?
Thanks! A file manager is coming soon, but ISO and CD/DVD support is rather far down in my to-do list. For reboot, I use the PS/2 controller (writing 0xFE to port 0x64) but ACPI reset will be implemented in the coming time, for better real hardware compatibility. The shell doesn't mean a traditional "terminal"; I have a graphical shell. The start menu and taskbar are parts of the graphical shell.
You mean - in 0x64, 0xFE?!
How did you learn to do all this OS development? Where did you learn? It's amazing.
Last edited by stevej150 on Sat Jan 28, 2017 2:10 pm, edited 3 times in total.
One day in the future... computers will be holograms...
Thanks for testing! pdurlej: I know about the window manager problems. I'm going to rewrite the window manager event handler soon, and these issues should be gone. sleephacker: I've commented on your GitHub issue, explaining why the problems you mentioned happened. I'll be sure to fix that soon, too.
You know your OS is advanced when you stop using the Intel programming guide as a reference.
stevej150 wrote:By the way, I will make applications for you, ok?
Feel free to experiment as you like; however, there is still no real documentation for the kernel API, and the source code is as close as you can get to documentation. I wouldn't encourage you to write actual applications yet, though, as the APIs are still under early development and change often and other things are just plain missing (e.g. textbox component, hierarchy support, etc...)
You know your OS is advanced when you stop using the Intel programming guide as a reference.
stevej150 wrote:I might make applications. By the way, how did you learn all the OS development? I might join you and help you develop! We can work on parts.
I learnt mostly from the OSDev Wiki, and reading documentation when the OSDev Wiki was insufficient, and posting here as a final resort.
f2 wrote:I noticed the same bugs too. However, the GUI is pretty fast, at least on VirtualBox.
One suggestion: you should add a border around your windows
Thanks! The window theme can be configured. At the moment, the OS doesn't load a configuration file from the disk, but you can change the values at the top of kernel/gui/wm.asm to suit your liking and add a border. Most of them are self-explanatory.
; Window Theme!
; TO-DO: Set these values from a theme file from the disk (i.e. make the gui customizable)
align 4
wm_color dd 0x808080
;wm_color dd 0x004288
window_title dd 0xFFFFFF
window_inactive_title dd 0xC0C0C0
window_border dd 0x383838
window_active_border dd 0x383838
window_active_outline dd 0x00A2E8
window_close_color dd 0xD80000
window_background dd 0xD0D0D0
window_opacity db 1 ; valid values are 0 to 4, 0 = opaque, 1 = less transparent, 4 = most transparent.
align 4
window_border_x_min dw 0 ; min x pos for a 0 width window
window_border_y_min dw 24 ; min y pos for a 0 height window
window_close_position db 0 ; 0 = left, 1 = right, for now this has no effect
align 4
window_close_x dw 4
window_close_y dw 4
window_close_width dw 16
window_close_height dw 16
window_title_x dw 24
window_title_y dw 4
window_canvas_x dw 0
window_canvas_y dw 24
You know your OS is advanced when you stop using the Intel programming guide as a reference.
Works great, aside from the issue with fast window dragging (which was mentioned earlier), works neat.
An issue I experienced in the calculator is when dividing with zero, it just closes instead of giving an error.
I see you currently have a bitmap font, are you planning on implementing TTF font rendering or something along those lines later?
Also, I suggest you to not include binary files in your github repository (disk.hdd).
Great work, keep going
ndke wrote:Works great, aside from the issue with fast window dragging (which was mentioned earlier), works neat.
An issue I experienced in the calculator is when dividing with zero, it just closes instead of giving an error.
I see you currently have a bitmap font, are you planning on implementing TTF font rendering or something along those lines later?
Also, I suggest you to not include binary files in your github repository (disk.hdd).
Great work, keep going
Thanks for your feedback!
The issue with window dragging will be fixed soon; some other WM bugfixes have been done today. The calculator issue is also fixed now; it didn't use to check for divide by zero, and so it would cause an exception and the kernel would terminate the faulting application.
About TTF, I would probably implement this later in userspace, but it's far down in my to-do list.
The disk image in my GitHub repository is there to be the "latest nightly build." or the binary of each commit I push because I don't really commit every night.
You know your OS is advanced when you stop using the Intel programming guide as a reference.
Is checkbox/combobox/multiline textbox controls implemented, or it's only showcase?
Thanks!
No, the only components implemented at the moment are label, button and gbutton (which is basically a button whose look can be enhanced). The text box is my next coming priority, and then the list box, as both are needed for the file manager I have in mind, and the text box is the main thing in a text editor as well.
You know your OS is advanced when you stop using the Intel programming guide as a reference.