微かに柔らかいお手本

他の実装がどうなってるのか気になったので、確かマイクロソフトftpVC++1.0 のランタイムソースがあったのを思い出し早速ゲット…って ftp.microsoft.com がつながんないヨ! ぎにゃー!

しかたないのでお勝手ミラーを探索:
http://ftp.sunet.se/pub/vendor/microsoft/Softlib/ (いきなり MSLFILES/ に行くと重くて死ねる)
とりあえず VCCRT1.EXE と VCCRT2.EXE が該当ファイル。
オプション -d をつけて実行すると適当に展開される(-d をつけないとぜんぶ同じディレクトリに展開されるので悲惨)。どれどれ。なるほど、MS 純正の int86 もスタックに積んだ int n のコードを呼び出しているようです。むこうの方がソースがまともで int25h/26h も考慮してあった(そういえばあれってスタック上にエラーコード返すんだっけ。すっかり忘れてたヨ)。もうちょっとレジスタやりくりしてスタック消費量を減らしたほうがいいかなあ、と思わないでもないですがもうあのコードを見たくないという気持ちもあり。嗚呼。