This repository has been archived by the owner on Apr 19, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DOCS.TXT
70 lines (59 loc) · 2.45 KB
/
DOCS.TXT
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
Welcome to DolphinOS!
ver. 0.0.1
"I'll build my own DOS! With blackjack
and hookers!"
- slightly paraphrased Bender
Introduction
DolphinOS is tiny and simplest operating system for x86 platform. Written
for some assembler experience and lulz.
Features:
- bootloader for FAT12 file system;
- monolithic kernel written in ASM (NASM used);
- simplest shell;
- single-user, single-task 16bit operating system;
- support for FAT12 (under development);
- memory handler (testing);
Agenda:
- support for fat32/vfat, ext2, iso9660 file systems;
- loading user programs in .com format (ELF and PE later);
- basic text editor;
- basic VC/MC-like file manager;
- basic graphics support;
- valid unix-like shell;
- ??????
- PROFIT!!!
Kernel
File systems
File system hierarchy will be a single unix-like tree. There is a root,
/, where traditional unix directories is located: /bin, /dev, /home. System
disk is mounted to /, another devices - to mount points table entries.
Heap
Heap begins behind the kernel and has its own segment, whenever referred
to pointer allocated with memalloc, it means HEAP_SEG:pointer.
Heap segment is KERNEL_SEGM + kernel_end >> 4, adresses are 0x0000-0xffff
Structure of heap:
heap is build from chunks, each chunk contains header (4b) and arbitrary
data after header:
<----- chunk 0 -------> <- 1 -> <----- chunk 2 ---> ...
|----|------------------|----|--|----|--------------| ... |----|--|0000|
h1 data of h1 h2 data h3 data of h3 hN end
where h1, h2, h3 - headers of chunks
Header structure is:
|--------|--------|---------|---------|
<-- data length -> <- Serv-> <- CSum ->
where data length - big-endian word, length of data after header
Serv - service flags, this byte is 0, if chunk is free
CSum - control sum,
== high[datalentgh] + low[datalength] + low[datapointer]
License
Now it is BEERWARE: this source code provided AS IS. Author and owner
does not take any responsibility for all misusage and data corruption caused
by this product, but receives beer if it helped you :)
Authors
Currently product is developed and maintained by Dmytro Sirenko
(email: [email protected], jabber: [email protected], ICQ: 350799719).
All constructive feedbacks and notes are welcomed.
Special aknowledgements to:
- NASM command for great development tool;
- VIM for excellent code editor;
- all music group I'm listening to during coding :)