• R/O
  • SSH
  • HTTPS

haribote: Commit


Commit MetaInfo

Revision190 (tree)
Time2010-03-02 19:39:35
Authortatsupc

Log Message

redo orbfs

Change Summary

  • delete: haribote/trunk/orbspace/edorbfs/make.bat
  • delete: haribote/trunk/orbspace/edorbfs/io_img.c
  • delete: haribote/trunk/orbspace/edorbfs/edorbfs.c
  • delete: haribote/trunk/orbspace/edorbfs/io_img.h
  • delete: haribote/trunk/orbspace/edorbfs/Makefile
  • delete: haribote/trunk/orbspace/edorbfs
  • modified: haribote/trunk/orbspace/orbspace.txt (diff)
  • modified: haribote/trunk/orbspace/Makefile (diff)
  • delete: haribote/trunk/orbspace/orbspace/orbfs.c
  • delete: haribote/trunk/orbspace/orbspace/orbfs.h

Incremental Difference

--- haribote/trunk/orbspace/edorbfs/make.bat (revision 189)
+++ haribote/trunk/orbspace/edorbfs/make.bat (nonexistent)
@@ -1 +0,0 @@
1-..\..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
\ No newline at end of file
--- haribote/trunk/orbspace/edorbfs/io_img.c (revision 189)
+++ haribote/trunk/orbspace/edorbfs/io_img.c (nonexistent)
@@ -1,20 +0,0 @@
1-#include "io_img.h"
2-
3-FILE *imgfp;
4-
5-unsigned int io_init(unsigned char *name, unsigned char *mode)
6-{
7- if ((imgfp = fopen(name, mode)) == 0) {
8- return 2;
9- }
10- return 0;
11-}
12-
13-unsigned int io_write(unsigned char *buf, unsigned int addr, unsigned int size)
14-{
15- fseek(imgfp, addr, SEEK_SET);
16- if (fwrite(buf, size, 1, imgfp) == 0) {
17- return 2;
18- }
19- return 0;
20-}
--- haribote/trunk/orbspace/edorbfs/edorbfs.c (revision 189)
+++ haribote/trunk/orbspace/edorbfs/edorbfs.c (nonexistent)
@@ -1,110 +0,0 @@
1-#include "io_img.h"
2-#include "..\orbspace\orbfs.h"
3-#include <stdlib.h>
4-#include <string.h>
5-
6-static unsigned char ptable[16] = {
7- 0x80, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
8- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
9-};
10-
11-unsigned int cmd_create(unsigned char **args)
12-{
13- return 0;
14-}
15-
16-unsigned int cmd_delete(unsigned char **args)
17-{
18- return 0;
19-}
20-
21-unsigned int cmd_format(unsigned char **args)
22-{
23- FILE *fp;
24- unsigned char *fbuf;
25- unsigned int fsize, i;
26-
27- fsize = atoi(args[1]) * 1024;
28- if ((i = io_init(args[0], "wb")) != 0) {
29- return i;
30- }
31- fbuf = (unsigned char *) malloc(fsize);
32- memset(fbuf, 0, fsize);
33- if ((fp = fopen(args[2], "rb")) == 0) {
34- return 3;
35- }
36- fread(fbuf, 446, 1, fp);
37- memcpy(fbuf + 446, ptable, 16);
38- *((unsigned int *) (fbuf + 446 + 0x0c)) = (unsigned int) (fsize + 511) / 512;
39- fbuf[510] = 0x55; fbuf[511] = 0xaa;
40- if ((i = io_write(fbuf, 0, fsize)) != 0) {
41- return i;
42- }
43- return 0;
44-}
45-
46-unsigned int cmd_list(unsigned char **args)
47-{
48- return 0;
49-}
50-
51-struct cmdtype {
52- unsigned char cmd;
53- unsigned int argn;
54- unsigned int (*func)(unsigned char **);
55-} cmdtypes[4] = {
56- { 'c', 2, cmd_create },
57- { 'd', 1, cmd_delete },
58- { 'f', 4, cmd_format },
59- { 'l', 1, cmd_list }
60-};
61-
62-static unsigned char *errmsg[] = {
63- "command syntax error",
64- "image file error",
65- "IPL error"
66-};
67-
68-void print_usage(void)
69-{
70- puts("usage>edorbfs -c (from:dir\file.ext) (to:/imgfile/dir/file.ext)");
71- puts(" >edorbfs -d (:/imgfile/dir/file.ext)");
72- puts(" >edorbfs -f (imgfile) (imgsize by KB) (ipl:dir\file.ext) (os:dir\file.ext)");
73- puts(" >edorbfs -l (:/imgfile/dir)");
74- return;
75-}
76-
77-void print_error(unsigned int no)
78-{
79- if (no > 0) {
80- printf("edorbfs:%s\n", errmsg[no - 1]);
81- }
82- exit(1);
83-}
84-
85-int main(int argc, char **argv)
86-{
87- unsigned char *args[4];
88- int i, j;
89-
90- if (argc < 2 && argv[1][0] != '-') {
91- print_usage();
92- print_error(0);
93- }
94- for (i = 0; i < 4; i++) {
95- if (argv[1][1] == cmdtypes[i].cmd) {
96- if (argc != (cmdtypes[i].argn + 2)) {
97- print_error(1);
98- }
99- for (j = 0; j < 4; j++) {
100- args[j] = (cmdtypes[i].argn >= (j + 1)) ? argv[j + 2] : 0;
101- }
102- if ((i = cmdtypes[i].func(args))) {
103- print_error(i);
104- }
105- return 0;
106- }
107- }
108- print_error(0);
109- return 0;
110-}
--- haribote/trunk/orbspace/edorbfs/io_img.h (revision 189)
+++ haribote/trunk/orbspace/edorbfs/io_img.h (nonexistent)
@@ -1,4 +0,0 @@
1-#include <stdio.h>
2-
3-unsigned int io_init(unsigned char *name, unsigned char *mode);
4-unsigned int io_write(unsigned char *buf, unsigned int addr, unsigned int size);
--- haribote/trunk/orbspace/edorbfs/Makefile (revision 189)
+++ haribote/trunk/orbspace/edorbfs/Makefile (nonexistent)
@@ -1,10 +0,0 @@
1-TARGET = edorbfs
2-MODE = exe
3-OBJS = $(TARGET).obj ../orbspace/orbfs.obj io_img.obj
4-STACKSIZE = 0x1000000 # 16MB (default)
5-
6-INCPATH = ../../z_tools/win32/
7-CC1OPT = -Dmain=main0
8-include ../com_mak.txt
9-
10-# tolset08対応Makefile
--- haribote/trunk/orbspace/orbspace.txt (revision 189)
+++ haribote/trunk/orbspace/orbspace.txt (revision 190)
@@ -8,60 +8,22 @@
88 -orbfsでフォーマットされたUSBメモリに対応
99
1010 * orbfs
11+=== 再検討(データ構造、全体のイメージ、orbSAT、ディスクイメージツール) ===
1112 ** データ構造
12-struct entry {
13- unsigned char name[12];
14- unsigned int size;
15-};
16- -name[0]が0xffならディレクトリで、name[1]から名前が始まる。それ以外ならファイル
17- -ディレクトリの場合、sizeはエントリの個数を表す
18- -entryに512バイトに整理されたデータが直接続く
13+=== 再検討 ===
1914
15+** 全体のイメージ
16+=== 再検討 ===
17+
2018 ** orbSAT - orb Sector Allocation Table
21- -FATを汎用データ領域のセクタに適応したもの、ランレングスをベースにした圧縮をしている
22- -ランレングスは連続データに対するものだが、ここでは連続増加データ(20,21,22,...)に対するもの
23- -ランレングスは1byteごとだが、ここではセクタ番号に合わせて4byteごと(連続増加データの長さは2^32まで)
24- -セクタ番号(汎用データ領域を対象、0x00000000〜0xffffffff)
25- -例:
26- -初期状態
27- 0x00004000 0x00000000 => つまり汎用データ領域は16MB
28- -2048->2049を2048->16384->2049へ変更(データの挿入)
29- 0x00000800 0x00000000 0x00000001 0x00004000 0x00003800 0x00000801
30- -8192->8193->8194を8192->8194へ変更(データの削除)
31- 0x00000800 0x00000000 0x00000001 0x00004000 0x00001800 0x00000801 0x00001fff 0x00002002
19+=== 再検討 ===
3220
33-** 全体のイメージ
34-0x00000000-0x000001ff BPB(IPL、パーティションテーブル、0xaa55)
35-0x00000200-0x00001fef orbSAT
36-0x00001ff0-0x00097fff OSのデータ領域
37-0x00098000- 汎用データ領域
38-
3921 ** edorbfs
40->edorbfs -f orbspace.img 131072 orbspace\ipl.bin orbspace\orbspace.sys
41->edorbfs -c sin\sin.orb /orbspace.img/sin.orb
42->edorbfs -c circle\circle.orb /orbspace.img/circle.orb
43->edorbfs -c orbspace\main.c /orbspace.img/src/orbspace/main.c
44->edorbfs -c orbspace\orbfs.c /orbspace.img/src/orbspace/orbfs.c
45->edorbfs -c /orbspace.img/log.txt log.txt
46->edorbfs -l /orbspace.img
47- 65536 orbspace.sys
48- 1024 sin.orb
49- 2048 circle.orb
50- <DIR> src
51- 4096 log.txt
52->edorbfs -l /orbspace.img/src/orbspace
53- 8192 main.c
54- 4096 orbfs.c
55->edorbfs -d /orbspace.img/log.txt
56->edorbfs -l
57- 65536 orbspace.sys
58- 1024 sin.orb
59- 2048 circle.orb
60- <DIR> src
22+=== 再検討 ===
6123
6224 * メモリマップ
6325 0x00000000-0x00007bff:あき(0x7c00バイト、31KB)
64-0x00007c00-0x0009fbff:USBメモリイメージ(BPB、orbSAT、OS部分)(0x98000バイト、608KB)
26+0x00007c00-0x0009fbff:USBメモリの先頭部分(0x98000バイト、608KB)
6527 0x0009fc00-0x000fffff:あき(0x60400バイト、385KB)
6628 0x00100000-0x000007ff:IDT(0x800バイト、2KB)
6729 0x00100800-0x001107ff:GDT(0x10000バイト、64KB)
@@ -94,7 +56,7 @@
9456 * USBメモリからのブート
9557 ** 流れ
9658 1.BPB内でのIPLの動き
97- 1.拡張int 13hを用いてUSBの先頭数百KBをロード
59+ 1.拡張int 13hを用いてUSBの先頭608KBをロード
9860 2.画面モードを切り替える
9961 3.BIOSからキーボードランプの状態を取得
10062 4.割り込みの禁止とA20GATEの設定
--- haribote/trunk/orbspace/Makefile (revision 189)
+++ haribote/trunk/orbspace/Makefile (revision 190)
@@ -1,9 +1,5 @@
11 default:
22 make -C orbspace
33
4-config:
5- make -C edorbfs
6-
74 clean:
8- make -C edorbfs clean
95 make -C orbspace clean
Show on old repository browser