{"id":15571020,"url":"https://github.com/netromdk/doors","last_synced_at":"2025-06-17T10:04:52.356Z","repository":{"id":29193073,"uuid":"32724220","full_name":"netromdk/doors","owner":"netromdk","description":"Doors of Open Run-time Systems (OS)","archived":false,"fork":false,"pushed_at":"2015-04-19T19:12:04.000Z","size":1700,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-10T10:18:31.680Z","etag":null,"topics":["32-bit","cpp","cpp11","grub2","iso","kernel","os-dev","qemu"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netromdk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-23T10:05:03.000Z","updated_at":"2020-06-11T04:14:33.000Z","dependencies_parsed_at":"2022-08-17T19:40:49.939Z","dependency_job_id":null,"html_url":"https://github.com/netromdk/doors","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netromdk%2Fdoors","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netromdk%2Fdoors/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netromdk%2Fdoors/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netromdk%2Fdoors/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netromdk","download_url":"https://codeload.github.com/netromdk/doors/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276097,"owners_count":20912287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["32-bit","cpp","cpp11","grub2","iso","kernel","os-dev","qemu"],"created_at":"2024-10-02T17:53:17.450Z","updated_at":"2025-04-05T01:44:50.803Z","avatar_url":"https://github.com/netromdk.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doors\nThe meaning of the name is the recursive accronym \"Doors of Open Run-time Systems\".\n\n# Concept\n\nThe 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.\n\nThings to look into later:\n* Floating-point number support ([IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-1985))\n* Multi task scheduling\n* Real-Time Clock/CMOS support\n* Harddisk driver (supporting FAT32 or EXT2 to make it possible to install to disk and boot from it)\n* Mouse driver\n* USB drivers (general concept)\n\n# Usage\n\nThe buid system uses Makefiles with the following usage (`make help`):\n```\n=== Doors Makefile ===\nDevelopment: build, test, tags, clean-tests, clean-tags, clean, clean-all\nEmulation: run, run-iso\nDistribution: iso, zip, tgz, bz2, xz\n```\n\nBefore 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.\n\n`run` will build and use QEmu to run the kernel directly.\n\n`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/). \n\n# References\n* [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))\n* [Logix's i386 reference](http://www.logix.cz/michal/doc/i386/)\n* [Modern Operating Systems](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/ref=sr_1_1?ie=UTF8\u0026qid=1428699443\u0026sr=8-1\u0026keywords=Modern+Operating+Systems) (book)\n* [Operating Systems Principles](http://www.amazon.com/Operating-Systems-Principles-Lubomir-Bic/dp/0130266116) (book)\n* [osdev.org](http://wiki.osdev.org/Main_Page)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetromdk%2Fdoors","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetromdk%2Fdoors","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetromdk%2Fdoors/lists"}