• R/O
  • SSH
  • HTTPS

haribote: Commit


Commit MetaInfo

Revision187 (tree)
Time2010-03-01 19:55:31
Authortatsupc

Log Message

orbspace first commit

Change Summary

Incremental Difference

--- haribote/trunk/orbspace/make.bat (nonexistent)
+++ haribote/trunk/orbspace/make.bat (revision 187)
@@ -0,0 +1 @@
1+..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
\ No newline at end of file
--- haribote/trunk/orbspace/!cmd.bat (nonexistent)
+++ haribote/trunk/orbspace/!cmd.bat (revision 187)
@@ -0,0 +1 @@
1+cmd.exe
\ No newline at end of file
--- haribote/trunk/orbspace/orbspace.txt (nonexistent)
+++ haribote/trunk/orbspace/orbspace.txt (revision 187)
@@ -0,0 +1,115 @@
1+orbspace - 球を利用した新しい3DUIを提供するOS
2+
3+* orbspaceとは
4+ -球を利用した新しい3DUIを提供
5+ -orbfsでフォーマットされたUSBメモリに対応
6+
7+* orbfs
8+** データ構造
9+struct entry {
10+ unsigned char name[12];
11+ unsigned int size;
12+};
13+ -name[0]が0xffならディレクトリで、name[1]から名前が始まる。それ以外ならファイル
14+ -ディレクトリの場合、sizeはエントリの個数を表す
15+ -entryに512バイトに整理されたデータが直接続く
16+
17+** orbSAT - orb Sector Allocation Table
18+ -FATを汎用データ領域のセクタに適応したもの、ランレングスをベースにした圧縮をしている
19+ -ランレングスは連続データに対するものだが、ここでは連続増加データ(20,21,22,...)に対するもの
20+ -ランレングスは1byteごとだが、ここではセクタ番号に合わせて4byteごと(連続増加データの長さは2^32まで)
21+ -セクタ番号(汎用データ領域を対象、0x00000000〜0xffffffff)
22+ -例:
23+ -初期状態
24+ 0x00004000 0x00000000 => つまり汎用データ領域は16MB
25+ -2048->2049を2048->16384->2049へ変更(データの挿入)
26+ 0x00000800 0x00000000 0x00000001 0x00004000 0x00003800 0x00000801
27+ -8192->8193->8194を8192->8194へ変更(データの削除)
28+ 0x00000800 0x00000000 0x00000001 0x00004000 0x00001800 0x00000801 0x00001fff 0x00002002
29+
30+** 全体のイメージ
31+0x00000000-0x000001ff BPB(IPL、パーティションテーブル、0xaa55)
32+0x00000200-0x00001fef orbSAT
33+0x00001ff0-0x00097fff OSのデータ領域
34+0x00098000- 汎用データ領域
35+
36+** edorbfs
37+>edorbfs
38+usage>edorbfs -c (from:dir\file.ext) (to:/imgfile/dir/file.ext)
39+ >edorbfs -d (:/imgfile/dir/file.ext)
40+ >edorbfs -f (imgfile) (imgsize by KB) (ipl:dir\file.ext) (os:dir\file.ext)
41+ >edorbfs -l [(:/imgfile/dir)]
42+>edorbfs -f orbspace.img 253440 orbspace\ipl.bin orbspace\orbspace.sys
43+>edorbfs -c sin\sin.orb /orbspace.img/sin.orb
44+>edorbfs -c circle\circle.orb /orbspace.img/circle.orb
45+>edorbfs -c orbspace\main.c /orbspace.img/src/orbspace/main.c
46+>edorbfs -c orbspace\orbfs.c /orbspace.img/src/orbspace/orbfs.c
47+>edorbfs -c /orbspace.img/log.txt log.txt
48+>edorbfs -l /orbspace.img
49+ 65536 orbspace.sys
50+ 1024 sin.orb
51+ 2048 circle.orb
52+ <DIR> src
53+ 4096 log.txt
54+>edorbfs -l /orbspace.img/src/orbspace
55+ 8192 main.c
56+ 4096 orbfs.c
57+>edorbfs -d /orbspace.img/log.txt
58+>edorbfs -l
59+ 65536 orbspace.sys
60+ 1024 sin.orb
61+ 2048 circle.orb
62+ <DIR> src
63+
64+=== 注意:edorbfs、I/O(USBやImageFileAPIとの操作部分)、orbfs(ファイルシステム部分)に完全に分離 ===
65+
66+* メモリマップ
67+0x00000000-0x00007bff:あき(0x7c00バイト、31KB)
68+0x00007c00-0x0009fbff:USBメモリイメージ(BPB、orbSAT、OS部分)(0x98000バイト、608KB)
69+0x0009fc00-0x000fffff:あき(0x60400バイト、385KB)
70+0x00100000-0x000007ff:IDT(0x800バイト、2KB)
71+0x00100800-0x001107ff:GDT(0x10000バイト、64KB)
72+0x00110800-0x001fffff:スタックなど(0xef800バイト、958KB)
73+0x00200000- :あき
74+
75+* .orb実行ファイル形式
76+** ファイルマップ
77+0x0000(BYTE) :0xe9
78+0x0001(DWORD):実行開始アドレス-0x05
79+0x0005(3BYTE):シグネチャコード(="ORB")
80+0x0008(DWORD):データセグメントのサイズ
81+0x000c(DWORD):ESPの初期値
82+0x0010(DWORD):orbファイル内のデータ部分のサイズ
83+
84+ -.hrbでのmalloc領域開始アドレスは、ESPの初期値とorbファイル内のデータサイズの和で表現される
85+ -malloc領域のサイズは、データセグメントのサイズと開始アドレスの差で表現される
86+
87+** ルールファイルの記述
88+format:
89+ code(align:1, logic:0x24, file:0x24);
90+ data(align:4, logic:stack_end, file:code_end);
91+
92+file:
93+ ../../z_tools/haribote/golibc.lib;
94+
95+label:
96+ _OrbMain;
97+
98+* USBメモリからのブート
99+** 流れ
100+1.BPB内でのIPLの動き
101+ 1.拡張int 13hを用いてUSBの先頭数百KBをロード
102+ 2.画面モードを切り替える
103+ 3.BIOSからキーボードランプの状態を取得
104+ 4.割り込みの禁止とA20GATEの設定
105+ 5.32bitプロテクトモード(ページング禁止)へ切り替え
106+ 6.OSをロードする
107+2.OS(ほぼC記述)
108+
109+=== 注意:OSのコード(orbspace.sys)は必ずエントリの先頭にあることと、断片化していないこと ===
110+
111+* USB制御
112+
113+* 公開形式
114+ -sourceforge.jp内でのSVN公開
115+ -haribote.orgの個人ページでの告知
Show on old repository browser