ページへ戻る

− Links

 印刷 

guide​/C のバックアップソース(No.13) :: OSASK計画

osaskwiki:guide/C のバックアップソース(No.13)

« Prev[4]  Next »[5]
* GO(C言語)でOSASKアプリを作ってみよう、のページ
-(by [[K]], 2005.03.15)

-姉妹ページ
--[[guide/nask]]:C言語じゃなくてnaskでやりたい人
--[[guide/ASKA]]:C言語じゃなくてASKAでやりたい人

*** まずは開発環境の入手
-[[downloads/dev]]のページへ行って、''最新版''のところの、「tolset08」というやつをダウンロードしてください(lzhでもsarでもどっちでもOK)。
--2MB強ありますが、これはCコンパイラとかテストラン用のOSASKやエミュレータなどが入っているせいです。すみません。
--もしかしたらバージョンアップしてtolset09とかになっているかもしれません。その辺は臨機応変でお願いします。
--2006.05.08での最新版は[[tolset_h:http://hrb.osask.jp/tolset_h.zip]]です。
-これをどこでもいいですので、適当なところに解凍します。

*** プロジェクト作成
-次に、新規にアプリを作りますので、z_new_oというディレクトリを探してください。これをコピーして、同じディレクトリにペーストします。すると、「コピー ~ z_new_o」とかいう名前のフォルダができます。これを「chelo」にリネームしてください。
--もちろん他の好きな名前でもいいですよ。
-改名が済んだら、cheloの中に入って、Makefileを探し、これをテキストエディタで開きます。とりあえずはメモ帳で十分です。
-そして一番上の行のTARGETの記述を以下のように直します。
 TARGET     = chelo
-最後にcheloの中で 右クリック→新規作成→テキストドキュメント とやって、新規テキストドキュメントを作ります。そしてこれを、「chelo.c」に改名します。拡張子を変更するとどうたらこーたらとかいいますが、無視してOKしてください。

*** ソース作成
-さて、それではchelo.cを開いて、以下のソースをがしがしと入力してください。
 #include <guigui00.h>
 #define AUTO_MALLOC   0

 void OsaskMain()
 {
     struct LIB_WINDOW *window;
     struct LIB_TEXTBOX *wintitle, *textbox;

     lib_init(AUTO_MALLOC);
     window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48);
     wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0,  5, 1,  0,  0, window, 0x00c0, 0);
     textbox  = lib_opentextbox(0x0000, AUTO_MALLOC, 0, 12, 1, 16, 16, window, 0x00c0, 0);
     lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "chelo");
     lib_putstring_ASCII(0x0000, 0, 0, textbox,  0, 0, "hello, world");
     lib_waitsignal(0x0001, 0, 0);
 }

*** どうやって実行ファイルを作るの?
-まず、コンソールを開きます。開き方は使っているOSによって違います。
--Win2000, WinXPなどのNT系: !cons_nt.batをダブルクリック
--Win95, Win98などの9X系: !cons_9x.batをダブルクリック
-コンソールが出てきたら、makeとだけうってEnterを押してください。
-これだけでリンクまで全自動でやってくれます。
-できたアプリは、chelo.binです。
--tolset08で作った場合は多分452バイトです。

*** どうやってテスト実行するの?
-同じくコンソールから、make runとだけうってEnterを押してください。
-しばらく待っていると、勝手にOSASKがエミュレータ環境で起動します。
-で、pokonの一番上の、 !BUILT.BIN を実行してください。
-うまくいけばウィンドウが表示されます。

*** 雑な説明
-結局のところ、これはAPIを呼び出しているだけです。lib_で始まる関数は全てAPI呼び出しです。

*** もっと詳しく説明してくれー
-続編:[[guide/wintro0000]]
~
~
-待てない人のための参考資料:
--I.Tak.さんのAPI資料: http://user.ecc.u-tokyo.ac.jp/~t40370/osask/p0cref.html
--[[GUIGUI00_man]]

