しばらく開発を続けていたアプリケーションがある程度動くようになってきたので公開します。
今回公開するのは doscurl です。その名前の通り「16bit の PC-DOS 環境で動く curl」を目指してオープンソースで開発していました:

(↑ 16bit PC-DOS 環境で doscurl を何のオプションもつけずに実行(=ヘルプ表示)したところ)
doscurl を実際に利用するにはこの GitHub リポジトリをクローンして、cpp/doscurl.exe を 16bit PC-DOS にコピーするか、あるいはこのリンク先から doscurl.exe を直接ダウンロードして 16bit PC-DOS にコピーしてください。
ただし、大きな注意点があります。この doscurl を実際に使うには2つの厳しめの前提条件を満たしている必要があります:
(1)16bit PC-DOS 環境があること(Windows のコマンドプロンプト不可)
(2) (1) に mTCP を導入した TCP/IP ネットワークが有効になっていること
まず(1)の環境が手元にある、という人自体が珍しいと思っています。ただ doscurl は 16bit PC-DOS 向けにクロスコンパイルされたツールなので、実機はもちろん VM やエミュレータでもよいので 16bit PC-DOS 環境がないと doscurl は何の意味も持ちません。
次に(2)、これも(1)と同等またはそれ以上に高いハードルだと思ってます。一般的な 16bit PC-DOS 環境には TCP/IP スタックがありません。TCP/IP を使うには別途そのためのパケットドライバや TCP/IP スタックとなるライブラリ/ツールをインストールして、IP アドレスが割り振られた状態が必要になります。しかもそれだけではなく、その TCP/IP スタックは mTCP でないといけない、という条件も付いています(doscurl が mTCP スタックを前提に作られているからです)。
実機で PC-DOS 環境を持っている場合はともかく、VM やエミュレータ(DOSBox など)だとこの(2)の条件がかなり厳しいはずです。比較的多くの人が使っているであろう DOSBox はネットワーク未対応なので×、VM はインストール FDD などを持っていることが前提となるので、かなり限られた人だけが使っている PC-DOS 環境になっているはずです。
ただ、そんなあなた向けにこの(1)と(2)を同時に、それもエミュレータで解決する手順を私の過去ブログで紹介しています。ネットワーク拡張された DOSBox-X + mTCP + NE2000 パケットドライバを使って PC-DOS で TCP/IP を利用可能にするための手順です。要するにこの方法で doscurl の実行環境を用意することができます:
DOSBox-X で TCP/IP を利用可能にする
※なお DOSBox-X ではなく VM で同様の環境を作った人の記事を見つけました。こちらも参考にさせていただきました:
Let's get TCP working with MS-DOS
TCP/IP の使える(mTCP 付属の ping.exe などでネットワーク疎通まで確認しておいてください)PC-DOS 環境に上述の doscurl.exe をコピーすることで PC-DOS でも curl コマンドを利用することができるようになります:

↑なぜか "End: heap is corrupted!" というメッセージが表示されてしまいます。ライブラリ側の制約のようです。申し訳ないですが気にしないでください。(解決済み)
なお、doscurl の制約事項として「TLS 未対応」があります。わかりやすく言うと「https 未対応」です。16bit の TLS ライブラリがなく、自作を試みたのですがメモリ空間が全く足りずに諦めました。その代わりに「プロクシ対応」は実装済みです。例えば https://www.ibm.com/ に対して doscurl で "GET /" したい場合の手順は以下のようになります:
現実問題として、今ドキの HTTP サーバーの多くは HTTPS サーバーなので、https には対応したかったのですが、メモリ空間の事情であきらめました。その代わり、プロクシサーバーを経由することで課題を解決できるようにはしています。
今回公開するのは doscurl です。その名前の通り「16bit の PC-DOS 環境で動く curl」を目指してオープンソースで開発していました:

(↑ 16bit PC-DOS 環境で doscurl を何のオプションもつけずに実行(=ヘルプ表示)したところ)
doscurl を実際に利用するにはこの GitHub リポジトリをクローンして、cpp/doscurl.exe を 16bit PC-DOS にコピーするか、あるいはこのリンク先から doscurl.exe を直接ダウンロードして 16bit PC-DOS にコピーしてください。
ただし、大きな注意点があります。この doscurl を実際に使うには2つの厳しめの前提条件を満たしている必要があります:
(1)16bit PC-DOS 環境があること(Windows のコマンドプロンプト不可)
(2) (1) に mTCP を導入した TCP/IP ネットワークが有効になっていること
まず(1)の環境が手元にある、という人自体が珍しいと思っています。ただ doscurl は 16bit PC-DOS 向けにクロスコンパイルされたツールなので、実機はもちろん VM やエミュレータでもよいので 16bit PC-DOS 環境がないと doscurl は何の意味も持ちません。
次に(2)、これも(1)と同等またはそれ以上に高いハードルだと思ってます。一般的な 16bit PC-DOS 環境には TCP/IP スタックがありません。TCP/IP を使うには別途そのためのパケットドライバや TCP/IP スタックとなるライブラリ/ツールをインストールして、IP アドレスが割り振られた状態が必要になります。しかもそれだけではなく、その TCP/IP スタックは mTCP でないといけない、という条件も付いています(doscurl が mTCP スタックを前提に作られているからです)。
実機で PC-DOS 環境を持っている場合はともかく、VM やエミュレータ(DOSBox など)だとこの(2)の条件がかなり厳しいはずです。比較的多くの人が使っているであろう DOSBox はネットワーク未対応なので×、VM はインストール FDD などを持っていることが前提となるので、かなり限られた人だけが使っている PC-DOS 環境になっているはずです。
ただ、そんなあなた向けにこの(1)と(2)を同時に、それもエミュレータで解決する手順を私の過去ブログで紹介しています。ネットワーク拡張された DOSBox-X + mTCP + NE2000 パケットドライバを使って PC-DOS で TCP/IP を利用可能にするための手順です。要するにこの方法で doscurl の実行環境を用意することができます:
DOSBox-X で TCP/IP を利用可能にする
※なお DOSBox-X ではなく VM で同様の環境を作った人の記事を見つけました。こちらも参考にさせていただきました:
Let's get TCP working with MS-DOS
TCP/IP の使える(mTCP 付属の ping.exe などでネットワーク疎通まで確認しておいてください)PC-DOS 環境に上述の doscurl.exe をコピーすることで PC-DOS でも curl コマンドを利用することができるようになります:

↑
なお、doscurl の制約事項として「TLS 未対応」があります。わかりやすく言うと「https 未対応」です。16bit の TLS ライブラリがなく、自作を試みたのですがメモリ空間が全く足りずに諦めました。その代わりに「プロクシ対応」は実装済みです。例えば https://www.ibm.com/ に対して doscurl で "GET /" したい場合の手順は以下のようになります:
1. プロクシサーバーの用意
例えば Squid Proxy Server を使うなどして doscurl からアクセス可能なサーバー上にプロクシサーバーをインストールします:
例: docker run -d --name squid-proxy -p 3128:3128 ubuntu/squid:latest 2. プロクシサーバーを指定して doscurl 実行
"--proxy" オプションを付けて doscurl を実行する
例: doscurl --proxy http://(proxy server):3128 http://www.ibm.com/
現実問題として、今ドキの HTTP サーバーの多くは HTTPS サーバーなので、https には対応したかったのですが、メモリ空間の事情であきらめました。その代わり、プロクシサーバーを経由することで課題を解決できるようにはしています。













