• エディット刑事K

MicrosoftのVisual Studio Codeエディタを、初めて使ったとき思い出したことがある。VS Codeでは、キーボードショートカットにCtrl+Kと他のキーを組み合わせて使う。このとき、一部のキーボードショートカットでは、2つ目のキーにCtrlキーを付けず、文字キーをそのまま押す。この組合せは遥か昔にWordStarで使ったキーだ(VS Codeの標準キー割り当てはWordStar互換ではない。念のため)。マウスやカーソルキーを使うGUI上のエディタやUnix由来のエディタに慣れてしまっていて、この組み合せは長らく使っていなかった。

WordStarではCtrl+Kは、Block Menuと呼ばれていた(写真01)。というのもこのキーを押すと、画面上部に機能の一覧とキーの対応が表示されたからだ。メニューといっても結構大きく、いまでいえばOfficeのリボンのような感じである。当時は、固定した位置に文字が表示されるキャラクタディスプレイで、今のように文字をビットマップ描画してはいなかった。メニューが出ていると画面が狭くなるが、このメニューは、設定で表示させないこともできた。メニューを完全に表示させないようにすると、現在のエディタのキーボードショートカットとほぼ同じになる。

  • 写真01: 動作中のWordStar(Ver.3をエミュレーターで動かしたもの)の画面。画面上の反転している部分がメニューで、Ctrl+Kを押すとブロックメニューが表示される。設定でメニューを表示させないこともできた

いまでも一部のアプリケーションがカーソル制御に使う、俗に言う「ダイヤモンド・カーソル」は、WordStarがその始まりである。当時、キーボードもハードウェアごとに違いがあり、多くのマシンに共通のキーですべて操作できるようにするにはコントロールキーの組合せを使うしかなかった。

当時の8 bit CPUを使ったマシンは、まだパーソナルコンピュータとは呼ばれおらず「マイクロコンピュータ」といった。コンピュータに「大型」、「中型」、「小型」といった分類があった頃なので、「小型」(ミニコンピュータ)の下という意味で「マイクロ」だった。これが日本に来ると「マイコン」と略されるようになる。もっとも今では「マイコン」は、マイクロコントローラーの略とされている。当時は、TK-80のようなボードコンピューターから、現在のパソコンと同じようなハードウェア構成のApple II、PET-2001、TRS-80のようなものまですべて「マイコン」だった。

初期のマイクロコンピュータは、CPUに8080系のプロセッサを使っており、命令セットは同じだったが、周辺回路部分がメーカーにより異なっており互換性がなかった。いまではパソコンにディスプレイを接続できるのが当たり前だが、マイコンの時代、プリンタとキーボードを組み合わせた「テレタイプ」型ターミナル(TTY)や、CRTを使う「グラス/ビデオターミナル」を接続して使うことも少なくなかった。今のようにメモリ割り当てされたビデオメモリ(VRAM)で画面を表示するハードウェアが一般的になったのは、前述のTRS-80などが出た1977年頃である。また、5.25インチのフロッピーディスクやそのコントローラーにも複数の製品があり、お互いに互換性がなかった。このため、CP/Mは、ユーザーが移植を行なうことができた。

こういう状態なので、CP/Mは、オペレーティングシステムといっても異機種間の互換性は高くはなく、同じ形式でも他機種のフロッピーが読めるとは限らなかった。なので、WordStarやその前身のWordMasterなどのプログラムも、環境に合わせてパッチを当てて動作させる必要があった。もっとも、こうしたマイクロコンピュータへの移植を行い、メーカーにライセンスするのが開発元であるMicroPro社のビジネスでもあった。

基本的にCP/Mは8080A互換のCPUを使い、RAMが0番地から始まっていることが必須条件である。世の中には、メモリ空間の先頭にROMを置いてしまうようなハードウェアがあり、こうしたハードウェアではCP/Mを動かすことができなかった。もっとも、初期にはフロッピーディスクが扱えるBASIC(言語)が動けば十分というユーザーも少なくなかったので、絶対に困るわけでもなかった。

しかし、ソフトウェア開発をするときには、話が違う。アセンブラやリンカといった開発用ツールの大半はCP/Mでないと動かすことができない。そもそもこうした開発ツールもCP/Mの開発元デジタル・リサーチの商品だった。こうした時代に使われたエディタがWordStarだった。

WordStarは、1979年に8080のアセンブラで作られた。さまざまなマイコン、ビデオターミナルに対応できるように、プログラムの先頭部分にパッチ用のエリアがあった(写真02)。先頭部分にあったのはバージョンアップでプログラムが大きくなっても番地が変わらないようにしたからだ。8080系CPUの命令は、ジャンプやサブルーチン呼び出しに絶対番地を使うので、実行可能な機械語になったら、プログラムの開始位置を簡単に変更することはできなかった(もちろん仮想記憶もない)。ここに画面クリアやカーソル移動などの動作を行なう機械語プログラムやWordStarが参照する画面の文字数、行数などの定数値を書き込むことでさまざまな「プラットフォーム」で動作できるようになる。

  • 写真02: WordStarのマニュアルには、このように画面出力部のアセンブラリストが掲載されていた。付属のインストールプログラムで著名なハードウェアには対応できたが、対象外の場合にはユーザーがパッチをあてることもできた

当時、筆者はアルバイトでプログラムを書いていたが、機種ごとにビデオメモリの性能や構成やアドレスが異なるため、実機でデバッグしたほうが効率が良かった。新機種だと、メーカーからCP/Mが提供されないこともあり、開発はCP/MやWordStarの移植からということもあった。

今回のタイトル元ネタは、1973年の特撮番組「ロボット刑事」である。この作品に登場するロボット刑事の名前が「K」である。いまでは、自動車が自律走行するが、当時はロボットがハンドルを握って自動車を運転していた。

WordStarでは、テキストの一部を移動やコピーさせるとき、開始位置でCtrl+K、Bと押し、終了位置でCtrl+K、Kと押す。もちろん移動もコピーもCtrl+Kを使う。何回もKを押すので、いつもこの番組と主題歌を思い出していた。