copyright (C)1997-2017 online ^ microbe.cz
This code is a hack. We can not and will not be responsible for any nasuea, dizziness, vomiting, or shortness of breath resulting
from reading this code. Pregnant women and individuals with back injuries, heart conditions, or are under the care of a physician should not read this code.
:: what is (or what should be) MicroBe ?
- hobby operating system written entirely in 100% pure x86 assembly
- uses 32-bit protected mode only
- developed since 1997 (with really huge time gaps)
:: why ?
- why not ?
- to learn how things work
- to show that it's possible and that it works
- protected mode setup
- memory manager with paging enabled (virtual memory)
- task scheduler - multitasking
- FDC driver
- ATA/ATAPI driver
- working FAT support (reading/writing), possibly EXT2 ?
- driver for NIC (Intel or 3COM ?) TCP/IP stack ?
- VGA mode switching
- CRT driver (printf, etc.)
:: already done
- protected mode setup
- memory manager without paging
- FDC driver, nearly complete
- ATA driver (PIO mode only)
- FAT-12 and FAT-16 reading
- VGA mode switching, basic VGA modes only
- very basic CRT, has to be completely rewritten
- very basic Intel 8254xx NIC driver (able to receive/transmit packets, tested in Bochs)
- bootloader - using FreeDOS "sys" utility
:: roadmap (near future development steps)
- debugging, error catching, testing on various hardware (priority 1)
- implementation of FAT12/16/32 in one driver, complete rewrite of the current driver probably (priority 1+)
- FAT16 write functionality (priority 2)
- multitasking (priority 3) - currently only one ring 3 task exists (the TSH shell), no switching implemented yet
- Realtek RTL8139 NIC driver (receiving/transmitting of packets) (nice to have)
- VirtIO NIC driver (receiving/transmitting of packets) (nice to have)
- SATA AHCI driver (priority 2)
:: developer's notes
Bochs floppy has no errors
In a normal PC, it's common to issue up to 3 read commands on a sector/track before it can be read fine. If you don't have proper error check/recovery in your bootsector, you're likely to run something that is not your kernel...
Bochs together with Oracle VirtualBox seems to be a very idealistic piece of virtual hardware :-D
Kernel development is the brain surgery of programming. (thepowersgang @ osdev.org)
ACPI really sucks ! And I am not the only one who has this impression - see Linus's comments on ACPI here or see his another comment on same topic:
Modern PCs are horrible. ACPI is a complete design disaster in every way. But we're kind of stuck with it. If any Intel people are listening to this and you had anything to do with ACPI, shoot yourself now, before you reproduce.
:: programming documentation & interesting links
Demo OVA appliance (can be easily imported to Oracle VirtualBox), version 0.2 Build 2017-03-04 Rev 186
To be reconsidered
Currently exported function list (presented via software interrupt to the apps) is here (outdated)
:: svn log
:: end notice
Are you interested in details or do you want to help ? Feel free to drop me a message at online (at) microbe (dot) cz
optimized for reading with eyes & ELinks