働き出してから(その3)
BSDの利用するためのPC9801用端末ソフトは情報工学科の教員の一言と、僕の楽しそうっていうのだけで作ることになった。といっても、専門学校でそんなソフトの作り方を習ったわけではないので手探りでつくり始めることになる。基本設計としてはキーボードからの入力を受けて、これをRS232Cポートに出す。RS232Cからの入力があれば、CRTポートに出す。これを永久ループで回すという感じ。
for(;;) {
key = key_input();
if (NULL != key ) rs232c_out(key);
rs_data = rs232c_input();
if (NULL != rs_data) crt_out(rs_data);
}
こんな感じだったような気がする。ちなみに処理系はTurbo-C Ver1.5だったと思う。DOSのRS232Cドライバだと9600bps以上になるとデータを取りこぼしたりしたので、BIOSをコールしたり、キーボードもBIOSを使わないとSTOPやCtl-Cでプログラムが強制終了してしまうので、こっちもBIOSを使ったりした。CRTの方はDOSのシステムコールを利用した。そのために、termcapファイルにDOSのエスケープシーケンスを登録した。日本語のコードの関係でJIS-7.Shift-JIS,EUCコードが来ても表示できるようにしたり、どのコードで送り出すか切り替えられるようにしたりした。
PC98は”`”が無いので、これをどれかのキーに代替えして、表示を”’”で青く表示するようにしたりもした。”`”がないとshell scriptでこまるしね。
その後、Tektronixのグラフィックターミナルのシーケンスをサポートする機能を追加したりしたんだけど、機能が足りなくってまともには使えなかった。ちゃんと使えるようにしたかったけど、hterm(確か東大の方がつくった物だったと記憶している)という僕が作ったのよりはるかにいいのが出てきたのでそれを使うようにしたので、自作のターミナルソフトはそのうち触らないようになった。
ちなみにデジタル電話回線は19200bpsまで対応していたので、僕のつくったターミナルソフトもこれに追従出来るようにはなっていたと思う。あ、ATコマンドを自動実行してソフトを起動すると自動的にVAX-11/785につながるようにもしたなー。
この時の漢字コード関係のルーチンを作った経験は後にいくつかのソフトを作るときに役に立った。一つはtinという電子ニュースリーダーがあったのだけど、これを日本語に対応させるための改造を行って、個人的に使っていた。その後、どこかの方が日本語tinを作っていたけど、個人的には自分で作ったものを使っていた。ちなみに、周りの人達はNEmacs上でGNUSを使っていた。
もうひとつはACOSというメインフレームがその時にセンターにはあったのだけど、ある教員がFACOMでつかっていたデータをACOSで使えるようにして欲しいとの以来があった。中身は、漢字コードのテキストデータだということだったので、DUMPしてみてどんなコードなのかを確認した。で、たしかEUCだったと思う。ACOSはシフトインのあとにJISをEBCDECにしたコードがきて、シフトアウトがくるという形式だった。ここまで分かればあとは簡単だった。ACOS上でC言語で感じの変換プログラムを書き、JCLを書いて、磁気テープからよみだしたデータを変換してHDに書きだすということをするだけだった。
まだまだ続く)
BSDの利用するためのPC9801用端末ソフトは情報工学科の教員の一言と、僕の楽しそうっていうのだけで作ることになった。といっても、専門学校でそんなソフトの作り方を習ったわけではないので手探りでつくり始めることになる。基本設計としてはキーボードからの入力を受けて、これをRS232Cポートに出す。RS232Cからの入力があれば、CRTポートに出す。これを永久ループで回すという感じ。
for(;;) {
key = key_input();
if (NULL != key ) rs232c_out(key);
rs_data = rs232c_input();
if (NULL != rs_data) crt_out(rs_data);
}
こんな感じだったような気がする。ちなみに処理系はTurbo-C Ver1.5だったと思う。DOSのRS232Cドライバだと9600bps以上になるとデータを取りこぼしたりしたので、BIOSをコールしたり、キーボードもBIOSを使わないとSTOPやCtl-Cでプログラムが強制終了してしまうので、こっちもBIOSを使ったりした。CRTの方はDOSのシステムコールを利用した。そのために、termcapファイルにDOSのエスケープシーケンスを登録した。日本語のコードの関係でJIS-7.Shift-JIS,EUCコードが来ても表示できるようにしたり、どのコードで送り出すか切り替えられるようにしたりした。
PC98は”`”が無いので、これをどれかのキーに代替えして、表示を”’”で青く表示するようにしたりもした。”`”がないとshell scriptでこまるしね。
その後、Tektronixのグラフィックターミナルのシーケンスをサポートする機能を追加したりしたんだけど、機能が足りなくってまともには使えなかった。ちゃんと使えるようにしたかったけど、hterm(確か東大の方がつくった物だったと記憶している)という僕が作ったのよりはるかにいいのが出てきたのでそれを使うようにしたので、自作のターミナルソフトはそのうち触らないようになった。
ちなみにデジタル電話回線は19200bpsまで対応していたので、僕のつくったターミナルソフトもこれに追従出来るようにはなっていたと思う。あ、ATコマンドを自動実行してソフトを起動すると自動的にVAX-11/785につながるようにもしたなー。
この時の漢字コード関係のルーチンを作った経験は後にいくつかのソフトを作るときに役に立った。一つはtinという電子ニュースリーダーがあったのだけど、これを日本語に対応させるための改造を行って、個人的に使っていた。その後、どこかの方が日本語tinを作っていたけど、個人的には自分で作ったものを使っていた。ちなみに、周りの人達はNEmacs上でGNUSを使っていた。
もうひとつはACOSというメインフレームがその時にセンターにはあったのだけど、ある教員がFACOMでつかっていたデータをACOSで使えるようにして欲しいとの以来があった。中身は、漢字コードのテキストデータだということだったので、DUMPしてみてどんなコードなのかを確認した。で、たしかEUCだったと思う。ACOSはシフトインのあとにJISをEBCDECにしたコードがきて、シフトアウトがくるという形式だった。ここまで分かればあとは簡単だった。ACOS上でC言語で感じの変換プログラムを書き、JCLを書いて、磁気テープからよみだしたデータを変換してHDに書きだすということをするだけだった。
まだまだ続く)