スタッフブログ

むかしばなし


ご無沙汰しております。ページワンの平井です。5年ぶりのブログです。

この5年間といえば、わたくし個人の出来事としては、ハンバーガーサイズの腫瘍ができて、切除して、切除後に皮膚移植で蓋をして、皮膚が定着したところで放射線治療やって、その後5年間、数か月おきにCT撮影して再発チェックしてもらって、先日ダメ押しのMRIで再発がないこと確認して、5年後生存率50%の50%側に含まれて、やれやれです。

まぁ、しかし、もう高齢者になりましたので、この先もあれこれ調子が悪いことは起きるでしょう。

ということで、昔の思い出話します。なにせ高齢者ですから。

ページワンに入社する30年以上前の話しですが、私はIBM-PC/AT互換機を大型計算機のターミナルとして使えるようにする通信ボードのファームウェアを開発していました。

その通信ボードは8088CPUに紫外線消去型EP-ROM、RAM、なんかのパラレルポート、HDLC通信コントローラ、あとDMAC(Direct Memory Access Controller)も積んでいたかな。

https://ja.wikipedia.org/wiki/Intel_8088

ROMはブートストラップローダみたいなもので、パワーオンリセットで自己診断したあとは、ポートにコマンド書かれるのを監視して、プログラムロードのコマンドが来たら、続いてポートに連続して書き込まれるバイナリデータをRAMに書き込んで、そちらにJMP。RAMに書き込まれたデータはリアルタイムモニタとターミナルエミュレータで、大型計算機と繋がったターミナルコントローラ(クラスタコントローラとかマルチコントローラとか言ったかも)とHDLC通信コントローラがデータをやり取りして、RAM上にターミナルの画面データを作って、それをPC側のアプリが通信ボードのポート経由で読みだして、PCの画面上にターミナルの画面を表示する、って感じでした。

そんなの、PCのRS-232Cシリアルポートでやればいいじゃない?と思うじゃないですか。ところがですね、ターミナルコントローラとターミナルの間は同軸ケーブルで1Mbpsとかで繋げなくちゃいけなくて、RS-232Cは使えないんですよ。

おまけにターミナルコントローラ側のチェックが厳しくて、ポーリングしてきたら10msとかでレスポンス返さないとタイムアウトでターミナルは電源落ちたと思われちゃうと。なので、この通信ボード側でCPU持ってリアルタイムモニタで通信制御しないと、あれこれ間に合わないってことだったんです。

さらにですね、この通信ボード、PC側から見た場合に、DCA (Digital Communication Associates) 社の Irmaボードと互換性を持たせろ、と。

https://en.wikipedia.org/wiki/Irma_board

PCとの間でデータをやり取りするポートの構成と、コマンドとレスポンスを互換にすれば良いってことなんだけど、なんでIrmaボードと互換にしたいかというと、大型計算機とPCとの間でファイルのアップロード/ダウンロードするIrmaボード向けのアプリケーションがあって、それをうちの通信ボードでも動くようにしたい、という訳だったんですね。

で、互換性を持たせるために、Irmaボードの仕様を提供してもらおうとDCA社に行きましたよ。ジョージア州アトランタにあったんですよ。初めての海外出張でしたよ。

事前にライセンス契約は終わっていたので、ミーティングであれこれ仕様説明受けて(英語だからわかんない)、ソースコードをいただいて(メーカー忘れたけど、シーケンサに近いマイクロコントローラ用のコードだったので、わかんない)帰りにサンホセ寄って、 Computer Literacy Bookshops でIBM-PC/AT関連の本を大量に買い込んで、サンフランシスコの空港でオーバーウェイト取られて帰ってきました。

で、まぁ、紆余曲折あって、ボードが出来上がって、ファームウェアもそれなりに動くようになって、大型計算機と LOGON:TSS とかやって、PCがターミナルとして動くようになったと。

さて、このボードを最初にお使いいただくのはオーストラリアのお客様だったんですよ。

ボードをオーストラリアの拠点に送って、拠点からお客様にボードを提供して、まずはトライアルでご利用いただいたところ、ターミナルとしては動くと。しかし、ファイル転送アプリケーションでファイル転送できないと。

ということで、2度目の海外出張はオーストラリアでした。オーストラリアだと時差ボケにならないのでいいのですが、行きの飛行機で飲み過ぎて、着いたときには二日酔いでした。あの頃は、平社員でもビジネスクラスに乗せてもらえたんですよ。ビジネスクラスだと、色々サービスいいじゃないですか。CAのおじさんにバーボンウィスキーくださいと言ったら、グラスになみなみと注がれて、それを何杯か飲んでしまったような気がします。

で、オーストラリアの最初のお客様はシドニーの警察。New South Wales Police Department とかだったかな。

そこの電算室に案内されると、うちのボードが刺さったPCが置かれていて、さぁ、調べろと。ファイル転送アプリの現地代理店の人も来てたんだけど、なんかの都合でファイル転送アプリを大型計算機上で動かせなくて、すまない、と。

はい、では、次のお客様のところへ…

これが、ブリスベンだったんですが、ちょうどその頃、国際レジャー博覧会とかやっていて、ブリスベンで宿がとれなくて、ブリスベンから南下したゴールドコーストというサーフィンが盛んなリゾート地のリゾートホテルに泊まらざるを得なかったのはラッキーでしたね。シドニーで泊まってたのはハーバー・ブリッジ近くのモーテルでしたからねー。

で、ブリスベンのお客様は保険会社様で、こちらはすでにGolden Gate Bridgeとかいうファイル転送アプリをインストール済で、会議室に籠って調査開始。ファイル転送を開始しようとしたところで、動かない。なぜ動かないか。Periscope Undercover DeBugger てデバッガのバスラインモニターボードをPCのISAバスに差して、メモリとI/Oのログをとって、動かなくなるまでのバイナリコードを逆アセンブルして、I/Oのログからどのポートにアクセスしていたかを見て、すぐ分かりました。

大型計算機とターミナルとの間は、EBCDICという文字コードでやりとりされるんですが、8bitとはいっても、制御コードがあれこれあって、扱える文字は英大文字と数字と記号のみ。アプリケーションとターミナルの間でやりとりするのは、英大文字・数字・記号のみなので、00h~FFhまでのデータを表現するには、2文字を割り当てるわけです。

で、データをダウンロードするときは、大型計算機側から1バイト送るためにはEBCDICで2文字をターミナルのふりをした通信ボードに送るわけですね。

PCからデータをアップロードするときは、通信ボード内の画面メモリに1バイトあたり2文字のEBCDICコードを書き込むと。画面に文字を書き込んでいいかどうかは、画面25行目にある状態表示行の入力禁止インディケータが消えているかどうかで判断されるのですが、入力禁止インディケータが表示されるところの文字コードをチェックして、これが空白ならば、入力可能と判断していたと。

で、わたしは、入力禁止インディケータを消すためには、そこに00hを書き込んでいたんですね。ところが、EBCDICコードの空白、40hを書き込むのが、正しかったと。入力禁止インディケータの表示位置のコードが40hになれば、画面データ書き込み可能という制御をしていたわけですね。

こういうことがあるから、ファームウェアは通信ボード上のRAMにダウンロードする形式にしていてよかったです。

その場でファームウェアにパッチをあてて、ボードにロードして、正しく動くことを確認できました。

めでたし、めでたし。

このプロジェクトを通じて、色々なIBM-PC/AT互換機をいじって、IBM-PC/AT互換機に詳しくなったせいで、その後、IBM-PC/AT互換機、後のFMVシリーズの開発に係わるようになったのでした。

ここまでお読みいただき、ありがとうございました。