1: 2003-10-20 (月) 23:27:29 [5] | 現: 2024-01-08 (月) 12:58:39 ゲスト [6] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | *用意するもの | + | このページの内容はもう古いです。osa_dir2 を利用すれば、make run 一発でおしまいです。 |
- | *コンパイルとリンク | + | *0. はじめに |
- | *ディスクイメージの用意 | + | フリーの x86 シミュレータ bochs とディスクイメージがあれば、PC1台で効率的に OSASK アプリを作ることができます。私がいろいろ試した軌跡を残しておきます。introシリーズを読みながらやるといいと思います。 |
- | *ディスクイメージの書き換え | + | *1. 用意するもの |
- | *Bochsの設定と起動 | + | **1.1 Bochs |
- | *デバッグ | + | がじぇっとボックス版Bochs |
+ | |||
+ | -[[download:http://ebisa.hp.infoseek.co.jp/bochs/index.shtml]] | ||
+ | |||
+ | VESAによる256色表示可能なBochs(2.0.2ベース) | ||
+ | |||
+ | #ref(bochs.lzh); | ||
+ | |||
+ | D:\bochs(例)にインストールします。本家 bochs は VGA 回りにバグがあるので初心者にはおすすめしません。 | ||
+ | |||
+ | **1.2 アプリケーションのソースファイル | ||
+ | |||
+ | D:\WABA(例)に作成します。以下WABAの部分を適当に読み替えてください。 | ||
+ | |||
+ | **1.3 各種コンパイル&リンクツール | ||
+ | |||
+ | tolset07 | ||
+ | |||
+ | [[download:http://www.imasy.or.jp/~kawai/osask/developers.html]] | ||
+ | |||
+ | 以下のファイルを D:\OSASK\BIN(例)にコピーします。 | ||
+ | |||
+ | -aska.exe | ||
+ | -bim2bin3.exe | ||
+ | -cc1.exe | ||
+ | -cpp0.exe | ||
+ | -gas2nask.exe | ||
+ | -golib00w.exe | ||
+ | -imgtol.com | ||
+ | -make.exe | ||
+ | -nask.exe | ||
+ | -naskcnv0.exe | ||
+ | -obj2bim3.exe | ||
+ | -osalink1.exe | ||
+ | -sjisconv.exe | ||
+ | |||
+ | 以下のファイルを D:\WABA\lib にコピーします。 | ||
+ | |||
+ | -gg00libc.lib | ||
+ | -golibc.lib | ||
+ | |||
+ | 以下のファイルを D:\WABA\include にコピーします。 | ||
+ | |||
+ | -guigui00.h | ||
+ | -他のヘッダファイルは必要に応じて | ||
+ | |||
+ | **1.4 各種設定ファイル | ||
+ | |||
+ | D:\WABA\Makefile | ||
+ | |||
+ | TARGET = waba | ||
+ | STACKSIZE = 100k | ||
+ | MALLOCSIZE = 100k | ||
+ | MMAREA = 100k | ||
+ | # 以上4つはソースごとに書き換える | ||
+ | INCPATH = ./include | ||
+ | RULEFILE = guigui00.rul | ||
+ | MAKE = make | ||
+ | SJISCONV = sjisconv | ||
+ | CC1 = cc1 | ||
+ | GAS2NASK = gas2nask | ||
+ | NASK = nask | ||
+ | OBJ2BIM = obj2bim3 | ||
+ | BIM2BIN = bim2bin3 | ||
+ | # 以上の項目はあなたのディレクトリ構成にあわせて書き換える | ||
+ | ALL : | ||
+ | $(MAKE) $(TARGET).bin | ||
+ | %.ca : %.c Makefile | ||
+ | $(SJISCONV) -s $*.c $*.ca | ||
+ | %.gas : %.ca Makefile | ||
+ | $(CC1) -I$(INCPATH) -Os -quiet -o $*.gas $*.c | ||
+ | %.nas : %.gas Makefile | ||
+ | $(GAS2NASK) -a $*.gas $*.nas | ||
+ | %.obj : %.nas Makefile | ||
+ | $(NASK) $*.nas $*.obj | ||
+ | %.bim : %.obj Makefile | ||
+ | $(OBJ2BIM) @$(RULEFILE) out:$*.bim stack:$(STACKSIZE) map:$(TARGET).map $*.obj | ||
+ | %.bin : %.bim Makefile | ||
+ | $(BIM2BIN) in:$*.bim out:$*.org malloc:$(MALLOCSIZE) mmarea:$(MMAREA) | ||
+ | $(BIM2BIN) in:$*.org out:$*.bin -osacmp -tek0 | ||
+ | clean : | ||
+ | del $(TARGET).map | ||
+ | del $(TARGET).org | ||
+ | del $(TARGET).bin | ||
+ | |||
+ | D:\WABA\guigui00.rul | ||
+ | |||
+ | format: | ||
+ | /* このセクションでリンクの方針を記述 */ | ||
+ | code(align:1, logic:0x48, file:0x48); | ||
+ | data(align:4, logic:stack_end, file:code_end); | ||
+ | file: | ||
+ | /* このセクションでコマンドラインに書ききれなかった | ||
+ | .ojbファイル、.libファイルを記載 */ | ||
+ | /* なお、このセクションはフルパスで書いてもよい。 */ | ||
+ | /* 例: c:/osask/guigui00.lib; */ | ||
+ | lib/gg00libc.lib; | ||
+ | lib/golibc.lib; | ||
+ | label: | ||
+ | /* 必ずリンクしなければいけないラベルを指定 */ | ||
+ | /* エントリポイントを指定すればいいと思ってください */ | ||
+ | _OsaskMain; | ||
+ | /* 上記3セクションの順序は入れ替えてはいけません! */ | ||
+ | |||
+ | D:\WABA\mkwaba.bat | ||
+ | |||
+ | @echo off | ||
+ | |||
+ | set BAK=%PATH% | ||
+ | set BIN=d:\osask\bin | ||
+ | |||
+ | set path=%BAK%;%BIN% | ||
+ | del waba.bin | ||
+ | del waba.map | ||
+ | del waba.org | ||
+ | make | ||
+ | |||
+ | set path=%BAK% | ||
+ | |||
+ | *2. コンパイルとリンク | ||
+ | |||
+ | D:\WABA>mkwaba.bat | ||
+ | |||
+ | うまくいけば D:\WABA\WABA.BIN ができるはずです。 | ||
+ | |||
+ | *3. ディスクイメージの用意 | ||
+ | |||
+ | OSASK/AT ver.4.1 | ||
+ | |||
+ | [[download:http://www.imasy.or.jp/~kawai/osask/download.html]] | ||
+ | |||
+ | OSAIMGAT.BIN を D:\ にコピーします。 | ||
+ | |||
+ | prompt>imgtol e d:osaimgat.bin d:debugfd.bin 1440 | ||
+ | prompt>copy debugfd.bin d:\bochs\osaimgat.bin | ||
+ | |||
+ | 上記の操作で1440KBのディスクイメージが作成されます。 | ||
+ | |||
+ | *4. Bochsの設定と起動 | ||
+ | |||
+ | D:\bochs\boshsrc.txt | ||
+ | |||
+ | romimage: file=bios/BIOS-bochs-latest, address=0xf0000 | ||
+ | megs: 32 | ||
+ | vgaromimage: bios/VGABIOS-lgpl-latest | ||
+ | floppya: 1_44=osaimgat.bin, status=inserted | ||
+ | boot: floppy | ||
+ | floppy_bootsig_check: disabled=0 | ||
+ | log: bochsout.txt | ||
+ | panic: action=ask | ||
+ | error: action=report | ||
+ | info: action=report | ||
+ | debug: action=ignore | ||
+ | debugger_log: - | ||
+ | vga_update_interval: 300000 | ||
+ | keyboard_serial_delay: 10 | ||
+ | keyboard_paste_delay: 100000 | ||
+ | floppy_command_delay: 500 | ||
+ | ips: 1000000 | ||
+ | pit: realtime=1 | ||
+ | mouse: enabled=0 | ||
+ | private_colormap: enabled=0 | ||
+ | fullscreen: enabled=0 | ||
+ | screenmode: name="sample" | ||
+ | keyboard_mapping: enabled=0, map= | ||
+ | i440fxsupport: enabled=0 | ||
+ | |||
+ | これで bochs を起動してみましょう。うまくいけばそんなに待たずにOSASKが起動するはずです。 | ||
+ | |||
+ | *5. ディスクイメージの書き換え | ||
+ | |||
+ | Disk Explorer | ||
+ | |||
+ | [[download:http://hp.vector.co.jp/authors/VA013937/]] | ||
+ | |||
+ | 上記のツールで OSAIMGAT.BIN を開き、先ほど作成した WABA.BIN をコピーします。ディスクイメージを開くときは bochs を止めておきましょう。書き換えが終わったら再度 bochs を起動して動作を確認しましょう。 | ||
+ | |||
+ | *6. デバッグ | ||
+ | |||
+ | -WABAではデバッグにcprintfを使っています。 | ||
+ | -自分も使ってみたいひとはWABAのソースを一通りダウンロードして眺めてみましょう。 | ||
+ | -デバッグのヒントは [[OSASK_Faults]] にあります。 | ||
+ | -General Protect 0007:00XXXX の XXXX を WABA.map で探すと落ちた場所がだいたいわかります。 | ||
+ | -General Protect が出たらバイナリーエディタでWABA.orgを開き、0x010-0x013 をチェックします。 | ||
*こめんと欄 | *こめんと欄 | ||
+ | -とりあえずできた。校正、追加、修正大歓迎です。 -- [[ベイサイド]] SIZE(10){2003-10-21 (火) 11:48:47} | ||
+ | -rulファイルでの、lib/lccwin32.lib;の記述はいりません。有害なので消しましょう。 -- [[K]] SIZE(10){2003-10-21 (火) 15:19:28} | ||
+ | -消しますた。 -- [[ベイサイド]] SIZE(10){2003-10-21 (火) 17:15:37} | ||
+ | -多分bochsの方の操作でイメージ外しておけば、bochs起動したまんまでもイメージに書き込めるんじゃないかな。で、書き込み終わったらまた入れ直す。 -- [[名無しさん]] SIZE(10){2003-11-11 (火) 23:04:04} | ||
+ | -うわぁぁん! 先にやられてしまった! おつかれさまー。 (^^) -- ''hideyosi'' SIZE(10){2004-01-23 (金) 17:22:28} | ||
+ | -''本家にはバグ:'' がーん!そうなんですか?そいえば、つい最近バージョンアップしたようですが(2.1?)やっぱりバグがあるまんまなのかな?(試してみよう・・・) -- ''hideyosi'' SIZE(10){2004-01-23 (金) 17:23:56} | ||
+ | -ムズ( ^ ^ ; -- ''zizi'' SIZE(10){2004-07-22 (木) 10:41:04} | ||
+ | |||
#comment | #comment |
(This host) = http://osask.net