1: 2003-10-20 (月) 23:27:29 |
現: 2024-01-08 (月) 12:58:39 ゲスト |
- | *用意するもの | + | このページの内容はもう古いです。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 |