Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/netromdk/doors
Doors of Open Run-time Systems (OS)
https://github.com/netromdk/doors
32-bit cpp cpp11 grub2 iso kernel os-dev qemu
Last synced: about 21 hours ago
JSON representation
Doors of Open Run-time Systems (OS)
- Host: GitHub
- URL: https://github.com/netromdk/doors
- Owner: netromdk
- License: gpl-3.0
- Created: 2015-03-23T10:05:03.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2015-04-19T19:12:04.000Z (over 9 years ago)
- Last Synced: 2024-12-18T06:49:31.771Z (13 days ago)
- Topics: 32-bit, cpp, cpp11, grub2, iso, kernel, os-dev, qemu
- Language: C++
- Homepage:
- Size: 1.62 MB
- Stars: 2
- Watchers: 4
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Doors
The meaning of the name is the recursive accronym "Doors of Open Run-time Systems".# Concept
The challenge was to write a 32-bit OS using C++11 aiming for paged memory, exceptions/interrupts support, and a keyboard driver. Then dropping into a simple shell for processing simple commands like querying CPU information, uptime, memory available/used, start/stop/monitor timers etc. Maybe being able to play a simple "Snake" game or similar.
Things to look into later:
* Floating-point number support ([IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-1985))
* Multi task scheduling
* Real-Time Clock/CMOS support
* Harddisk driver (supporting FAT32 or EXT2 to make it possible to install to disk and boot from it)
* Mouse driver
* USB drivers (general concept)# Usage
The buid system uses Makefiles with the following usage (`make help`):
```
=== Doors Makefile ===
Development: build, test, tags, clean-tests, clean-tags, clean, clean-all
Emulation: run, run-iso
Distribution: iso, zip, tgz, bz2, xz
```Before you `build` take a look at "config.sh". It will use the `ARCH-ABI-*` GNU programs, e.g. i386-elf-g++, i386-elf-as, i386-elf-ar etc. Right nown there is only support for i386.
`run` will build and use QEmu to run the kernel directly.
`run-iso` will build, create ISO and use QEmu to load the ISO as a CD-ROM. Note that to create the ISO it uses `grub-mkrescue` which requires [GRUB 2+](https://www.gnu.org/software/grub/) and [xorriso 1.3.8+](https://www.gnu.org/software/xorriso/).
# References
* [Intel i386 manuals](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) ([PDF](http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf))
* [Logix's i386 reference](http://www.logix.cz/michal/doc/i386/)
* [Modern Operating Systems](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/ref=sr_1_1?ie=UTF8&qid=1428699443&sr=8-1&keywords=Modern+Operating+Systems) (book)
* [Operating Systems Principles](http://www.amazon.com/Operating-Systems-Principles-Lubomir-Bic/dp/0130266116) (book)
* [osdev.org](http://wiki.osdev.org/Main_Page)