1.始めに
1984年頃に8ビットパソコンを入手(このときは親から買ってもらったんだけどね)してから今まで、ほぼ39年経ちました。39という細かい数字を出して、「ほぼ」というのも何ですけど。その間何か大きな事を幾つかやってきた気がするんですけど、どんなことをやってきたっけな?って思い出してみました。
2.BASE09のフロッピーディスクI/Oルーチン開発
学生の頃、たしかI/O誌だったと思いますけど、キャリーラボ製の高級言語っぽい6809用アセンブラのBASE09のダンプリストが載ったんで、入力して遊んでました。しかしこれ、オブジェクトの保存をするためのファイルI/Oがカセットテープ(古いな〜)しかサポートしていなくて、ファイルI/Oの仕様を公開するから、フロッピーディスクを動かすことが必要だと思ったら自分で作ってね、っていうことになっていたんで、作りました。
たしか、それまで作った機械語プログラムの中では最大、それでも1kバイトぐらいのものでしたが、8ビットパソコンでランタイムルーチンのない単体の機械語プログラムで1kバイトっていうのは結構な大きさです。
相手がフロッピーディスクなので、下手にバグを入れちゃうとディスクが壊れてしまうということで、結構慎重にデバッグした記憶があります。FM-7シリーズのフロッピーディスクはCPUがフロッピーディスクコントローラを動かしてCPUがデータ転送をする、という代物だったので、暴走するとフロッピーディスクコントローラーに無意味な書き込みをしてしまい、結果としてフロッピーディスクがおかしな状態になってしまう可能性があったのです。
なお、フロッピーディスクに書き込むデータは、一旦メモリー上に取ったデータバッファに貯めて、たまったら一気に書き込むっていう作りにしましたが、データバッファの大きさをF-BASICの倍にしたら、想定外にアクセススピードが速くなった、ということがありました。
勉強もせず(苦笑)、1ヶ月ぐらいかけて完成させたと思います。(1986年頃)
3.自作moreコマンド開発
unixやMS-DOSにある、テキストファイルを画面に表示させるときに、1画面表示させたら停止、スペースバーで次のページ、というアレです。何でこんなものを作ろうと思ったのか覚えていませんが、今調べてみたら、Human68kのシステムディスクにはmore.xがあるので、そのmoreが使い勝手が悪かったんでしょうね。もしかすると、昔のMS-DOSのmoreコマンドではコマンドのパラメータとして直接ファイル名を指定することが出来なかったので、Human68kでもそうだったかもしれません。でも、vを入れるとviが起動するような高尚な機能は入れてません。
これは、単純にテキストファイルの行数を数えて、一度に画面に表示できる行数を表示したら一時停止、っていうプログラムにしたと思います。Cの標準入出力関数のfputs()を使って書いたと思いますが、低レベルの関数を直接呼び出すなどして、もう少し高速化の工夫はできたと思います。
純正のCコンパイラを使ったかgccを使ったか覚えていません。かっこつけてgccに-Wallオプションを付けてコンパイルしたかもなぁ。(1990年頃)
4.TeX/LaTeXをX68000で動かす
TeX/LaTeXがX68000に移植されていました。これを動かそうとして、Nifty Serveから必要なファイルを入手。その後Metafontで必要な基本フォトデータを作るんですけど、1週間ぐらい連続稼働してなんとか完成。
このフォントファイルが出来上がるまで、何にも出来ないので、我慢するのが大変でした。
X68000では、このようにフォントファイル作成にものすごく時間がかかるので、予めほとんどのファイルを用意しておく運用でしたが、Windows機では、オンデマンドでフォントファイルを生成しても余り時間がかからないので、使うフォントはその都度オンデマンドで生成する運用になっていたと思います。(1992年頃)
5.GNU EmacsをX68000で動かす
GNU Emacsもいち早くX68000に移植されてました。gccが移植されていたからか、早くから移植されていたと思います。
僕のマシンは1MバイトのRAMを増設して、2Mバイトで使っていましたが、GNU Emacsは8M程度RAMを積んでないと動かない、ということになっていて、実際試したらやっぱり動きませんでした。
この当時、純正の増設メモリーはとっても高価で、どうしたものかと思っていたんですけど、安くなってきていた30ピンのSIMMを、X68000の拡張スロットに入れるための変換基板が売られるようになり、東京に出張するついでに秋葉原でSIMMを、小岩あたりにあった通販ショップの実店舗で変換基板を入手、RAMを拡張したらアッサリ動きました。(1993年頃)
6.groff(多分)のX68000への移植
X68000にまだ移植されていないGNUのソフトを何かgccでコンパイルして動かしたことがありました。何だったか・・・と思って思い出してみました。おそらくgroffだったと思います。groffってのは、unix上にある古典的なテキストのレイアウトツール、roffのGNU版です。
TeXだとかTexinfoとかmanページなど、ドキュメントを清書して紙に印刷するのに燃えていた時期があって、roff系のソフトが必要になったことがあったんですけど、X68000に移植されているものってなかったんです。unixの世界ではmanページの表示にroffが使われていたので、unix系のマシンには普通に搭載されていましたが、普通の人はそれをDOS系のマシンに移植する必要もないわけで、自分で移植する以外に入手できる方法がありませんでした。
基本的なロジックはプラットフォームが変わったって変わらないから、システムの仕様の違いを吸収できれば、何とかなるはず、という楽観的考えで着手したと思います。
進めて行ったところ、低レベルのファイルI/O関数を使っていて、仕様の違いからそのままで動かないので、関数を幾つか自作して動かした、ということがありました。
ちゃんと動くようになったんですけど、あまり需要がなさそうだし、メンテナンスも面倒なんで、どこかに公開するってことはしませんでした。特にGNU系は色々と面倒な話があるので・・・(1993年頃)
7.dviprt
dviprtはTeX/LaTeXの処理結果をプリンターに出力するソフトですが、プリンターの動作制御を定義する定義ファイルを作ってあげて、それを元にプリンターを制御するっていう仕組みになってます。
主要なプリンターはNifty Serveなんかに転がっていましたけど、あまりメジャーじゃないものは自分で作る必要がありました。
僕は当時エプソンから出た安いレーザープリンターを使っていて、LaTeXを使ってMDやビデオテープのラベルを印刷したり、前出のgroffの印刷なんかをしたいので、定義ファイルを自作したことがありました。
これはたしかNifty Serveのシャープフォーラムのソフトウエアライブラリにアップロードして、公開させていただいたと記憶しています。(1993年頃)
8.最後に
今はなかなか元気がなくて、ExcelのVBAで仕事で楽をするためのスクリプトを書くとか、HPの電卓のプログラムを作るぐらいしか、プログラミングとか環境整備をすることもなくなってしまいました。また何かしでかしたいとは思うのですが、なかなか・・・
0 件のコメント:
コメントを投稿
何か一言頂ければ・・・