* 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
(This host) = http://osask.net