以前マイクロソフトが無償配布していたWindows Server 2003 SP1 DDKからMASM5.1とMASM7とMS-C 8が取り出せるとのことなので試してみました。
MASM5.1は16ビットアプリケーションでした。
MS-C 8とMASM7は32ビットアプリケーションでした。
Windows Server 2003 SP1 DDK の入手
Windows Server 2003 SP1 DDKは2008年ごろ、マイクロソフトからISOファイル 1830_usa_ddk.iso を無償で入手することができました。
ちなみにDDKとは、Driver Development Kitのことでデバイスドライバを開発するためのソフトウェアです。
Windows Server 2003 SP1 DDK の配布ページのURL https://www.microsoft.com/japan/whdc/DevTools/ddk/default.mspx でした。
2020年現在はアクセスできませんが、そのURLをweb archiveで調べると、保存されていました。
http://web.archive.org/web/20080213193656/https://www.microsoft.com/japan/whdc/DevTools/ddk/default.mspx
幸運にも、DDKのISOファイルも保存されていました。
http://web.archive.org/web/20111222012852/http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso
MASM 5.1 を取り出す
1830_usa_ddk.iso をマウントします。
common\d16bebin.cabからmasm.exe を取り出します。(7-Zzipを使いました。)
このmasm.exeは16ビットアプリケーションなので、Windows10のコマンドプロンプトでは動作しません。
DOSのエミュレータDOSBoxを使うと動作しました。
MASM 7.10.4035を取り出す
1830_usa_ddk.iso をマウントします。
common\X86dBINS.cabから X86dBINS_FILE_19を取り出します。(7-Zipを使いました。)
X86dBINS_FILE_19をml.exeにリネームします。
このファイルはwin32アプリなのでWindows10のコマンドプロンプトでうごきました。
C:\DOS>ml.exe
Microsoft (R) Macro Assembler Version 7.10.4035
Copyright (C) Microsoft Corporation. All rights reserved.
usage: ML [ options ] filelist [ /link linkoptions]
Run "ML /help" or "ML /?" for more info
Microsoft C 8.0cを取り出す
1830_usa_ddk.iso をマウントします。
c:\MSCにインストールするとします。
C: ドライブに\MSC\include ディレクトリを作ります。
C:\msc\include ディレクトリに d16beinc.cab ファイルを展開します。(7-Zzipを使いました。)
C: ドライブに \MSC\include\sys ディレクトリを作ります。
sys_locking.h, sys_stat.h, sys_timeb.h, sys_types.h, sys_utime.h の
ファイルを \MSC\include\sys ディレクトリに移動させて、ファイル名から
sys_ の部分を取り除きます。
C: ドライブに \MSC\lib ディレクトリを作ります。
C:\msc\lib ディレクトリに d16belib.cab ファイルを展開します。(7-Zzipを使いました。)
C: ドライブに \MSC\bin ディレクトリを作ります。
C:\MSC\bin ディレクトリに d16bebin.cab からcl.exe cl.err cl.def cl.msg c13216.exe link.exe q23.exeを取り出します。(7-Zzipを使いました。)
MS-C8はWin32アプリなので、Windows10のコマンドプロンプトで動作しました。
コマンドプロンプト起動後に環境変数の設定をします。
SET PATH=%PATH%;C:\msc\bin
SET INCLUDE=C:\msc\include
SET LIB=C:\msc\lib
hello.c をコンパイルしてみました。
C:\MSC>more hello.c
#include <stdio.h>
int main(void) {
printf("hello world\n");
return 0;
}
C:\MSC>cl hello.c
Microsoft (R) C/C++ Optimizing Compiler Version 8.00c
Copyright (c) Microsoft Corp 1984-1993. All rights reserved.
hello.c
Microsoft (R) Segmented Executable Linker NTGroup Version 5.60.220 Dec 28 1999
Copyright (C) Microsoft Corp 1984-1993. All rights reserved.
Object Modules [.obj]: hello.obj
Run File [hello.exe]: "hello.exe" /noi
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]: ;
できあがったhello.exeは16ビットアプリケーションなのでDOSBoxで実行すると動きました。
c13216.exeとq23.exeにはPhar Lap Softwareのコピーライトが含まれているので640KB以上のメモリを使うためのソフトウェアっぽいです。