Turbo C 2.01 を Windows 10 (64bit) / 11 にインストールしてみる

# はじめに

Embarcadero からアンティークソフトウェアとして無償公開されている **Turbo C 2.01** を、Windows 10 (64bit) / 11 環境で使えるようにする方法についての詳細です。

## ■ Turbo C 2.01
**Turbo C** は、ANSI C 準拠の C コンパイラであり、IBM PC における最初の C 言語用統合開発環境 (IDE) 製品です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/89dbbbdf-6422-d97e-d1ee-0a40b8d54eb6.png)

**Turbo Turbo C 2.01** ではソースレベルデバッガが組み込まれています。

**See also:**

 - [CB Magazine – ボーランドが送り出したC/C++の歴史 (EDN)](https://edn.embarcadero.com/jp/article/33626)

# インストール
 - **Turbo C 2.01** は MS-DOS で動作するアプリケーションなので、MS-DOS や 16bit Windows へは普通にインストールできます。
 - 32bit Windows の場合、OS の種類によっては NTVDM が別途インストールされるかもしれませんが、基本的にはそのままインストールできます。
 - 64bit Windows では MS-DOS アプリケーションが動作しませんので、**MS-DOS Player** を使って動作させます (**DOSBox** 上でも動作可能です)。

本記事は Windows 10 (64bit) / 11 への Turbo C 2.01 インストールを試みるものとなっています。

## MS-DOS Player 

MS-DOS Player アーカイブの `binary` サブフォルダには複数のバージョンの `MSDOS.EXE` があります。

| 32bit 版 | 64bit 版 | 説明 |
|:---|:---|:---|
| i86_x86 | i86_x64 | 8086 サポート |
| v30_x86 | v30_x64 | V30 サポート |
| i286_x86 | i286_x64 | 80286 サポート |
| i386_x86 | i386_x64 | 80386 サポート |
| i486_x86 | i486_x64 | 80486 サポート |
| ia32_x86 | ia32_x64 | IA32 (Pentium) サポート |

基本的にはどれを使っても構いませんが、リストの下に行くほど高機能かつバイナリサイズが大きくなります。

MS-DOS Player では MS-DOS アプリケーションを 64bit Windows で動作するようにコンバートできるのですが、この時できる実行ファイルのサイズも `MSDOS.EXE` のサイズに比例します。

**Download:** [MS-DOS Player (TAKEDA, toshiya)](http://takeda-toshiya.my.coocan.jp/msdos/)

## 具体的なインストール手順

### 1. Turbo C 2.01 をダウンロード

CodeCentral から **Turbo C 2.01** をダウンロードしてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/326071e8-4588-6ae2-93da-7ba39a143226.png)

**Download:** [Antique Software: Turbo C 2.01 (Embarcadero)](https://cc.embarcadero.com/item/25636)

※ EDN アカウントを持っていない場合には、事前に [EDN アカウントを取得](https://members.embarcadero.com/newuser.aspx?lang=jp)する必要があります。

<!--
[EDN を介さない直接ダウンロードリンク]
Turbo C 2.0: http://altd.embarcadero.com/download/museum/tc201.zip
-->

### 2. アーカイブを解凍
ダウンロードした `TC201.ZIP` を適当な場所に解凍します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9c2f3eb3-587b-9d85-5c20-78841c4266a6.png)

解凍すると `TC201` フォルダができます。

### 3. MS-DOS Player をコピー
ダウンロードした  MS-DOS Player (`MSDOS.EXE`) を `TC201` サブフォルダ内にコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/fe5b833a-2df4-9589-a590-0dc361360149.png)

### 4. セットアップスクリプトの作成
`TC201` サブフォルダ内にセットアップ用のスクリプト `SETUP.CMD` を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/24e022a8-2a25-2edc-c725-5c0c9d11dcf3.png)

内容は次の通りです。

```bat:SETUP.CMD
@ECHO OFF
CLS

SET TC=TC
SET TCHEADER=%TC%\INCLUDE
SET TCLIB=%TC%\LIB
SET TCBGI=%TC%
SET TCEXAMPLE=%TC%

MKDIR .\%TC%
MKDIR .\%TCHEADER%
MKDIR .\%TCHEADER%\SYS
MKDIR .\%TCLIB%
MKDIR .\%TCBGI%
MKDIR .\%TCEXAMPLE%

:: Turbo C Directory
COPY .\DISK1\CINSTXFR.EXE .\%TC%
COPY .\DISK1\OBJXREF.COM  .\%TC%
COPY .\DISK1\README       .\%TC%
COPY .\DISK1\README.COM   .\%TC%
COPY .\DISK1\TCHELP.TCH   .\%TC%
COPY .\DISK1\THELP.COM    .\%TC%
COPY .\DISK1\THELP.DOC    .\%TC%
COPY .\DISK2\CPP.EXE      .\%TC%
COPY .\DISK2\GREP.COM     .\%TC%
COPY .\DISK2\HELPME!.DOC  .\%TC%
COPY .\DISK2\MAKE.EXE     .\%TC%
COPY .\DISK2\TC.EXE       .\%TC%
COPY .\DISK2\TCC.EXE      .\%TC%
COPY .\DISK2\TCCONFIG.EXE .\%TC%
COPY .\DISK2\TCINST.EXE   .\%TC%
COPY .\DISK2\TLINK.EXE    .\%TC%
COPY .\DISK2\TOUCH.COM    .\%TC%

:: Header Files Subdirectory
COPY .\DISK3\*.H          .\%TCHEADER%
COPY .\DISK3\SYS\*.H      .\%TCHEADER%\SYS

:: Library Subdirectory
COPY .\DISK1\C0H.OBJ      .\%TCLIB%
COPY .\DISK1\CH.LIB       .\%TCLIB%
COPY .\DISK1\INIT.OBJ     .\%TCLIB%
COPY .\DISK1\MATHH.LIB    .\%TCLIB%
COPY .\DISK3\*.OBJ        .\%TCLIB%
COPY .\DISK3\*.LIB        .\%TCLIB%

:: BGI Subdirectory
msdos -e .\DISK1\\UNPACK -r .\DISK1\BGI.ARC      .\%TCBGI%

:: Examples Subdirectory
COPY .\DISK1\GETOPT.C     .\%TCEXAMPLE%
COPY .\DISK1\HELLO.C      .\%TCEXAMPLE%
COPY .\DISK1\MATHERR.C    .\%TCEXAMPLE%
COPY .\DISK1\SSIGNAL.C    .\%TCEXAMPLE%
msdos -e .\DISK1\UNPACK -r .\DISK1\EXAMPLES.ARC .\%TCEXAMPLE%
msdos -e .\DISK1\UNPACK -r .\DISK1\MCALC.ARC    .\%TCEXAMPLE%
msdos -e .\DISK1\UNPACK -r .\DISK1\STARTUP.ARC  .\%TCEXAMPLE%

pause
```

