HP 100/200LX (以下LX) を十二分に活用するためには、母艦となるパソコン が欠かせません。このプログラムはパソコン用 UNIX のひとつである FreeBSD が動いているマシンを LX の母艦にするための最初のステップです。このプロ グラムは LX の内蔵アプリケーションである Filerのサーバモードのフリをし、 LX・FreeBSD間のファイル転送を容易にします。
このとき、 接続要求を受け取った LX (あるいはAT互換機) はサーバになり ます。サーバ側では (サーバモードを終了する以外には) 何もできませんが、 クライアントであるもう一台の LX からは、サーバ側のファイルもまるで手元 にあるかのように操作することが可能となります。
このプログラムは、この Filer のサーバモードの真似をして、FreeBSDのフ ァイルをクライアントである LX から操作することを可能にします。今回のバ ージョンでは、LXから以下の操作ができます。
操作例:
FreeBSDで利用している日本語コードが SJIS の場合
% lha xt bsdfil01.lzh
FreeBSDで利用している日本語コードが EUC の場合
% lha xet bsdfil01.lzh
DOS で解凍する場合は、普通に解凍してください。また、DOS で解凍したファ
イルを FreeBSDに転送する場合は、日本語コードや改行コードに注意してくだ
さい。
つぎに LX と FreeBSDの間でデータのやりとりができることを確認しましょ う。これには、FreeBSD 側でシリアルポートからログインできるようにし、LX から DataComm で FreeBSD にログインしてみるのがいいでしょう。FreeBSDの /etc/ttys ファイル (ttys(5)) を編集し、LX を接続したシリアルポートから のログインを許可します。
/etc/ttys の編集例 (抜粋):
ttyd0 "/usr/libexec/getty std.9600" unknown on insecure
編集が終ったら、kill(1) コマンドで変更を有効にします。
操作例:
# kill -HUP 1
BSD側の設定がすんだら、LX で DataComm を起動し、通信条件をあわせてか らログインします。/etc/ttysを上のように設定した場合は、MENU -> Connect -> Settings...で Baud を 9600, Interface を Com1, Parity を none, Data Bits を 8, Stop Bits を 1 に設定します。
DataComm の通信条件設定後 ENTER キーを押し、FreeBSD のログインメッセ ージがでてきたら準備完了です。 FreeBSD の /etc/ttys の設定を元に戻して、 BSD Filerがシリアルポートを使えるようにしておきましょう。
ttyd0 "/usr/libexec/getty std.9600" unknown off insecure
設定を戻したら、再度 kill -HUP 1 を実行してください。
操作例
% mkdir ~/bsdfiler
% cd ~/bsdfiler
% lha xet /tmp/bsdfil01.lzh
% make
転送したいファイルのあるディレクトリに移動し、このプログラムを起動し ます。起動時のオプションとして、LXを接続したシリアルポートを指定してく ださい。
操作例
% cd test-for-lx
% ~/bsdfiler/bsdfiler /dev/ttyd0
起動できたら、LX で Filer を動かし、通信条件を設定後に接続します。
操作例
FILER -> MENU -> Communications -> Remote Settings...
Baud を 9600, Interface を Com1 に設定 -> OK {F10}
Connect {F10} -> Remote {F6}
接続できたら、LXどうし、あるいはConnectivity Packにつないでいる時と同
様に操作してください。このバージョンでは、LX から次の操作ができます。
・DataComm で FreeBSD にログインできない。
→まず、ttys(5) や LXの設定を確認してください。次に、
# stty -f /dev/ttyid0 clocal -crtscts hupcl
# stty -f /dev/ttyd0 clocal -crtscts hupcl
でフロー制御を無効にしてみてください。それでもダメなら、FreeBSD を動
かしているマシンで DOSを起動し、Connectivity Pack や通信ソフトで接続
できることを確認してください。その後、FreeBSD に戻って設定を再確認し
てください。
・bsdfiler を起動させようとすると can't open /dev/ttyd0 と表示されて
起動しない。
→/dev/ttyd0 へのアクセス権限がないのが原因だと考えられます。
root になってから chmod(1) してください。
操作例
% ls -l /dev/ttyd0
crw------- 1 root wheel 28, 0 May 19 21:17 /dev/ttyd0
% su
# chmod 666 /dev/ttyd0
# exit
% ls -l /dev/ttyd0
crw-rw-rw- 1 root wheel 28, 0 May 19 21:17 /dev/ttyd0
また、そのポートで getty(8) が動いているかもしれません。この場合は
/etc/ttys を編集して kill -HUP 1 で getty を止めてください。
・bsdfiler の起動には成功したが、LX で Connect {F10} を押しても接続で
きない。
→stty(1) コマンドで、シリアルポートの設定を確認してください。
操作例
% ~/bsdfiler /dev/ttyd0 &
% stty -f /dev/ttyd0 everything
speed 9600 baud; 0 rows; 0 columns;
lflags: -icanon -isig -iexten -echo -echoe -echok -echoke -echonl
-echoctl -echoprt -altwerase -noflsh -tostop -flusho -pendin
-nokerninfo -extproc
iflags: -istrip -icrnl -inlcr -igncr -ixon -ixoff -ixany -imaxbel ignbrk
-brkint -inpck -ignpar -parmrk
oflags: -opost -onlcr -oxtabs
cflags: cread cs8 -parenb -parodd hupcl clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
discard dsusp eof eol eol2 erase intr kill lnext
<undef> <undef> <undef> <undef> <undef> <undef> <undef> <undef> <undef>
min quit reprint start status stop susp time werase
1 <undef> <undef> <undef> <undef> <undef> <undef> 0 <undef>
また、LX側で Filer の Remote Settings... も再度確認してください。
このプログラムの運用によって生じた結果については一切責任を負いかねま すのでご了承ください。使用前には LX、FreeBSD ともにディスクのバックアッ プをとったほうがいいかもしれません。
このプログラムの全部、または一部をそのまま利用して商用目的のプログラ ムを作成することはご遠慮ください。
フリーソフトウェアの作成や個人的な範囲での利用が目的の場合は、このプ ログラムの全部、または一部をそのまま利用してもかまいません。他機種への 移植や他のオペレーティングシステムへの移植およびフリーソフトウェアとし ての公開は大歓迎です。その場合、作者への連絡は不要です。 (でも、報告し てくれたり、ドキュメントに一筆書いてくれたり、さらには、そのソフトのソ ースを公開してもらえると非常にうれしいです。)
このプログラムを再配布する場合は、アーカイブファイル bsdfil01.lzhに 含まれるすべてのファイルを変更せずにそのまま配布してください。再配布す る場合はメイルなどでご連絡いただけるとありがたいです。
Sun SPARCstation, Sony NEWS, SGI Indy 他でコンパイルにチャレンジして くれた 京都工芸繊維大学の 太田勝巳さん、 夏コミ本編集会議にて「xmkmf -a; make か ./Configure; make 一発で、どの UNIX でも動くようにしよう」と圧 力をかけて^H^H^H^H^H^H提案してくれた "かふぇ・ぱらだいす" & "うちゅーせーはProject" のみなさんに感謝します。