歴史: IIJ が日本で初めてダイアルアップ IP サービスを始めたときのチラシ

IIJ(インターネットイニシアティブ)が 1994 年に日本で初めてダイアルアップ IP サービスを開始したときのチラシの一部をアップロードしておきます。Web 上に見当たらなかったので。 サービス内容のご案内 「サービス内容のご案内」と題した計 6 ページのチラシの最初のページです。 インターネットへの接続方法として次の 3 種類が示してあり、 インターネット接続サービス ダイアルアップ IP サービス UUCP サービス 続く文章で各接続方法について説明しています。 ダイアルアップ IP サ […]

コマンドプロンプトの、たぶんあまり知られていないテクニック

Windows のコマンドプロンプトを便利に使うための、たぶんあまり知られていないテクニックを 5 つ紹介します。 動作確認環境 Windows 10 Home 21H1, 64bit ファイルのフルパス名を表示する dir コマンドは、通常、狭義のファイル名(ベースネーム+拡張子)を表示します。たとえば、Windows のシステムディレクトリにて「dir kernel*.dll」と入力すると、次のように表示されます。 この dir コマンドに「/s /b」オプションを付加すると、フルパス名が表 […]

これは便利! Z80 マシン語コーディング用紙

「これは便利!」というのは冗談ですが、Z80 用のマシン語コーディング用紙(コーディングシート)が残っていたのでアップロードしておきます。 マシン語コーディング用紙 「マシン語コーディング用紙」の表紙です。1985 年ごろに家電量販店(ダイイチ)で購入したものです。 「Addcom」というロゴから、アドコム電子株式会社製であることが分かります。下半分に書いてあるのは、当時普及していた 8bit CPU である Z80 のマシン語です。 シート本体です。 使い方はおおよそ次のようになります。 アセ […]

アイオーデータのバンクメモリ仕様書(PC-9801時代)

アイオーデータ機器 (IO DATA) が策定したバンクメモリ仕様書 (BMS) の一部を、NEC PC-9801 時代の史料としてアップロードしておきます。Web 上に見当たらなかったので。 バンクメモリ仕様書 バンクメモリ仕様書の表紙です。「Bank Memory Specification Version1.3, Copyright 1988, 89 I・O DATA DEVICE Inc.」とあります。 当時はメールが普及しておらず、アイ・オー・データ社に「BMS の資料をください」と手 […]

Windows プログラムに埋め込まれた MS-DOS スタブのメッセージを表示する

MS-DOS スタブの「This program cannot be run in DOS mode.」というメッセージを表示するプログラムを作ります。 動作確認環境 Windows 10 Home 21H1, 64bit Visual Studio Community 2019 プログラムの作成 既存のほとんどのプログラムには、0x4e バイト目から「This program cannot be run in DOS mode.」という文字列が埋め込まれています。 例 1. メモ帳 例 2. […]

コンパイラは数を当てるマジックを解けるか

「任意の数を思い浮かべてもらい、特定の計算をしてもらい、その結果を当てる」という子供向けのマジックがあります。これを C 言語のコンパイラで解いてみましょう。 動作確認環境 Windows 10 Home 21H1, 64bit Visual Studio Community 2019 マジックの内容 このマジックは無限のバリエーションが作れますが、今回は次の計算をすることにします。 好きな数を思い浮かべてください。 その数に 5 を足してください。 2 倍してください。 4 を引いてください。 […]

rundll32 はなぜ __cdecl の関数も __stdcall の関数も呼び出せるのか

通常、関数を呼び出す際は、呼び出す側と呼び出される側とで呼び出し規約 (calling convention) を合わせておく必要があります。また、__stdcall 呼び出し規約では、引数の個数も合わせておく必要があります。しかし、rundll32 コマンドは、呼び出す関数の仕様を規定していません。なぜ、どんな関数も呼び出せるのでしょうか。 動作確認環境 Windows 10 Home 21H1, 64bit(ただし、今回は 32bit の C:\Windows\SysWOW64\rundll […]

コマンドプロンプトから自分自身の PID を取得する方法

コマンドプロンプトから自分自身の PID(プロセス ID)を取得する方法について、失敗例も含めて説明します。 動作確認環境 Windows 10 Home 21H1, 64bit tasklist のフィルター機能 Windows 付属の tasklist コマンドを使うと、実行中のプログラムとその PID などの一覧が表示されます。 この tasklist を利用して現在のコマンドプロンプトの PID のみを抜き出せないかと、tasklist のヘルプを見てみました。 すると「/FI フィルタ […]

rundll32 が関数に渡す引数は何なのか

概要 Windows 付属の rundll32.exe コマンドを利用して、指定した DLL 内の関数を呼び出すことができます。このとき rundll32 が関数に渡す引数について、やや詳しく説明します。 動作確認環境 Windows 10 Home 21H1, 64bit(ただし、今回は 32bit の C:\Windows\SysWOW64\rundll32.exe モジュールについて扱います) Visual Studio Community 2019 rundll32 の使い方 rundl […]

ヘッダファイルやライブラリを where コマンドで探す

Visual C++ のヘッダファイル (.h) やライブラリ (.lib) は、あちこちに分散していたり、バージョンアップのたびに場所が変わったりして、何がどこにあるのかすぐに分からなくなってしまいます。そんなとき、通常は実行ファイルの検索に使う where コマンドを利用して、ヘッダファイルやライブラリを探すことができます。 動作確認環境 Windows 10 Home 21H1, 64bit Visual Studio Community 2019 ヘッダファイルを探す where コマン […]