From 3330d41a73f84b1c3457699547708bea3746cc77 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Thu, 7 Aug 2014 18:59:49 +0200 Subject: Update and rename README to README.md --- README | 125 -------------------------------------------------------------- README.md | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 125 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index 64408bf..0000000 --- a/README +++ /dev/null @@ -1,125 +0,0 @@ -* vi: ft=markdown - -Welcome to FoolOS - -================= -Copyright M.Idziorek 2014 - -Disclaimer ----------- - -This is a simple and useless "operating system", with very basic -features, sorry. It is the fruit of my fundamental explorations of -the 32-bit protected mode, interrupt handling, memory management and -some other things. - -[![Screenshot of FoolOS](/screenshots/foolos.png?raw=true "FoolOs Kernel")] - - -NOTES -===== - -cli; disable interrupts -lgdt -lidt -sti; enable interrupts - -Linux Startup x86 -================= - -1. arch/x86/boot/header.S - -Contains the header and linux 16 bit code. - -This code should be entered with a bootloader at the address specified -within the header (as _start) which will put us at 'start_of_setup' - -Direct loading will put us at 'start2' at the very start which will -show an error message - -If everyhing goes right we will enter the 16-bit real mode C module -with: - -call main ; should not return - -2. arch/x86/boot/main.c - -void main(void) will do some checks and detections (cpu,mem,..) and -invoke: go_to_protected_mode(); - -3. arch/x86/boot/pm.c - -go_to_protected_mode() - will disable interrupts and set up the initial -idt and gdt descriptor tables before calling: protected_mode_jump() and -passing the address of code32_start. - -4. arch/x86/boot/pmjump.S - -back in assembly-world the actual transition is made inside -'protected_mode_jump' and we move on to 'in_pm32' where the data segment -is set up and we jmpl to the 32-bit entry point of the kernel. - -5. arch/x86/kernel/head32.c (assumption!?) - -void i386_start_kernel(void) - -6. init/main.c - -start_kernel(void) - -setup_arch()!! - -Interrupts -========== - -arch/x86/include/asm/irq_vectors.h each entry is 8 bytes - -ISA interrupts: - -0x30 0x0000 0x0000 0x0000 0x0000 -0x31 -0x32 -.. -0x3f - - -TODOS -===== - * study LINUX KERNEL - * GNU HURD - * MINIX - * FreeBSD etc. - -NETWORK -======= - - look at following linux drivers: - * e1000 - -notes -===== - -* posix - minimal set of function calls! -* distributed os -* caches L1,L2,L3 -* controller -> ide inteface of device -* probe memory! -* a20~ wrap - -* ssd card reader -* cobol fortran algol? compilers? - -* quotation: ontogeny nrecapitulates phylogeny - -* own simple sell - -check: -apertium? -clang -freebsd -user-mode-linux - -REFERENCES -========== - -http://www.brokenthorn.com/Resources/OSDev17.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a6ceb0 --- /dev/null +++ b/README.md @@ -0,0 +1,125 @@ +* vi: ft=markdown + +Welcome to FoolOS +================= + +Copyright M.Idziorek 2014 + +Disclaimer +---------- + +This is a simple and useless "operating system", with very basic +features, sorry. It is the fruit of my fundamental explorations of +the 32-bit protected mode, interrupt handling, memory management and +some other things. + +[![Screenshot of FoolOS](/screenshots/foolos.png?raw=true "FoolOs Kernel")] + + +NOTES +===== + +cli; disable interrupts +lgdt +lidt +sti; enable interrupts + +Linux Startup x86 +================= + +1. arch/x86/boot/header.S + +Contains the header and linux 16 bit code. + +This code should be entered with a bootloader at the address specified +within the header (as _start) which will put us at 'start_of_setup' + +Direct loading will put us at 'start2' at the very start which will +show an error message + +If everyhing goes right we will enter the 16-bit real mode C module +with: + +call main ; should not return + +2. arch/x86/boot/main.c + +void main(void) will do some checks and detections (cpu,mem,..) and +invoke: go_to_protected_mode(); + +3. arch/x86/boot/pm.c + +go_to_protected_mode() - will disable interrupts and set up the initial +idt and gdt descriptor tables before calling: protected_mode_jump() and +passing the address of code32_start. + +4. arch/x86/boot/pmjump.S + +back in assembly-world the actual transition is made inside +'protected_mode_jump' and we move on to 'in_pm32' where the data segment +is set up and we jmpl to the 32-bit entry point of the kernel. + +5. arch/x86/kernel/head32.c (assumption!?) + +void i386_start_kernel(void) + +6. init/main.c + +start_kernel(void) + +setup_arch()!! + +Interrupts +========== + +arch/x86/include/asm/irq_vectors.h each entry is 8 bytes + +ISA interrupts: + +0x30 0x0000 0x0000 0x0000 0x0000 +0x31 +0x32 +.. +0x3f + + +TODOS +===== + * study LINUX KERNEL + * GNU HURD + * MINIX + * FreeBSD etc. + +NETWORK +======= + + look at following linux drivers: + * e1000 + +notes +===== + +* posix - minimal set of function calls! +* distributed os +* caches L1,L2,L3 +* controller -> ide inteface of device +* probe memory! +* a20~ wrap + +* ssd card reader +* cobol fortran algol? compilers? + +* quotation: ontogeny nrecapitulates phylogeny + +* own simple sell + +check: +apertium? +clang +freebsd +user-mode-linux + +REFERENCES +========== + +http://www.brokenthorn.com/Resources/OSDev17.html -- cgit v1.2.3