* こめんと欄
-すみません、make run のところでエラーが出るのですが、どうすればよいですか? -- ''coze'' &new{2005-06-27 (月) 21:04:37};

 C:\osask\tolset08\chelo>make

 C:\osask\tolset08\chelo>..\z_tools\make.exe
 ../z_tools/make.exe -r chelo.bin
 make.exe[1]: Entering directory `C:/osask/tolset08/chelo'
 ../z_tools/sjisconv.exe -s chelo.c chelo.ca
 ../z_tools/cc1.exe -I../z_tools/guigui00/  -Os -Wall -quiet -o chelo.gas chelo.ca
 ../z_tools/gas2nask.exe -a chelo.gas chelo.nas
 ../z_tools/nask.exe chelo.nas chelo.obj
 ../z_tools/obj2bim.exe @../z_tools/guigui00/guigui00.rul out:chelo.bim stack:64k map:
 chelo.map chelo.obj
 ../z_tools/bim2bin.exe in:chelo.bim out:chelo.org malloc:256k mmarea:0 -v48a
 ../z_tools/bim2bin.exe -osacmp in:chelo.org out:chelo.bin -tek5 clv:5 eopt: eprm:
 rm chelo.gas chelo.nas chelo.ca
 make.exe[1]: Leaving directory `C:/osask/tolset08/chelo'

 C:\osask\tolset08\chelo>ls
 !cons_9x.bat  Makefile   chelo.bin  chelo.c.1~  chelo.obj  make.bat
 !cons_nt.bat  chelo.bim  chelo.c    chelo.map   chelo.org

 C:\osask\tolset08\chelo>make run

 C:\osask\tolset08\chelo>..\z_tools\make.exe run
 ../z_tools/make.exe -r chelo.bin
 make.exe[1]: Entering directory `C:/osask/tolset08/chelo'
 make.exe[1]: `chelo.bin' is up to date.
 make.exe[1]: Leaving directory `C:/osask/tolset08/chelo'
 copy chelo.bin ..\z_tools\!built.bin
 process_begin: CreateProcess((null), copy chelo.bin ..\z_tools\!built.bin, ...) failed.
 make (e=2): 指定されたファイルが見つかりません。
 ..\z_tools\make.exe: *** [run] Error 2
-make, make run を実行すると上のようになります。 -- ''coze'' &new{2005-06-27 (月) 21:06:43};
-これはおそらくCygwin環境だと思われます。Cygwinのデフォルトではcopyコマンドに干渉するため、こういうエラーが出るのです。たぶん環境変数PATHに「C:\cygwin\bin」みたいなパスが追加されていると思います。それを削除すればとりあえずうまくいくようになります。・・・この問題はどちらかというとtolset側の問題であるというよりはCygwinが過剰にWindowsに干渉していることが問題だと思いますので、tolsetの不具合ではないと僕は思っています。ですからこれ以上の対策が必要だと思われる場合は、Cygwin側に対処を要望してください。 -- [[K]] &new{2005-06-27 (月) 21:32:02};
-Kさん、ありがとうございます。C:\cygwin\bin へのパスを外す事で、うまく実行できました。 -- ''coze'' &new{2005-06-27 (月) 22:04:32};
----
-すみません。また make run でつまづいてしまいました。Win95 で実行しています。make はうまくいっていて、chelo.bin は無事に作成できました(451 バイト)。それから make run を実行してみますと -- [[coze]] &new{2005-08-07 (日) 12:06:48};

 qemu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin
 process_begin: CreateProcess(C:/osa/tolset08/z_tools/qemu/qemu.exe, eqmu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin, ...) failed.
 make (e=1157): このアプリケーションの実行に必要なライブラリファイルのうちの1つが見つかりません。
 make.exe[1] *** [ALL] Error 1157
 make.exe[1]: Leaving directory 'C:/osa/tolset08/z_tools/qemu'
 C:\OSA\TOLSET08\Z_TOOLS\make.EXE: *** [run] Error 2
-となります。ライブラリファイルが見つからないと言っているのですが、具体的にどのファイルが見つかっていないのでしょうか? -- [[coze]] &new{2005-08-07 (日) 12:09:13};
-eqmu.exeはタイプミスでしょうか、じゃなかったらファイルが間違ってるので直せば動くかもしれません。makeにたよらずに、qemuを直接実行してみると、何か分かるかもしれません。fdimage0.binがqemuと同じディレクトリにあれば動くと思うんですが。 -- ''くーみん'' &new{2005-08-07 (日) 17:22:46};
-くーみんさん、ありがとうございます。eqmu.exe は、掲示板に書き込む際にタイプミスしていました。すみません。実際には qemu.exe となっています。それで make を使わずにやってみました。 -- [[coze]] &new{2005-08-07 (日) 21:16:01};


 C:\osa\tolset08\z_tools\qemu>qemu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin
 ファイル 'C:\OSA\TOLSET08\Z_TOOLS\QEMU\QEMU.EXE' またはその構成ファイルが見つかりません。
 パスとファイル名が正しいか、すべての必要なライブラリが利用可能であるか、確認してください。

-となってしまいます……。上記を実行するときに、タイトルバーに「プログラム開始エラー」と書かれたダイアログボックスが表示されます(ウィンドウの中には、! マークのアイコンと OK ボタンのみで、テキストは何も書かれていないです)。dir コマンドを実行すると下のようになりました。 -- [[coze]] &new{2005-08-07 (日) 21:16:30};

 C:\osa\tolset08\z_tools\qemu>dir

 .              <DIR>        05-08-07  10:17 .
 ..             <DIR>        05-08-07  10:17 ..
 BIOS     BIN        65,536  04-11-16   7:10 bios.bin
 MAKEFILE                68  05-01-12  11:51 Makefile
 VGABIOS  BIN         9,651  04-04-24   1:29 vgabios.bin
 QEMU     EXE       249,344  04-11-16   7:10 qemu.exe
 FDIMAGE0 BIN     1,474,560  05-08-07  10:18 fdimage0.bin
 SDL      DLL       125,952  04-11-16   7:11 SDL.dll
          7 個          1,925,111 バイトのファイルがあります.
          2 ディレクトリ   440,139,776 バイトの空きがあります.
-そういえば、おいらのWindows95(Libretto50)ではqemuが動きませんでした(OSC2005-Doの会場でわかったという…)。ひょっとしたらWin95はqemu非対応かも知れません。 -- [[あっきぃ]] &new{2005-08-07 (日) 21:22:37};
-あっきぃさんの場合も僕と同じようなエラーメッセージですか? Win95 では動かないというのもあるのかもしれませんね。僕はこういったことにうといので、少しずつ弄ってみようと思います。ありがとうございました。 -- [[coze]] &new{2005-08-09 (火) 00:51:59};
-たしかおいらはバッチファイルからだったと思います。きっとバッチファイルでは分からないエラーが出力されているんだと思います。 -- ''あっきぃ'' &new{2005-08-09 (火) 00:58:09};
-うーん、Win95ではtolset08の「make run」がうまく行かない可能性があるのかもしれませんね。後日こちらでも実験してみたいと思います。他の人で、似たような現象を経験した人、もしくはWin95だけど問題なく動いた人、おられましたらご報告ください。 -- [[K]] &new{2005-08-09 (火) 13:55:41};
-NEC PC-9821 Nb7、Win95 で make run を試してみました。実行してみると、上の場合と同様のエラーが表示されました。その際、「プログラム開始エラー」ダイアログが出て「IPHLPAPI.DLL が見つかりません」と表示されました。何かの参考になればと思います。 -- ''coze'' &new{2005-09-17 (土) 18:08:40};
-IPHLPAPI.DLLはIEに含まれるものだそうです。 -- ''mac12'' &new{2006-07-28 (金) 22:23:19};
-Win95対策版は既にあります。上記にあるとおり最新版のtolset_hを使ってください。z_toolsの中のqemuフォルダをqemu_ntと改名し、qemu_9xフォルダをqemuと改名すれば準備完了です。 -- [[K]] &new{2006-07-29 (土) 09:30:27};

#comment

« Prev[4]  Next »[5]