@@ -7,7 +7,7 @@ Active and planned work is tracked in [notes.md](notes.md)
77For current specs see
88
99- [ memory.md] ( memory.md )
10- - ~~ [ boot_stages .md] ( boot_stages .md) ~~
10+ - [ boot .md] ( boot .md)
1111- ~~ [ filesystem.md] ( filesystem.md ) ~~
1212
1313## Goals
@@ -18,6 +18,21 @@ The OS will be finished when all of the following are implemented.
18182 . Compiler for at least Assembly or C
19193 . Playable Minecraft Clone
2020
21+ The following lists show the planned development stages and planned tasks to
22+ achieve these goals.
23+
24+ ### Near Near Term
25+
26+ - [x] Read extended kernel form floppy
27+ - [x] Switch to protected mode
28+ - [x] some stdio.h
29+ - [x] printf
30+ - [x] some string.h
31+ - [x] keyboard driver
32+ - [x] ata driver
33+ - [x] terminal with command parsing
34+ - [x] circular buffer + tests (builtin, needs separating)
35+
2136### Near Term
2237
2338- [ ] Kernel stats (stats command returns # disk io, keys, mounts, etc.)
@@ -45,6 +60,9 @@ The OS will be finished when all of the following are implemented.
4560
4661### Long Term
4762
63+ These tasks will be broken down further after completion of Near Term, when
64+ there is a better foundation and design to work with.
65+
4866- [ ] Switch to 2d graphics mode
4967- [x] Virtual memory pages / memory paging
5068- [ ] Memory permissions (eg. stack can't exec, code can't write)
@@ -57,73 +75,13 @@ The OS will be finished when all of the following are implemented.
5775
5876### Long Long Term
5977
78+ These tasks will be broken down further after completion of Long Term, when
79+ there is enough support for their development.
80+
6081- [ ] Graphics card driver (pseudo opengl)
6182- [ ] Threading / multi-process
6283- [ ] (Maybe) Multiboot or GRUB?
6384
64- ## Completed
65-
66- - Read extended kernel form floppy
67- - Switch to protected mode
68- - some stdio.h
69- - printf
70- - some string.h
71- - keyboard driver
72- - ata driver
73- - terminal with command parsing
74- - circular buffer + tests (builtin, needs separating)
75-
76- ## Boot Stages
77-
78- This describes the planned stages and steps, it does not represent the current
79- implementation or progress.
80-
81- ### BIOS
82-
83- 1 . Load boot sector into memory at 0x7c00
84-
85- ### Stage 1
86-
87- 1 . Store boot drive id
88- 2 . Setup stage 1 stack at 0x06fff
89- 3 . Read memory map to 0x500
90- 4 . Read stage 2 from boot drive
91- 5 . Setup GDT
92- 7 . Switch to protected mode
93-
94- ### Stage 2
95-
96- 1 . ~~ Move boot parameters out of first page~~
97- 1 . ~~ Set first page to throw error on access to 0~~
98- 2 . Setup ISR and IDT
99- 4 . Setup Memory Allocator
100- 1 . Physical Memory
101- 2 . Virtual Memory (paging)
102- 5 . Enable Paging
103- 6 . Load VGA driver
104- 1 . Clear screen
105- 2 . Print hello
106- 8 . Load ATA driver
107- 1 . Mount fs
108- 2 . Read kernel into page directory
109- 9 . Start kernel
110-
111- ### Stage 3 - OS
112-
113- 1 . Load drivers
114- 1 . VGA / 2d graphics
115- 2 . Keyboard
116- 3 . Disk
117- 4 . Filesystem
118- 5 . etc.
119- 2 . Mount os drive / partition? (does this happen in stage 2?)
120- 3 . Setup kernel service calls
121- 4 . Begin user space applications loop
122- 1 . Create page directory
123- 2 . Load elf binary
124- 3 . Switch to Ring 3
125- 5 . Shell
126-
12785## Setup
12886
12987``` sh
0 commit comments