2024年01月09日の日記です


パラレルポート  2024-01-09 15:04:44  コンピュータ

アマゾンPrimeVideo で、16bitセンセーションを見た。


素晴らしい内容だったので、PC98が「国民機」だった時代を知っている人はぜひ見てほしい。


もっとも、アニメとして、当時を知らない人でも楽しめる工夫はある。

でもやっぱ基本は「当時が懐かしい」人向けだ。


当時を知っているなら、また、何らかのクリエイターであるならば、何か感じられるはずだ。



で、僕はにわかファンなのであまり感想などは語らないことにしておく。

原作は同人誌から始まって、内容が良かったのでで商業単行本になり、アニメまでなった。


その転機ごとに、当時を知らない人でも楽しめるように工夫が凝らされてきたようだ。

だから、お話としてのクオリティは高い。


でも、僕はアニメを見て楽しかった、というだけの人間なので、変に語るとファンからお叱りが来るかもしれない。


…そういいつつ、別の場所では感想書いてる




さて、あまり語らないのにわざわざ日記に書くのは、そのアニメの中で「98の後ろについている端子類」の話が出ていたからだ。

これは話の中でちょっと「知識を試す」ための枕みたいなもので、詳細についてはどうでもよいのだけど。


それで、ちょっと思い出したことがあったんだ。


当時のパソコンでは大きくて場所を取っていた端子(ポート)の一つに、プリンタポートがある。


セントロニクス・プリンタポートと呼ばれる。

セントロニクス社はアメリカのコンピューター会社だが、発売したプリンタ製品が大ヒット。

このプリンタが使用する電気信号型式・コネクタ形状が業界標準になってしまった。


といっても、素晴らしい規格をまとめた、というのではない。

文字コードを 8bit パラレルで送ることができて、プリンタ側からは、プリンタの状態を示すために5本の信号線が出ている。

他にもいろいろあるが、単純で分かりやすく、機能として十分である。


この単純さが良かった。色々なことに使えた。


しかし、いまはプリンタは USB や WiFi で接続する時代だ。

プリンタポートはもう存在していない。



ここで、ちょっとプリンタポートについて語ってみよう。




8bit 時代の FM-7 では、プリンタポートに接続するジョイスティックがあった。


先に FM-7 の特殊性を書いておく必要があるな。

FM-7 では、キーボードが、ハードウェアとしてとてもよくできていた。


通常、キーボードは一度押すとそのキーに印字された文字が入力され、押し続けると、一定時間後にキーが連打されたような動作になる。


これ、通常はソフトウェアで実現されている。キー自体は「押されている」ことしかわからない。


押されると、そのキーの文字が入力されたことにされるが、押されたままでは次の文字入力は起こらない。

しかし、内部的にタイマーを持っていて、一定時間がたつとまた入力される。

以降、短時間で繰り返し入力が行われる。


このプログラム、作ったことがある人ならわかると思うが、案外面倒くさい。

面倒くさいから、FM-7 では、キーボード側にこの仕組みが実現されており、CPU からは「キーが入力されたかどうか」だけを見ればよいようになっている。


…これが余計なお世話で、キーが入力されたかどうかしかわからない。今押されているかどうかを知る方法がないのだ。


これは特にゲームで致命的で、「押しっぱなしの間動く」が実現できない。

だから、FM-7 のゲームでは、押したら動き始めて、停止キーを押すまで動き続けるのが普通だった。

微妙な動きが必要とされるゲームとかは非常に遊びづらい。


そこで、プリンタポートにジョイスティックをつなげる。


先に書いたが、プリンタポートには、プリンタ側の状態を知るための信号線が、5つある。

これで、上下左右と、1ボタンを認識することができる。


ジョイスティックのボタンが2つになったのは、ファミコン発売以降と考えてよい。

だから、初期のゲーム用なら、ボタンが1つあればよかった。



後には、ボタンが2つのジョイスティックも発売されている。

この場合、5つの信号線では足りない。


そこで、上下左右とボタン2個のスイッチを、8個あるデータ線に接続する。

スイッチの逆側は、プリンタの信号線(何でもよいが、仮に紙切れ信号としよう)に接続されている。


これで、データ信号を 1bit づつ ON にして、紙切れ信号を見れば、ジョイスティック側のスイッチが ON か OFF かわかることになる。

