ページへ戻る

− Links

 印刷 

sero​/g01_os のバックアップソース(No.6) :: OSASK計画

osaskwiki:sero/g01_os のバックアップソース(No.6)

« Prev[4]  Next »[5]
* g01ってOSと見なせるよね? [#v1580f27]
- g01では、実行ファイルのフォーマットが規定されていて、ファイル入出力・キーボード入力・画面出力・コマンドライン取得のAPIが定義されている。
- これだけのものがあれば、もはやg01は新たなプラットフォームのOSだと見なしてもかまわないはず。
- [[K]]さんの[[メモ>GUIGUI01/memo02#o161c91a]]でもすでにそう述べられている。
- 2011年05月中旬に、(少なくとも自分にとっては)面白いことを思いついたから、実践してみよう。

- 開発ツール系のアプリがg01として作られているんだから、''純粋にg01だけでアプリ開発ができるはず''だ(cc1.exeはg01でないからnaskがメインになるけど)。
- つまり、この新しいプラットフォームg01上で''セルフ開発''やってみようという企画。

** 環境整備 [#q05311a2]
- まずは使える道具を確認しよう。[[hidetol_8>hidetol/hidetol_8]]を用意して、z_toolsを眺めてみる。
- 使える(g01の)ツールは、akusA, bim2g01, bim2hrb, bin2obj, bin2ucc, cpy, cpyc, gas2nask, golib00, hexdump, makefont, mtek2org, naskcnv0, Nasuka, obj2bim, rjcg01, sjisconv, tekmin0, tekmin1
- よく知らないものを調べる。
:: bin2ucc | ファイルをC言語のunsigned char配列形式にダンプする
:: mtek2org, rjcg01, tekmin* | よく分からなかった(あとで調べるかもしれない)
- C言語でなくnaskがメインになる予定なので、z_tools/com*.txtを読んでnaskからg01を得る手順を調べる。
-- nask:nask→obj, obj2bim:obj→bim×rlm, bim2g01:bim×rlm→g01, tekmin0;bim2bin;tekmin1:g01→g01(tekによる圧縮)
-- bim2binはg01でないので圧縮はいったんあきらめる。したがって、nask;obj2bim;bim2g01でnask→g01(圧縮なし)のビルドができることがわかった。
- あとは、キーボードからの入力をファイルに書き出す補助ツールがあれば、「ソースの入力→アセンブル→リンク」がg01だけで実現できることになる。
- で、作った。ファイル名: input.c
 #include <guigui01.h>

 void G01Main(void) {
 	static const unsigned char cmdusage[] = {
 		0x86, 0x50,
 		0x8c,
 		0x40
 	};
 	char * const p0 = g01_bss1a1, *p = p0;
 	int flag = 0;

 	g01_setcmdlin(cmdusage);

 	for (;;) {
 		int c = jg01_inkey3();
 		if (c == '\r')
 			c = '\n';
 		g01_putc(c);

 		if (!flag) {
 			if (c == 'q')
 				flag = 1;
 			else
 				*p++ = c;
 		} else {
 			if (c == '\n')
 				break;
 			*p++ = 'q';
 			*p++ = c;
 			flag = 0;
 		}
 	}
 	*p = '\0';

 	g01_getcmdlin_fopen_s_3_5(0);
 	jg01_fwrite1f_5(p - p0, p0);
 }
- 出力ファイル名を受け取り、入力された文字をそこに書き込む。入力の終了は'q'+Enterで表す。
- 必要最低限のツールセットができた。

- まとめ:hidetol_8 + ソースの入力ツールinput.g01 を使ってnaskで開発ができる。

** Getting started [#c8332d6f]
- まずはおなじみのHello, worldから始める。
- 先ほど作ったinput.g01を起動して、
 ../z_tools/hijk input hello.nas
- [[GUIGUI01/memo30]]のソースを一文字ずつ入力する。終了は'q'+Enter。
-- input.g01は入力ミスをしても取り消す方法がないので、Ctrl+Cで強制終了して初めからやり直すことになる。(ミスタイプで2回やり直した)
- そしてアセンブル&リンク
 ../z_tools/hijk ../z_tools/Nasuka hello.nas hello.obj
 ../z_tools/hijk ../z_tools/obj2bim rul:../z_tools/guigui01/guigui01.rul out:hello.bim stack:0 rlm:hello.rlm ../z_tools/guigui01/g01libc0.lib hello.obj ../z_tools/guigui01/g01libc1.lib
 ../z_tools/hijk ../z_tools/bim2g01 hello.bim hello.g01 hello.rlm
-- (このステップも面倒だから自動化したいけど、今のg01は外部プログラムの起動がサポートされてないので手入力)
- 実行
 ../z_tools/hijk hello

- まだ未完成。進展があったら更新。

** コメント欄 [#yd6c8bdd]
- おもしろそう! -- ''k-tan'' &new{2011-07-01 (金) 09:18:22};

#comment

« Prev[4]  Next »[5]