目指せDOSエクステンダでHello world?
Bochs上にてフリーのDOSとDOSエクステンダの構成にて
開発を進めたい。
コンパイラは巨匠に推奨されたDigital Marsを選ぶ
DOSエクステンダは同じく推奨されたFree386にしたい。
ここではまる。
ポイント1.Free386はPharLap形式が実行できるのだが、DMCでコンパイルオプション -mp指定時には
386link.exeが必要となる。これはFM-TOWNSなどで使われるHigh-Cに付属のものでよいと思うが
あいにく手持ちが無い。
ポイント2.Free386はVCPIを用いているのだが、VCPIマネージャがFreeDOSには存在しない。
かろうじて存在するのはfdxms.sysぐらいだ。(FreeDosXMS?)
DMCでは-mpにてPharLap形式が作成でき、
- mxにてDOSX32形式が生成できるはずだが、
リンカの都合で今のところうまくいってない。
BochsにてFreeDOSのXMSを有効にしてみる。
fdxms.yssをconfig.sysに仕込み
懐かしのvmapをHDイメージに入れる。
DiskExplorerを用いた。
DiskExplorerでは(Manual HD)→フォーマット(AT形式)を選ぶとパーティションが見える。
C:\NEWDIR.0>type c:\config.sys
device=\bin\fdxms.sysC:\NEWDIR.0>vmap -
VMAP Version 2.01 Copyright (C) 1989-91 by c.mosaddr PSP blks size owner/parameters hooked vectors
- ---- ---- ------ ------------------------- -----------------------------
12F9 0050 2 608
1321 <-- 2 118320 command /P 00 22 23 24
3006-9FC0 1 457616
- XMS ver3.00 -----
HMA not used
EMB free: 31680 KB
XMSはまず確保できた。
OpenWatcomにて試行してみる。
ごく単純なHello, worldをDOS/4GW形式にてコンパイルしてみる。
C:\NEWDIR.0>dos4gw noname.exe
DOS/4GW Protected Mode Run-time Version 1.97
Copyright (c) Rational Systems, Inc. 1990-1994
hello, worldC:\NEWDIR.0>dos32a noname.exe
DOS/32A -- Protected Mode Run-time Version 7.2
Copyright (C) Supernar Systems, Ltd. 1996-2002
DOS/32A warning (9004): mouse initialization failed
hello, world
互換性があるというDOS/32Aでもうまく実行できた。
前述のXMSドライバは動かしていても動かしていなくてもこのDOSエクステンダは動く。
DOSエクステンダには
- XMSでメモリ情報を取得するもの
- VCPIでメモリ情報を取得するもの
- DPMIでのプログラムローダ
- INT15Hを使用するもの
などがあるようだが、今回は動作してよかった。
OpenWatcomでは他にもPharlap形式のビルドやCauseWay形式のビルドが可能だった。
CauseWay形式はBochsとFreeDOS+XMS(あり|なし)では実行できず。
ここしばらくはOpenWatcom+DOS/32Aにて進めてみることにする。