ページへ戻る

− Links

 印刷 

Bochsを使ったソフト開発 のソース :: OSASK計画

osaskwiki:Bochsを使ったソフト開発のソース

« Prev[3]  
このページの内容はもう古いです。osa_dir2 を利用すれば、make run 一発でおしまいです。

*0. はじめに

フリーの x86 シミュレータ bochs とディスクイメージがあれば、PC1台で効率的に OSASK アプリを作ることができます。私がいろいろ試した軌跡を残しておきます。introシリーズを読みながらやるといいと思います。

*1. 用意するもの

**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

« Prev[3]