目指せDOSエクステンダでHello world?

Bochs上にてフリーのDOSDOSエクステンダの構成にて
開発を進めたい。
コンパイラは巨匠に推奨された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.sys

C:\NEWDIR.0>vmap -
VMAP Version 2.01 Copyright (C) 1989-91 by c.mos

addr 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, world

C:\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形式はBochsFreeDOS+XMS(あり|なし)では実行できず。
ここしばらくはOpenWatcom+DOS/32Aにて進めてみることにする。