このページの内容はもう古いです。osa_dir2 を利用すれば、make run 一発でおしまいです。
0. はじめに
フリーの x86 シミュレータ bochs とディスクイメージがあれば、PC1台で効率的に OSASK アプリを作ることができます。私がいろいろ試した軌跡を残しておきます。introシリーズを読みながらやるといいと思います。
1. 用意するもの
1.1 Bochs
がじぇっとボックス版Bochs
VESAによる256色表示可能なBochs(2.0.2ベース)
D:\bochs(例)にインストールします。本家 bochs は VGA 回りにバグがあるので初心者にはおすすめしません。
1.2 アプリケーションのソースファイル
D:\WABA(例)に作成します。以下WABAの部分を適当に読み替えてください。
1.3 各種コンパイル&リンクツール
tolset07
以下のファイルを 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
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
上記のツールで 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 をチェックします。
こめんと欄
- とりあえずできた。校正、追加、修正大歓迎です。 -- ベイサイド 2003-10-21 (火) 11:48:47
- rulファイルでの、lib/lccwin32.lib;の記述はいりません。有害なので消しましょう。 -- K 2003-10-21 (火) 15:19:28
- 消しますた。 -- ベイサイド 2003-10-21 (火) 17:15:37
- 多分bochsの方の操作でイメージ外しておけば、bochs起動したまんまでもイメージに書き込めるんじゃないかな。で、書き込み終わったらまた入れ直す。 -- 名無しさん 2003-11-11 (火) 23:04:04
- うわぁぁん! 先にやられてしまった! おつかれさまー。 (^^) -- hideyosi 2004-01-23 (金) 17:22:28
- 本家にはバグ: がーん!そうなんですか?そいえば、つい最近バージョンアップしたようですが(2.1?)やっぱりバグがあるまんまなのかな?(試してみよう・・・) -- hideyosi 2004-01-23 (金) 17:23:56
- ムズ( ^ ^ ; -- zizi 2004-07-22 (木) 10:41:04
Counter: 108,
today: 1,
yesterday: 0
初版日時: 2003-10-20 (月) 23:27:29
最終更新: 2009-11-17 (火) 00:00:00 (JST) (319d) by ゲスト
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | Bochsを使ったソフト開発 | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | ゲスト | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |