1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
Fool OS
=======
Welcome to my little buggy **x86 toy operating** system.
This is a never ending work in progress, motivated solely by my
bottomless curiosity.
Be warned that most features are unstable and in development.
## Features v0.2
* Booting with Multiboot (Spec. 0.6.96) (e.g. GRUB 2)
* Rudimentary POSIX compilance
* 32-bit protected mode
* Logging to COM1
* Parsing ACPI (incomplete) and Multiboot Data
* Symmetrical Multiprocessing with LAPIC and IOAPIC
* CMOS Clock/ PIT Timer / APIC Timer
* Seperate GDT and IVT for each CPU
* Paging / Virtual Memory
* Ext2 RAM Disk
* Pipes
* Standard streams (stdin/stdout/stderr)
* PS2 Mouse/Keyboard support
* Multi-threading & Multitasking
* Kernel and Userspace Tasks
* CPU Private Memory
* Support for ELF binaries.
* IRQ Handling Framework
* Finegrained Spinlocks
* Superfast Task Scheduler
* PCI Bus scanning
* Ethernet E1000 PCI Driver
* VESA Framebuffer with fallback to a text-only terminal
* C-library for Userspace (Newlib)
* Simple Network Stack (ARP, IPv4, ICMP, UDP)
* Compositing Window Manager
## Userspace Ports and Programs
* Simple Fool-Shell
* Snake Game
* Newlib C library
* ncurses
* ncurses-examples
* vim
* zlib
* libpng
* many more to come...
## Screenshots
{.img-fluid}\
**Booting** the Kernel in frame-buffer mode
{.img-fluid}\
**Shell** in text mode.
{.img-fluid}\
[click here for full-resolution version of pic above.](foolos2.png)\
My **Compositing** Window Manager in action. As you see **Fool-OS** ships
with **vim** and some little **ncurses-examples** as well as a
**Brainfuck** interpreter.
## Videos
<video style="width:60%;min-width:100pt;" controls>
<source src="pipes.mp4" type="video/mp4">
<source src="pipes.ogv" type="video/ogg">
Your browser does not support the video tag.
</video>
Demonstrating the Kernel's **piping** functionality, inside the shell.
<video style="width:60%;min-width:100pt;" controls>
<source src="compositing.mp4" type="video/mp4">
<source src="compositing.ogv" type="video/ogg">
Your browser does not support the video tag.
</video>
Some random **ncurses** programs (from ncurses-examples) running inside **Terminal Emulators**.
## Git Repository
* [Fool OS - Git Repository](https://gitweb.softwarefools.com/?p=miguel/fool-os.git)
## Disclaimer
THIS IS A NEVER ENDING WORK IN PROGRESS.
This is a simple and useless "operating system", with a very basic
set of features. It is the fruit of my fundamental explorations of
the x86 architecture and operating system design.
Copyright 2014,2015,2018 M.Idziorek <m.i@gmx.at>, unless stated
otherwise or forgotten.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
|