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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
other projects
https://github.com/cs107e/cs107e.github.io
http://wiki.osdev.org/Calling_Conventions
http://wiki.osdev.org/Linker_Scripts
http://wiki.osdev.org/Printing_To_Screen
http://wiki.osdev.org/Exceptions#General_Protection_Fault
https://en.wikipedia.org/wiki/X86_calling_conventions
http://repo.or.cz/w/lightOS.git
https://littleosbook.github.io/
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
http://x86.renejeschke.de/html/file_module_x86_id_139.html
http://retired.beyondlogic.org/serial/serial1.htm
https://pdos.csail.mit.edu/6.828/2014/reference.html
https://visopsys.org/osdev/
sortix, soso, managarm (mlibc)
https://bitbucket.org/adamholisky/versionone
https://collapseos.org/
https://github.com/mikaku/Fiwix
tutorials:
https://littleosbook.github.io
http://www.henkessoft.de/OS_Dev/OS_Dev1.htm
http://www.brokenthorn.com/Resources/OSDevIndex.html
- fitting code following the brokenthorm tutorial:
https://github.com/tuhdo/os-study
http://www.fysnet.net/
http://www.brokenthorn.com/Resources/
In C#:
https://github.com/FlingOS/FlingOS
In Rust:
http://os.phil-opp.com/
OS with striclty types language:
http://web.yl.is.s.u-tokyo.ac.jp/~tosh/talk/
Interrupts:
http://wiki.osdev.org/Exceptions
http://wiki.osdev.org/Interrupt_Descriptor_Table
http://beefchunk.com/documentation/hardware/microprocessors/intel/i80386/Chap9.html
http://www.cs.cmu.edu/~ralf/files.html
https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/
A20:
http://wiki.osdev.org/A20_Line#Recommended_Method
http://aodfaq.wikidot.com/mc-a20-controls
http://www.independent-software.com/writing-your-own-toy-operating-system-enabling-the-a20-line/
https://www.win.tue.nl/~aeb/linux/kbd/A20.html
longjmp:
http://blog.reverberate.org/2013/05/deep-wizardry-stack-unwinding.html
http://prettyos.de
PIC:
http://www.brokenthorn.com/Resources/OSDevPic.html
http://wiki.osdev.org/8259_PIC
keyboard:
http://wiki.osdev.org/"8042"_PS/2_Controller
https://www.lowlevel.eu/wiki/Keyboard_Controller
PIT:
http://wiki.osdev.org/Programmable_Interval_Timer
PCI:
http://wiki.osdev.org/PCI
https://www.lowlevel.eu/wiki/Peripheral_Component_Interconnect
http://www.ics.uci.edu/~harris/ics216/pci/PCI_22.pdf
/usr/share/hwdata/pci.ids
assembly:
NASM
FASM
serial:
http://wiki.osdev.org/Serial_Ports
http://www.sci.muni.cz/docs/pc/serport.txt
Boot:
https://www.cs.cmu.edu/~410-s07/p4/p4-boot.pdf
http://www.osdever.net/tutorials/view/loading-sectors
http://www.osdever.net/tutorials/view/lba-to-chs
LILO boot loader
http://www.uruk.org/orig-grub/PC_partitioning.txt
http://wiki.osdev.org/ATA_in_x86_RealMode_%28BIOS%29
other Boot (not used, but nice other projects):
https://github.com/vladimirfedorov/bootsector.git: stage1 with FAT, using FASM
https://github.com/civboot/civboot
C:
http://www.drdobbs.com/extending-c-for-object-oriented-programm/184402731
https://www.state-machine.com/doc/AN_OOP_in_C.pdf
https://www.cs.rit.edu/~ats/books/ooc.pdf
https://lwn.net/Articles/444910/
https://dmitryfrank.com/articles/oop_in_c
VGA:
http://www.inp.nsk.su./~bolkhov/files/fonts/univga/
https://sourceforge.net/projects/bdf2c/
http://files.osdev.org/mirrors/geezer/osd/graphics/modes.c
http://www.osdever.net/FreeVGA/home.htm
http://wiki.osdev.org/VGA_Fonts
http://bos.asmhackers.net/docs/vga_without_bios/
abaos: daveho https://int10h.org/oldschool-pc-fonts/fontlist/
https://os.phil-opp.com/vga-text-mode/
GUI:
https://github.com/vurtun/nuklear
http://webserver2.tecgraf.puc-rio.br/iup/
linker:
https://stackoverflow.com/questions/26143123/how-do-i-ensure-the-entry-function-at-a-fixed-address-of-bare-metal-arm
Linux:
https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/
Security:
http://wiki.osdev.org/Stack_Smashing_Protector
Memory management:
http://www.codinglabs.net/tutorial_memory_pool.aspx
http://wiki.osdev.org/Detecting_Memory_(x86)
Networking:
http://wiki.osdev.org/RTL8139
http://lowlevel.eu/wiki/RTL8139
https://gist.github.com/pdumais/f5a2aff025fc7a3fe6bc
http://linuxgazette.net/156/jangir.html
http://blog.elastocloud.org/2015/07/qemukvm-bridged-network-with-tap.html
Ethernet:
https://en.wikipedia.org/wiki/Ethernet_frame
https://en.wikipedia.org/wiki/EtherType
http://www.hackersdelight.org/hdcodetxt/crc.c.txt
ARP:
https://tools.ietf.org/html/rfc826
http://wiki.osdev.org/Address_Resolution_Protocol
Syscalls:
AX, BX software interrupt 0x80, classic Linux/DOS/Windows syscalls
UTP/Netconsole:
https://www.cyberciti.biz/tips/linux-netconsole-log-management-tutorial.html
intro in gas and nasm
https://developer.ibm.com/articles/l-gas-nasm/
https://github.com/wbenny/ia32-doc
https://www.jwz.org/doc/worse-is-better.html
http://www.independent-software.com/operating-system-development-jumping-to-protected-mode.html
https://wiki.osdev.org/Bare_Bones
https://wiki.osdev.org/OS_Specific_Toolchain
https://wiki.osdev.org/GCC_Cross-Compiler
BOOTBOOT
https://forum.osdev.org/viewtopic.php?f=2&t=33362
https://github.com/jtsiomb/pcboot/
minimal 32-bit protected mode booting kernel
https://github.com/Supercip971/WingOS
boot loader
https://github.com/limine-bootloader/limine
q-word OS:
https://github.com/qword-os/echfs
https://github.com/qword-os/lvlibc
https://github.com/Supercip971/WingOS_x64.git
echfs, simple filesystem
https://github.com/echfs/echfs, 32-bit port needed
prex real time embedded os:
https://github.com/AndrewD/prex
https://github.com/spacerace/romfont
etherboot, gPXE, iPXE, HTTP boot:
https://sites.google.com/site/richardgroux/infrastructure-1/Network/pxe-boot/what-is-gpxe-1
linux floppy code has been removed in 2003, had a 1MB limit issue anyway
|