先日某所で Canon Cat に触れる機会がありました。
概要はいつものごとく Wikipedia を参照いただきたいのですが、Canon Cat は Macintosh プロジェクトの半ばでアップル社を離脱した Jef Raskin 氏が独自に設計したキャラクタインターフェイスのコンピュータ(注 1)です。CPU が 68000 という共通点はあるものの Macintosh シリーズとは全く異なるアーキテクチャを持っています。
まず目につくのはスタイリッシュかつコンパクトな筐体デザインです。オリジナル Mac(128k Mac)と同様に 9 インチモノクロモニタと 3.5 インチFDD 1 基を搭載しており、おおよそのサイズ感も同等です。ただし Canon Cat はモニタと FDD を横並びにしたレイアウトで、またキーボード一体型なので、全体のシルエットは本邦の名機 Sharp MZ-80B ないし MZ-2000 を思わせるものがあります。ボディカラーは Mac に似た白味の強いベージュで、シンプルながらも個性的な存在感があります。
機能面の特徴は完全なキャラクタベースのシステムという点で、マウスどころかカーソルキーまでも撤廃した入力インターフェイスを持ちます。画面のカーソル移動は 2 つの Leap キーを使って行います。これは一種のインクリメンタルサーチ機能で、若干 Emacs を思い起こさせる動作です。
Canon Cat のシステムソフトウェアは t-Forth で実装されており、隠しコマンドを入れることで Forth のコンソールに入ることができます。詳しい情報を事前に知らなかったので Forth モードで Canon Cat をいじることはできなかったのですが、通常のワープロモードで少し操作しました。128k Mac とはまた違うコンパクトなマシンの操作感はなかなか魅力的で「できれば手に入れたい!」と思わせるものでした。しかし調べたところ当時の販売期間が極端に短かかったこともあって台数はさほど出なかったらしく、今となっては入手困難なようです。
Leap キーボード製作工程
次善の策としてエミュレータを探すことにしました。Mame バージョン 0.219 あたりで動くコードがあるようです(注 2)。Mac 上で動かしてしばらく使っていましたが、実物のキーボードを触った経験からすると Leap キーはスペースバーの下に配置して、親指で操作するのがしっくり来るようです(注 3、注 4)。
そこで Canon Cat のキー配列をできるだけ再現した Leap キーボードを作ることにしました。まずは Keyboard Layout Editor ツールを使ってキーボードレイアウトのデザインから始めます。
http://www.keyboard-layout-editor.com/
Leap、Use Front、Document の各キーが標準キーボードとは異なる配列になります。 Keyboard Layout Editor ツールが出力する JSON ファイルを元にして、次のツールを利用してキーボードの PCB データを生成します。
https://adamws.github.io/keyboard-tools/guide
これらのツールを使用した場合、基板データの作成は通常と異なりレイアウトデータのインポート -> PCB データ生成 -> 回路図作成 -> MCU 回路追加 -> PCB データ更新、という流れになります(これが原因で後でエラーを出しました)。
変則的な作業手順でしたが比較的すんなりと基板発注データを JLCPCB へ提出できました。発注後一週間も待たずに基板が到着します。いつもながら早い。
今回はダイオードと抵抗のチップ部品のみ PCBA で部品調達と組み立てを依頼しました。約 60 箇所の手はんだ工程が省けるのと、一般的な SMT 部品は JLCPCB 内部調達で安価に購入できる点が長所で、 PCBA は趣味の基板製作でも便利に利用できます。
ぜいたくを言うならキースイッチ用のミルマックスソケットも PCBA で調達したかったのですが、実装方法が特殊な部品なのでさすがに対応してないんじゃないかと思います。
しかし同形式の部品を使った安価なホットスワップキーボードも各社から販売されているので、もしかしたらミルマックスソケットは PCBA 可能かもしれません。
スイッチプレートは自宅 3D プリンタで作成しました。幅 30cm を超えるサイズなので 3 分割でプリントしています。基板に直接乗せるタイプのプレートなので分割しても剛性的な問題はあまりありません(基板自体を安定にサポートする必要があります)。
基板配線チェックの際にエラッタが判明しました。キーボードレイアウトから設計を開始するワークフローでろくに回路図を検証しなかったのが原因かと思われます。ドロナワ式で回路図修正->基板ジャンパ配線の順に進めます。
MCU には Raspberry Pi Pico を使用します。基板が完成したあとでコントローラのファームウェア設定を始めるのもどうかと思いますが、qmk に慣れてしまうとこの程度のキーボード設定はかなり容易です。
試作品テスト
以上で最低限動作する Leap キーボードができました。この時点での試作品と位置づけて操作テストを行います。
Leap キーボードの操作方法は Canon Cat クイックリファレンスガイドに説明されています。試作段階で気づいた改善点は次のようになります。
- 市販キーキャップが適合しない。Leap キーや他の特殊キー用に 2u x4、1.5u x1 が必要
- Leap キーのキーキャップはスペースバーより低いプロファイルのものを選んだほうがいい
- ISO Enter キーは L 字型の左端が足りず余白ができるがこのままでも差し支えなさそう
- スタビライザがスムーズに動くようプレートを再設計する
- ちゃんとしたケースに入れたい
- キーボード中央部分はネジ穴がないが基板下から支柱でサポートする
- 基板と支柱間にクッション材を挿入する
以後はケースと基板サポート構造の設計、エミュレータ詳細設定、エミュ用コンピュータの選定の順で進める予定です。
参考:
- High Tech Heroes #37: Jef Raskin (YT) Jef Raskin インタビュー番組(注 5)
- KansasFest 2021 25 Reverse Engineering Jef Raskin (YT) Jef Raskin, Canon Cat, Swyft システムに関するセッション
- https://github.com/erangell/kfest2021 (Github) Swyft ソフトウェアエミュレーション(Apple IIe やそのエミュレータ上で動作)
- http://www.bitsavers.org/pdf/informationAppliance/cat/tForth_Manual_Sep88.pdf Cat tForth マニュアル、冒頭に Canon Cat を Forth モードにするコマンドの説明あり
- https://archive.org/details/jefraskin Jef Raskin Archive – Internet Archive
注:
- 販売元は「ワークプロセッサ」と銘打ちワープロ主体の使い方を全面に打ち出していましたが、簡単なキーワードで Forth モードに入れるため「コンピュータ」製品と称して差し支えないでしょう。
- Internet Archive のオンライン Cat エミュレータは Mame 0.239 ベースです。個人的には Mame リリース 0.219 をローカルにインストールして使っており、こちらの方が比較的安定動作する(?)ようです。ただし、どのリリースでもまったくクラッシュしないわけではありません。
- とはいえ Canon Cat のプロトタイプとなった Swyft システムは Apple IIe 上で動いており、IIe キーボードではスペースバー左右の Open/Close Apple キーが Leap forward/back に割り当てられています。
- Swyft(Swift 言語とは別物)は本来 Apple IIe に専用 ROM カードを差すことで起動するのですが、近年完全ソフトウェアエミュレーション化されています(https://github.com/erangell/kfest2021)。
- この番組「High Tech Heroes」はアップル本社にほど近い Foothill College で撮影・製作されています。
- Canon Cat と同系統のデバイス Information Appliance(Jef Raksin 氏の会社名でもあるがここではデバイス名)プロトタイプのキーボードがこのページで確認できます。これによると最終的に Leap キーはスペースバーの左右へ移動されているようです(最下段のキーは左から Use Front, Leap, Space, Leap, Use Front, Phone)。