-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathChangeLog
113 lines (99 loc) · 3.29 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
2011/10/04
1.
add the enable a20 in kernel16.S. Enable the a20 is important when change
from realmode to pmode.
2.
add mem820 in kernel16.S. Now the kernel can know the status of the physical memory.
3.
mask almost all the irq except one.
Will load the idt in the future.
4.
add a flush_screen function to clear the screen.
5.
add a strcture mem820 to handle the physical memory status.
2011/10/03
1.
change the boot.S code. Now the kernel code is loaded in 0x90000.
And a long jump jumps to it.
2.
change the kernel into two parts one is kernel16 and another is kernel32.
kernel16 is the setup code which will change the system into protected mode
and move the kernel32 code to 0x100000.
3.
kernel32 is the first code written in C in this project. Now it will only
print a hello world!! in the screen. :P
2011/10/02
1.
add a gdt table for the kernel.
2.
modify some of the scripts.
2011/10/01
1.
remove the video.h and some video base code since I decided to
move the video code to protected mode. Much more easy to manage.
2.
add some code to the kernel, and ready change to pmode.
3.
add two link script in both kernel and boot directory.
4.
fix some code in boot.S and kernel.S. The set segement register part,
I decided to use linker to set the offset, and therefore there
is no need to set segement register in both boot.S and kernel.S.
2011/8/04
1.Add some macro to handle the string printing and cursor handling
a.macro print_char text
print a single character in the screen
b.macro position_4_print position
calculate the position byte of the text mode according to coordinate.
c.macro position_4_cursor position
calculate the position byte of the cursor according to coordinate
d.macro set_cursor position
set the cursor
servel bugs discovered
1. the update_text_coordinate cannot handle the row properly when the column reach the max
2. position_4_print macro: when the row is not zero or the column number is too big, the output is weird.
*bug fixed: a row is 160 bytes instead of 80 bytes
2011/8/03
Add:
in Kernel.S
a simple print_msg driver in 16 bit realmode kernel.
Now the kernel can print text without using bios interrupt.
2011/07/12
1.
modify:
I modify some of the code in the bootloader. Add some Macro.
reason;
increase the readability.
2011/06/28
1.
add:
new function called (lba2chs) in the bootloader.
reason:
this way it can calculate the lba mode to CHS mode.
2.
bug:the algorithm that I write in the lba2chs is wrong. and
casusing the bootloader can't load the kernel image into
memory.
fix:
a. addw $1, %ax => addw $1, %dx
b. del servel code since they are useless
(when claculating head, the first two lines no need to be calculate again)
c. add xor %dx, %dx before divw $HPT
P.S there is one knowing bug, that is when the Cylider number is too big,
it will overflow the register.
3.
add: add severl additional feature.
reason: increase the reliablility of the bootloader.
a. load the root dir into the disk buffer.
b. search the kernel.bin.
c. after finding the kernel.bin, get the fat number.
d. calculate the FAT of the kernel image.
2011/06/27
This is the first version of the Simple OS project.
1.
bug: code mistyping cause the bootloader crash.
fixed:
in kernel.S
add '$' before the immediate value in print_msg.
in boot.S
add int $0x13 before the long jump