summaryrefslogtreecommitdiff
path: root/00_blog/00110_Fool-Operating-System/index.md
blob: 2e2514401b3cbd4bc8c628946400b45f4c969ae4 (plain)
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

![](scale_foolos0.png){}\
**Booting** the Kernel in frame-buffer mode

![](scale_foolos1.png){}\
**Shell** in text mode. 

![](scale_foolos2.png){}\
[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 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 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.