エディタは簡単でした
思いの外、端末風エディタは簡単でした。
固定長データのエディタがこんなに作り易いとは思わなかったよ。
可変長データだとデータ長の管理が面倒くさいのだ。
行位置の把握と長さの把握は、通常のエディタでは必須だ。
しかし固定長なら不要になる。
全体の長さがわかっていればいい。
画面表示もメモリの内容をそのままキャラクタRAMにコピーして、行番号を表示すればいい。
SHIFT-JISとかの二バイトコードがないのも良かった。
二バイトコードがあると逆方向検索とか結構めんどくさかったりする。
カーソル位置も二バイトコードがあると半角二文字分移動しないといけなかったりして、これまた面倒な処理が必要になる。
更に処理を簡単にするため、表示領域には左に五桁の行番号とコロンで区切り文字とし六桁分マイナスでテキストデータは七四バイトの固定長データにした。
画面自体が八〇桁だから、横スクロールしなくても編集が可能だ。
行番号は五桁固定だが、一〇万行まで編集できれば当面問題なかろう。
そしてこの行番号領域には行コマンドが入れられる。
使えるコマンドは行デリート、新規行挿入、行コピー、行ペースト、行移動で、それぞれ複数行を指定でき、enterを押した時点で実施される。
編集領域は、入力した時点でテキストデータとキャラクタRAMとが同じように書き換えればいいから用いるシーケンスは共通化できる。
一番上の行はコマンド行で、一行下は編集領域との区切りで、ここと行番号の区切りは編集不可だ。
見た目は以下のような感じになる。
command=>
-----------------------------------------------------------------
00001:ここが
00002: テキストデータを
00003: 表示編集する
00004: 領域
~~~~~~~~
コマンドで使えるのは、上書き保存別名保存と再読込、終了、そして表示行指定だ。
保存はHDD領域の他にBIOS領域やOS領域などが指定できるようにした。
これでOSの書き換えなども楽になるはずだ。間違えるとOSが起動できなくなるから、なにか手を打っておく必要があるな。後で考えておこう。
特殊キーはページアップとページダウン、インサート、デリート、バックスペースなどが使える。
あとはHOMEキーでカーソルがコマンド領域に戻る機能があるくらいだ。
必要に応じて拡張していけばいいだろう。
「とりあえず今まで作ったシーケンスをファイル化するか」
僕はテストデータを作るときに作ってあったスキャナシーケンスを使って紙データをファイルにしていく。
「よし、これで編集し放題だ」
ようやく手書き地獄から開放さる。
「いくぞ」
僕はエディタのシーケンスをいじり始めた。
こうして見るとコメントが入れられないのが面倒だな。
文字列イコール命令文なので、コメントを入れると余計なデータとして精霊は実行を中断してしまう。
「シーケンスのローダーにコメント除去シーケンスを入れてメモリに読み出すときコメントを削除するか」
シーケンスローダーはOSの機能だな。ここをイジってロード時コメントを削除する。
コメントはとりあえずセミコロン以降でいいか。
同じシーケンスをエディタにも入れる。
OSの書き換え時にOSの機能は使えないからね。
「BIOSにもローダー機能を入れておくか? そうすればOSが入れ替えられる」
起動時に複数のOSを呼び出せるようにしておけば、バージョンアップして動かなくなっても、古いOSから起動できる。
「OSのアップデートで動かなくなったという話はよく聞くからな。予め複数OSが共存できるようにしておけば、何かあったときにすぐ戻せるし」
僕はコメント除去ローダーをBIOSとOS、そしてエディタに突っ込むこことした。
これでどこからでもシーケンスがロードできる。
「しまった、クリップボードがなかった」
同じシーケンスをBIOS、OS、エディタに組み込まないといけないのに、データの一部をコピーする方法を用意していなかった。
「クリップボードをファイル化してエディタで範囲指定分を書き込むようにして、指定位置にクリップボードデータを読めるようにするか」
エディタはシングルタスクで同時に複数ファイルとか編集できないため、コピーしたら一旦終了して、別のファイルを開いてそこにペーストする必要がある。
また、一応スクリーンエディタと入っているが、コピーやペーストはすべて行単位だ。
この行の二桁目からこの行の一〇桁目までコピーして、この行の六桁目から挿入するということはできない。
ラインエディタに毛が生えたような、なんちゃってスクリーンエディタだからね。
編集単位はすべて行だ。
まあ、当面これでいいだろう。
そういえば昔、別ファイルへのコピペってどうやってたっけ? 思い出せん。
昔のエディタって複数ファイル編集ができなかったよね?
人力コピーか?
そういえばそんなことをやっていた気もする。
「まあ、いい。それよりエディタの強化だ」
これは簡単だ。
コピー機能があるからそれをクリップボードファイルに書き出すようにして、挿入時はファイルからを呼び出す機能をつけるだけ。
内部で完結していたものを一度外部のクリップボードファイルに書き出すだけだから、直ぐにできる。
「あとはローダーを各機能に組み込むだけだ」
まあ、BIOSには複数OSがあったときに選択させる機能が必要になるが。
「OSは拡張子でディレクトリから判別して、選択させるようにするか」
ローダーを組み込んだ後、OS選択シーケンスを作る。
これもディレクトリを列挙して指定拡張子のものだけ選択。
画面に表示してあとはそれを選択する部分を作ればいい。
「毎回選択するのも面倒だから、起動キーでデフォルトで起動するのと選択で起動するのと分けられるようにすればいいか」
うん、行ける。
「選択できるOSは画面に収まる範囲、とりあえず二〇個までにするか。残りはメッセージを表示するエリアってことで」
エディタがあると修正がホント楽だよ。
これまで数日がかりで編集していたシーケンスも、ものの一時間でできてしまう。
「ようやくだよ。ようやくここまでこれた」
エディタがあるとないとではここまで違うとは。
あるのが当たり前だったときはこのありがたさを忘れていたよ。
アプリ開発者に感謝しないとな。
今は自分に感謝だ。
「よくやってくれた自分。さあ僕たちの開発はこれからだ!」
って、打ち切りだよそれじゃ。
ちょっとハイテンションになった僕だった。
皆さんもエディタを状況によって使い分けすることがあるのではないでしょうか?
自分はプログラミングの時はコンパイラについているIDE、ゲームのシナリオや小説書きは自作のアイディアプロセッサ、その他ちょっとした修正はメモ帳って感じでした。
最近は仕事でプログラム書くのに秀丸エディタを使うようになって、小説書きも秀丸を使うようになってきましたけど。
自作のアイディアプロセッサはシナリオとシナリオの関連や、CGや資料などと関連付けできたりシナリオ書きには非常に便利でしたが、エディタ部分がしょぼいので使わなくなってしまいました。
いまさら手を入れるのも大変ですしね。