上下左右と2つのボタンを調べるのに、6回データを送り、信号線を見る必要があるが、とにかく調べることはできる。



いずれの場合も、特に規格が定まっていたわけではなく、様々なジョイスティックが作られていた。

ゲームに対応したジョイスティックでないと使えない。




自分が大学生の時の話。コンピューターサークルに入っており、毎年大学祭には、自作ゲームなどを展示していた。

当時 PC-9801 は、FM音源で音楽は演奏できたが、PCMによる音声再生などはできない時代。


先輩が、98 で録音音声を再生するプログラムを作った。

録音は FM-Towns で行っていたのだけど、再生は 98 。


実は、無理やり喋らすようなソフトは当時すでにあったのだが、音声が非常に汚かった。

しかし、先輩のプログラムは美しく再生する。


仕掛けは、プリンタポートにあった。非常に簡単なハードウェアをプリンタポートに繋いであったのだ。


プリンタポートには、8bit の信号が出力される。

これはデジタルデータだ。


先輩が作成したハードウェアは、このデジタルデータを、「倍々に増える抵抗を通して」スピーカーにつなげてあった。

8bit は2進数なので、128の位、64の位…となるのだが、128の位は抵抗を入れていない。64の位は電圧が 128の半分になるように抵抗を入れてある。

以降、32は64の半分、16は32の半分…となるように抵抗が入っていて。単純にこの電気信号を全部合わせたものがスピーカーに接続されるのだ。


これは、非常に単純だけど、デジタル・アナログ変換機だった。64 は 128の半分の電圧になるのだから、デジタル信号がアナログ化されたと言ってよいのだ。


プリンタポートにデータを送る速度などは、うまくプログラムしてやる必要がある。

パラレルポートってこんなことに使えるんだ、と目から鱗だった。


(先輩の説明によれば、8bit 時代のエロゲに、同様の原理で女の子の声を出力するソフトがあったので真似した、とのことだった。

 今調べたら、Wikipediaに情報があった。)




さて、時代はずっと後、IBM-PC にも CD-ROM が普及し始めたころ。

普及し始めた、とはいっても、まだ普及率は低い。接続にも別途拡張ボードが必要だったりして、使用している機種がノートパソコンだったりすると、拡張ボードが使えない。


そんな時代に、プリンタポートに接続する CD-ROM ドライブがあった。

僕はこれを使って知人のノートパソコンに Windows (たしか 95)をインストールしたことがある。


この頃は、プリンタポートが、「セントロニクス」の独自規格ではなく、IEEE 1284として規格化されていた。

そして、この規格化の際に、PCからプリンタに向けて 8bit 送信、となっていたポートが、8bit の双方向通信に拡張されていた。


CD-ROM は、この規格を利用したものだ。

…ただし、あくまでも珍品。


DOS に専用ドライバを自分で組み込まないと使えなかったし、転送速度も遅い。

Windows 用のドライバは、少なくとも僕が持っていたドライブにはなかった。




自分の過去の仕事の話だが、ゲームセンター用の占いゲームを作ったことがある。

その時は、ドライバなんてないから、自分で直接プリンタを制御した。


たしか、プリンタ接続用の子基板を、ハードの人が作ってくれたはず。プリンタ制御用の IC が入っているの。

それで、プリンタだけでなく、占いに使う別のユニットとの通信もやっていた。


この通信は、4bit の「ニブルモード」だったのだけど、これも今考えると IEEE1284 のニブルモードだったのではないかな。

当時はそれほど規格に詳しくなくて、スペックシート読みながら先輩がプログラム組んでいただけだけど。


まぁ、プリンタ用の IC を使っていただけで、プリンタポートに変なものをつないだわけではないのだけど、信号的には同じ気がする。




以上。


プリンタポートには案外プリンタ以外のものが繋がる、という話を書きたかっただけなので、オチはない。

プリンタポートの構造が単純だったからこそ、こうした応用も簡単だった。


今は USB でなんでもつながるけど、USB に自作の回路をつなげようとか思うと大変だ。


(USB から簡単に自作回路を制御できる装置、みたいのは売っているけど)




同じテーマの日記(最近の一覧)

コンピュータ

別年同日の日記

03年 Mac の新しい WebBrowser

13年 続・Windows8

17年 Android の cordova で file を扱う


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -