Open Watcom v2-Debian

MS-DOSの開発環境を調べていたところopen-watcom-v2というプロジェクトが見つかりました。

https://github.com/open-watcom/open-watcom-v2

[Open Watcom](http://openwatcom.org/)は元々パッケージソフトのWatcomというCやFortranの開発環境がオープンソースになったものでした。このオープンソースはバージョン1.9まで開発され、v2はそれからフォークしたものです。

Watcomは80年代からあったようです。アメリカに出張した時に購入した1989/10月号のDr.Dobb's JOOUNALを見るとTurbo Cの様な広告はありませんが、Watcom C 7.0の小売店での定価が＄395とありました。Turbo Cが＄150でLattice C 6.0が＄250なのでちょっと高めの製品だったようです。Watcomは日本でも代理店が販売していたようですが、Turbo CやLattice Cなどに比べると知名度が低かったと思われます。

githubのレポジトリをみるとかなり活発に開発が進んでいるようなのでDebian/i386なホストで試して見る事にしました。

リリースタグのAssetsにある以下のファイルをダウンロードします。

open-watcom-2_0-c-linux-x86

このファイルはインストーラーで、実行ビットを立てて実行すると/usr/bin/watcomにファイルがコピーされます。インストーラーには日本語のメッセージも入っているようです。

/usr/bin/watcom/binlの下にMS-DOS(16ビット)のコンパイラーがあるのでPATHを通します。またWATCOM環境変数を/usr/bin/watcomにしておきます。

```c:a.c
#include <stdio.h>

int main()
{
    printf("MORIMORI");
    return 0;
}
```

をコンパイルしてみます。

```
$ wcl -I/usr/bin/watcom/h -l=com -fe=a.com a.c
Open Watcom C/C++ x86 16-bit Compile and Link Utility
Version 2.0 beta Feb 26 2021 00:37:46 (32-bit)
Copyright (c) 2002-2021 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
        wcc a.c  -I/usr/bin/watcom/h
Open Watcom C x86 16-bit Optimizing Compiler
Version 2.0 beta Feb 26 2021 00:29:07 (32-bit)
Copyright (c) 2002-2021 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
a.c: 8 lines, included 802, 0 warnings, 0 errors
Code size: 19
        wlink @__wcl__.lnk
Open Watcom Linker Version 2.0 beta Feb 26 2021 00:25:57 (32-bit)
Copyright (c) 2002-2021 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating a DOS .COM executable
```

wclはコンパイラーのwccとリンカーのwlinkのラッパーになります。

a.comファイルをPC-9801FA2(MS=DOS 3.3D)に転送して実行します。

```
A>a
MORIMORI
```

COMで作りましたが、もちろんEXEも作れます。

c++も試してみました。

```c++:b.cpp
#include <iostream>

using namespace std;

int main(){
  cout << "MORIMORI" << endl;
  return 0;
}
```

```
$ wcl -I/usr/bin/watcom/h -l=com -fe=b.com b.cpp
Open Watcom C/C++ x86 16-bit Compile and Link Utility
Version 2.0 beta Feb 26 2021 09:16:07 (32-bit)
Copyright (c) 2002-2021 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
        bwpp b.cpp  -I/usr/home/hiroki/ow/watcom/h
Open Watcom C++ x86 16-bit Optimizing Compiler
Version 2.0 beta Feb 26 2021 09:43:59 (32-bit)
Copyright (c) 2002-2021 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1989-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
b.cpp: 104 lines, included 1755, no warnings, no errors
Code size: 26
        bwlink @__wcl__.lnk
Open Watcom Linker Version 2.0 beta Feb 26 2021 09:11:12 (32-bit)
Copyright (c) 2002-2021 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating a DOS .COM executable
```

こちらもPC-9801FA2で動きました。

16ビット環境は8ビットや32ビットに比べめっきり陰が薄くなりましたが、昔取った杵柄を思い出してみませんか？