James T. Klik: Difference between revisions
[unchecked revision] | [unchecked revision] |
Content deleted Content added
m Remove the need for using a redirect in the "What order should I make things in" link, also capitalized a link |
No edit summary |
||
(17 intermediate revisions by 11 users not shown) | |||
Line 1:
Look through the window ... See that background with alpha-blending and my anti-aliased fonts
== Reaching Klik's level ==
=== Step 1: Documenting on video ===
# Read about [[VGA Resources]] and [[GRUB]]. You have the opportunity to let the bootloader switch to graphical mode for you before your kernel is started. A color depth of 32 will avoid you further headaches.
# Develop (or reuse) a small library to draw lines, fill areas, copy bitmaps and draw text '''out''' of your kernel, debug it, '''then''' integrate it in your OS.
# Find a friend to make a neat logo, ask GRUB to load it as if it was a module, memcpy it to screen and voilà. You can release 0.1
Line 20:
It is time to draw small windows on screen. We had many discussion in the forum about how they can be moved efficiently and so on. Note that you'll '''really''' start to need a way of [[Memory Management|allocating and freeing memory]] at this point, as you do '''not''' want to assume that there's a maximum of N buttons in the system ...
# Collect tutorials about GUI programming, including [http://osdever.net/tutorials/GUI_tut.php?the_id=62 GUI Programming] at BonaFide.
# Create a class that will be responsible for receiving event from the system, including the "repaint" event.
# If you want 'windows', let there be a window manager that send them 'repaint' events when needed, handle window displacement and is in charge of "what's behind the window".
# make sure you can add content to your window, and that you don't need to write a specific "repaint" function for each new content. Most
== Outrunning James T. Klik ==
=== Have programs loaded in memory
And provide a
=== Have user-level programs executed when requested
The easiest approach is to create a segment for the user's code and one for its data. Then return to the program. You can even not worry about multitasking and decide every kernel operation will occur when an interrupt arise (that's how DOS works), but you will at least have '''1a. implement interrupts support''' and '''1b. implement basic segmentation support'''. If you're fine with
=== Have the kernel access hardware
It should at least be able to receive the keyboard data (and translate them
Required steps are '''2a. video driver''' (get a frame buffer), '''2b. mouse driver''' (have a cursor moving on screen) and '''2c. keyboard reader''' (have keystrokes translated and written to some memory area).
=== Build the menu at run time ===
Line 48:
This requires '''3a. Process control''': select which program is currently running and '''3b. Process sleep & wakeup''': let the application decide that it have nothing to do but waiting something to happen and let the kernel return to the application only when something occurred.
Note that this will only offer you something like
== James' Bookshelf ==
Line 54:
== James T. Klik opponents' position ==
If you're wondering how you'll implement the 'start button' and its menu right from the start, you're probably getting things by the wrong end... When you want to make a word processing program, you don't ask yourself how you will have icons for "save", "print", etc. in a bar that you can move across your window. You first ask yourself how you will represent text, how you will implement basic operations like extracting text from one paragraph and put text into another one, how you will deal with embedded objects like pictures, etc. or how you will store your text efficiently on a file. Basically, you'll work yourself like that slow horse in the pack if you don't have a good kernel with [[What order should
Also, many proponents of [[protected mode]] find VESA unattractive, since you need some sort of hook into the BIOS.
== People and OSes related to James T. Klik ==
* [[User:Combuster|Combuster]]
* [[User:Novayoshi|NovaYoshi]]
* [[User:osdeverr|osdeverr]]: "Me back in 2015... Now I blame myself for that TBH."
* [http://omarrx024.github.io omarrx024]
* [http://www.oby.ro/os/ Bogdan Ontanu, Solar_Os, GUI, Widget toolkit and running loaded PE from disk]
* '' insert your names here ''
[[Category:Developer Archetype]]
[[Category:Graphical_UI]]
|