コマンドプロンプトの完成と次に向かって
まあ、今考えたって仕方がないことを考えても仕方がない。
「コマンドプロンプトの完成を急ごう」
コマンドプロンプトといっても本当に簡単なものだから、作るのは問題ない。
しかもそのほとんどはOSの機能を呼び出すだけだから更に簡単だ。
こんなに簡単にできるなら悩んでいる間に作っておけばよかった。
「まあ、こんなもんだな」
とはいっても、現在HDDに入っているのはテスト用のファイルだけで、何が出来るというものではないが。
「せめてtypeコマンドくらいは欲しいな」
typeコマンドは結構使うからな。
エディタで開くほどのないテキストファイルはtypeコマンドを使うのが普通だ。
内部コマンドに追加するか。
これも簡単だ。
ファイルを一文字ずつ読み出して表示ルーチンへ渡すだけだ。
制御コードの処理はOSがやってくれるし。
Ctlr+Cで中断する機能もOS任せだ。
「あとは必要に応じて追加していけばいいか」
これでOSとしては最低限の機能が入ったわけだが、次はどうしたものか。
「事務処理に使うならワープロか表計算なんだか、さすがにそんな大物は無理だ」
自分が便利だと思えたアプリを思い出していく。
「ああ! エディタだよエディタ」
これが無くてさんざん苦労したのに、一番に出てこないとは情けない。
「もう手書きは嫌でござる」
一文字くらいの修正ならともかく、数行の修正ともなると書き直した方が良かったりする。
ここの消しゴムって、向こうみたいに柔らかくない。
消しゴムって僕は言ってるけどゴムじゃないし。
スライムかなんかの加工品らしい。
だからこちらでの正式名称を日本語に訳せば『字消し』というのが妥当だろう。
僕はつい『消しゴム』って言っちゃうけど。
で、コレが固いし紙も質が悪いから、うっかり力を入れすぎると、破れたりひどく毛羽立ったりする。
鉛筆も強度が足りないのか、よく折れるし。
「さて、ざっと仕様を決めてしまうか」
パソコン黎明期のエディタと言えば、ラインエディタだ。
今じゃ使う人はいないだろうが、MS-DOSにもedlinというラインエディタが入っていたはずだ。
これは名前の通り一行ずつ編集するアプリで、はっきり言って使い勝手が悪い。
「今更ラインエディタとか使いたくないんですが」
昔はBASIC付属のエディタが、ラインエディタだったし、MS-DOS時代でもフロッピーディスクがメインだったころはスクリーンエディタが入ってなくて、仕方なくedlinを使ったものだ。
数十行程度の文ならそれでもいいが、長文を書くのは向いていない。
そのため今時のエディタと言えばスクリーンエディタしかない。
絶滅危惧種的存在と言えば、その使い勝手の悪さがわかろうというものだ。
だが、昔のアプリと言うだけあって、作るのは簡単だ。
スクリーンエディタは僕も作ったことがあるが、画面関連の処理だけでも膨大な量のプログラムを書かなければならない。
「ラインエディタでいくかスクリーンエディタにするか。それが問題だ」
ラインエディタを作ってからスクリーンエディタという手もあるが、エディタを二つも作りたくない。
特に、スクリーンエディタが完成したら必要なくなるのが分かっていては、モチベーションも上がらない。
「簡単に作れるスクリーンエディタってなかったかな?」
ここはやはり過去の経験に頼るしかない。
これぞ知識チートというものだ。
自分で考えたら知識じゃないし。
さてと。
僕はしばし過去を思い出す。
エディタでよく知られているとなれば、メモ帳かvi、Emacsが有名であるが、メモ帳やviはともかくEmacsは巨大すぎてとても無理だ。
MS-DOSのエディタだとmifesやvzを愛用していたが、これだって結構大きなアプリだ。
それより前となればCP/Mのエディタか。
僕が使ってたのはSMC EDITとかいうやつだったと思う。
Sonyの出していたSMC-777Cというドマイナーパソコンだけど、CP/Mがエディタつきで他の機種用よりとてつもなく安く買えたのであえて選んだ。
このエディタが確かスクリーンエディタではあるけど、文字入力する時は『I』を押して挿入モードにしないといけないとかいうような、コマンドモードと編集モードがあった。
viなんかと同じ系統かな。
結局viの縮小版が無難か?
「あっ、スクロールができなかった」
今はログ端末風表示だ。
さすがに最下行が一番上に表示されるスクリーンエディタはないな。
前後が逆になってるエディタなんてわけがわからないよ。
ん? まてよ。
「……そうか、ログ端末だよ」
汎用機の端末ってスクロールできなかった(機能を使ってなかった?)から今の状況とそっくりなんだよ。
汎用機風にすれば、書き換えを少なくする事が出来るはずだ。
なにしろ遅い通信速度でも使えるように工夫されているからな。
「確かコマンド部と表示部があったはずだ」
最上行がコマンド行で、左端が行番号だったかな。
記憶が曖昧だが、確かそんな感じだったはず。
上のコマンド行でファイルを保存したり、表示開始行を指定したり、検索したりする。
横の行番号のところにもコマンドが入れられ、行削除や行挿入などができた気がする。
テキストの表示は、基本一画面単位だから、多少使い勝手に問題はあるが、当面使う分にはこれでいいだろう。
問題になりそうなのは、改行の扱いだろう。
汎用機に改行はない。
いや、あるにはあったはずだがそこの運用では使ってなかったような気がする。
テキストはなんと固定長だ。
八〇バイト固定とかで、強制改行。というか八〇バイト以降は入力出来ず、自分で行挿入しないといけなかったはず。
固定長データだから、改行コードは不要であり、扱いは簡単だ。
八〇の倍数が行頭になるし、画面に書き込んだ内容をそのまま書き出せばいいのだから、行単位でメモリ確保だの解放だのするより、よっぽど楽だ。
改行を入れたくないのであれば、行の最後に続き記号でも入れればいい。
「なんかイメージできてきた」
テキストエディタの何が面倒かというと、画面周りと、可変長のテキストデータの扱いであろう。
可変長データというのは、とにかくランダムアクセスに弱い。
行の先頭位置を知るためには、あらかじめテーブルを作っておくか、先頭から(あるいはマークした行などから)探していかないといけない。
数行ならたいしたことないが、巨大なファイルだと、このテーブルを作るだけで、かなりの時間がかかる。
そのほか、一行ごとにリスト化しようものなら、とんでもなく時間がかかったものだ。
今でさえ数百メガのファイルを読み込もうとすると、ハングしたかと思うくらい時間がかかるエディタがあったりする。
なにも考えずに作ると、そういう目にあう。
今回そんな巨大ファイルを使う予定はないが、処理速度が遅いので、出来るだけ簡略化したい。
「よし、最低限の機能をもつエディタを作るぞ」
これまでいろいろなエディタを使ってきましたが、一番すごいと思ったのはX68000のWINDEXというエディタですね。
当時珍しかったGUIベースのマルチウィンドウのエディタで、キャラクタベースのエディタとは一線を画した先鋭的なエディタでした。
DOS版も出たようですが編集可能なテキストが64kバイトと残念な出来で、いつしかひっそりと消えていきました。
mifesやvzと同じ時代にグラフィカルなエディタの登場ですからその先進性に驚いたものです。