環境変数の内容を変更して、純正インストーラと同じ処理にする事ができます。

| 環境変数 | 指定されるフォルダ | デフォルト |
|:---|:---|:---|
| TC  | Turbo C Directory | TC |
| TCHEADER  | Header Files Subdirectory | TC\INCLUDE |
| TCLIB  | Library Subdirectory | TC\LIB |
| TCBGI  | BGI Subdirectory | TC |
| TCEXAMPLE | Examples Subdirectory | TC |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/898d2c4a-9f71-292c-db20-0383a0d87760.png)

### 5. セットアップスクリプトの実行
スクリプト `SETUP.CMD` を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/52c0714a-d979-b50c-0dc7-d522d397c595.png)

`TC` フォルダが生成されます。

### 6. フォルダの移動
生成された `TC` フォルダを任意の場所に移動します。ここでは `C:\DOS` フォルダへ移動したものとして話を進めます。

### 7. TURBOC.CFG の作成
`C:\DOS\TC` フォルダの中に `TURBOC.CFG` を作成し、インクルードパスとライブラリパスを指定します。デフォルトのスクリプトのままだと次のような内容になります。

```txt:TURBOC.CFG
-IC:\DOS\TC\INCLUDE
-LC:\DOS\TC\LIB
```

`/I` オプションの後にインクルードパス (ヘッダへのパス) を、`/L` オプションの後にライブラリパスを指定します。具体的にはスクリプトの環境変数 `TCHEADER` と `TCLIB` が指すパスを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/39d9d4fd-7c1b-a5fb-f424-8735b9cd6cf5.png)

各種パスは IDE の `[Options | Directories]` からも設定できます。パスを書き替えたら、 `[Options | Save Options]` で忘れずに保存してください。

:::note warn
パスが正しく設定されていないと、コンパイル時に
`Unable to open include file 'STDIO.H'`
のように怒られてしまう事があります。
:::

### 8. 起動スクリプトの作成
`C:\DOS\TC` フォルダの中に `TC.CMD` を作成します。

```bat:TC.CMD
@echo off
cls

set PATH=C:\DOS\TC;%PATH%
cd C:\DOS\TC

chcp 437
msdos tc.exe
```

※ 日本語環境の Windows の場合、`TC.EXE` の実行前に `chcp 437` を実行しないと表示がおかしくなります。
※ `MSDOS.EXE` は `C:\DOS\TC` フォルダまたはパスの通ったフォルダにコピーしておきます。

`TC.CMD` を実行すれば、めでたく **Turbo C 2.01** が起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/69b38fa4-fd63-ca0a-0d55-ff92140a4df6.png)

### 9. 起動用ショートカットの作成
起動用ショートカットは次のように指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/7811ecf9-b991-a7bf-297c-7480b10e0aef.png)

| 項目 | 内容 |
|:---|:---|
| リンク先  | C:\Windows\System32\cmd.exe /c C:\DOS\TC\TC.CMD |
| 作業フォルダ | C:\DOS\TC |

アイコンはお好きなものを指定して下さい。

**Download:** [Turbo C 2.01 Icon](https://ht-deko.com/antique/TC.ico)


# おわりに
本来は `TC201\DISK1` にある `INSTALL.EXE` を実行すればインストールできるのですが、

 - MS-DOS Player では *.ARC の解凍で止まる (そのままでは UNPACK.COM が動かない)
 - ディスク交換の際にエラーになり、ファイルコピーを余儀なくされる

ちょっとした罠があるため、Windows 10 (64bit Windows) / 11 では上記手順でのインストールをオススメします。

※ なお、この問題は同じアンティークソフトウエアである **Turbo C++ 1.01** では発生しません。

:::note info
定義済みマクロ `__TURBOC__` は 0x201 を返します。
:::

**See also:**

 - [Embarcadero が公開しているアンティークソフト一覧 (Qiita)](https://qiita.com/ht_deko/items/ae7605c6b1f426ae234a)
 - [Pascal の勉強に使えそうな Pascal 処理系 (Qiita)](https://qiita.com/ht_deko/items/6376997a6d74e77c89e3) 
 - [Turbo Pascal 1.0 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/54cefe48e729742e818d) 
 - [Turbo Pascal 3.02 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/03f5f7ee0893402f99f6) 
 - [Turbo Pascal 5.5 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/eb35e0480559f893a9b8) 
 - [Turbo C++ 1.01 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/7a0e5d84d258c3b1a795) 
 - [Delphi 1.0 Client/Server を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/a65e0950b906d28ccb5f)