1: 2005-03-15 (火) 20:54:20 |
現: 2024-01-08 (月) 12:58:56 k-tan |
- | * GO(C言語)でOSASKアプリを作ってみよう、のページ | + | TITLE:x |
| + | * GO(C言語)でOSASKアプリを作ってみよう、のページ [#u84fa57c] |
| -(by [[K]], 2005.03.15) | | -(by [[K]], 2005.03.15) |
| | | |
- | *** まずは開発環境の入手 | + | -姉妹ページ |
| + | --[[guide/nask]]:C言語じゃなくてnaskでやりたい人 |
| + | --[[guide/ASKA]]:C言語じゃなくてASKAでやりたい人 |
| + | |
| + | *** まずは開発環境の入手 [#ob455183] |
| -[[downloads/dev]]のページへ行って、''最新版''のところの、「tolset08」というやつをダウンロードしてください(lzhでもsarでもどっちでもOK)。 | | -[[downloads/dev]]のページへ行って、''最新版''のところの、「tolset08」というやつをダウンロードしてください(lzhでもsarでもどっちでもOK)。 |
| --2MB強ありますが、これはCコンパイラとかテストラン用のOSASKやエミュレータなどが入っているせいです。すみません。 | | --2MB強ありますが、これはCコンパイラとかテストラン用のOSASKやエミュレータなどが入っているせいです。すみません。 |
| --もしかしたらバージョンアップしてtolset09とかになっているかもしれません。その辺は臨機応変でお願いします。 | | --もしかしたらバージョンアップしてtolset09とかになっているかもしれません。その辺は臨機応変でお願いします。 |
| + | --2006.05.08での最新版は[[tolset_h:http://hrb.osask.jp/tolset_h.zip]]です。 |
| + | --Win95/98/Meの人はフォルダ名を少し直す必要があります(こめんと欄 2006.07.29 参照)。 |
| -これをどこでもいいですので、適当なところに解凍します。 | | -これをどこでもいいですので、適当なところに解凍します。 |
| | | |
- | *** プロジェクト作成 | + | *** プロジェクト作成 [#ied6576b] |
| -次に、新規にアプリを作りますので、z_new_oというディレクトリを探してください。これをコピーして、同じディレクトリにペーストします。すると、「コピー ~ z_new_o」とかいう名前のフォルダができます。これを「chelo」にリネームしてください。 | | -次に、新規にアプリを作りますので、z_new_oというディレクトリを探してください。これをコピーして、同じディレクトリにペーストします。すると、「コピー ~ z_new_o」とかいう名前のフォルダができます。これを「chelo」にリネームしてください。 |
| --もちろん他の好きな名前でもいいですよ。 | | --もちろん他の好きな名前でもいいですよ。 |
| -最後にcheloの中で 右クリック→新規作成→テキストドキュメント とやって、新規テキストドキュメントを作ります。そしてこれを、「chelo.c」に改名します。拡張子を変更するとどうたらこーたらとかいいますが、無視してOKしてください。 | | -最後にcheloの中で 右クリック→新規作成→テキストドキュメント とやって、新規テキストドキュメントを作ります。そしてこれを、「chelo.c」に改名します。拡張子を変更するとどうたらこーたらとかいいますが、無視してOKしてください。 |
| | | |
- | *** ソース作成 | + | *** ソース作成 [#e05ddb74] |
| -さて、それではchelo.cを開いて、以下のソースをがしがしと入力してください。 | | -さて、それではchelo.cを開いて、以下のソースをがしがしと入力してください。 |
| #include <guigui00.h> | | #include <guigui00.h> |
| #define AUTO_MALLOC 0 | | #define AUTO_MALLOC 0 |
| + | |
| void OsaskMain() | | void OsaskMain() |
| { | | { |
| struct LIB_WINDOW *window; | | struct LIB_WINDOW *window; |
| struct LIB_TEXTBOX *wintitle, *textbox; | | struct LIB_TEXTBOX *wintitle, *textbox; |
| + | |
| lib_init(AUTO_MALLOC); | | lib_init(AUTO_MALLOC); |
| window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48); | | window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48); |
- | wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0, 7, 1, 0, 0, window, 0x00c0, 0); | + | 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); | | textbox = lib_opentextbox(0x0000, AUTO_MALLOC, 0, 12, 1, 16, 16, window, 0x00c0, 0); |
- | lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "helloc4"); | + | lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "chelo"); |
| lib_putstring_ASCII(0x0000, 0, 0, textbox, 0, 0, "hello, world"); | | lib_putstring_ASCII(0x0000, 0, 0, textbox, 0, 0, "hello, world"); |
| lib_waitsignal(0x0001, 0, 0); | | lib_waitsignal(0x0001, 0, 0); |
| } | | } |
- | | + | |
- | *** どうやってアセンブルするの? | + | *** どうやって実行ファイルを作るの? [#cbae0369] |
| -まず、コンソールを開きます。開き方は使っているOSによって違います。 | | -まず、コンソールを開きます。開き方は使っているOSによって違います。 |
| --Win2000, WinXPなどのNT系: !cons_nt.batをダブルクリック | | --Win2000, WinXPなどのNT系: !cons_nt.batをダブルクリック |
| -これだけでリンクまで全自動でやってくれます。 | | -これだけでリンクまで全自動でやってくれます。 |
| -できたアプリは、chelo.binです。 | | -できたアプリは、chelo.binです。 |
- | --tolset08で作った場合は多分449バイトです。 | + | --tolset08で作った場合は多分452バイトです。 |
| | | |
- | *** どうやってテスト実行するの? | + | *** どうやってテスト実行するの? [#j6a70fe8] |
| -同じくコンソールから、make runとだけうってEnterを押してください。 | | -同じくコンソールから、make runとだけうってEnterを押してください。 |
| -しばらく待っていると、勝手にOSASKがエミュレータ環境で起動します。 | | -しばらく待っていると、勝手にOSASKがエミュレータ環境で起動します。 |
| -うまくいけばウィンドウが表示されます。 | | -うまくいけばウィンドウが表示されます。 |
| | | |
- | *** 雑な説明 | + | *** 雑な説明 [#e0b725a7] |
| -結局のところ、これはAPIを呼び出しているだけです。lib_で始まる関数は全てAPI呼び出しです。 | | -結局のところ、これはAPIを呼び出しているだけです。lib_で始まる関数は全てAPI呼び出しです。 |
| | | |
- | *** もっと詳しく説明してくれー | + | *** もっと詳しく説明してくれー [#y06eff7f] |
| -続編:[[guide/wintro0000]] | | -続編:[[guide/wintro0000]] |
| ~ | | ~ |
| --[[GUIGUI00_man]] | | --[[GUIGUI00_man]] |
| | | |
- | * こめんと欄 | + | * こめんと欄 [#p50558c1] |
- | #comment | + | -すみません、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 |