自作 ASCII キーボードを Apple II Plus に接続する

ここしばらく作成している ASCII キーボード LMD-3420 の基本機能は 7 ビット ASCII キーコードをパラレル出力することです。またこれとは別に、キー押し下げイベントを信号立ち上げ(または立ち下げ)として表す 1 ビットの Strobe 出力があります。

Lmbda-3420 キーボード。ALPS AKB-3420(ほぼ)互換

このようなキーボードをコンピュータに接続する場合、CPU からは 7 ビット ASCII コードは通常の I/O ポート入力として読み出せばいいのですが、Strobe 信号は立ち上がりでフラグがセットされるフリップフロップとして保持し、CPU から任意の時点で読みに行けるようにしておく機構が必要です。また、ASCII コードを読み出したときにフラグが自動的にクリアされると便利です。Λ-1 コンピュータでは MC6821 PIA の CA 入力を使用することでキーボードからの Strobe 出力に即した設定が可能です。ASCII コードの 7 ビット出力は PIA の 8 ビットポート PA に接続します[注 1]。

実は Apple II のキーボードインターフェイスも全く同じ構成です[注 2]。違いは ASCII コードが負論理(Λ-1)か、正論理(Apple II)かという点だけです。したがって LMD-3420 のファームウェア(qmk_firmware のカスタムコード)で ASCII コードのビット反転操作を無効にすれば Apple II へ接続できます [注 3]。

Apple II のキーボード端子は 16 ピンの IC ソケットで、下図のピン配列になっています。これにあわせて LMD-3420 キーボード基板にも同様の配列の 16 ピンソケットを用意しました。上の画像でいうと基板上端の右寄りのソケット(ケーブルが取り付けられていない)です。

※ 実際には 1/16 ピン側が Apple II 基板手前となる(出典:
http://www.1000bit.it/support/manuali/apple/R023PINOUTS.TXT)

Apple II キーボード端子と LMD-3420 キーボードを 16 pin DIP 端子のフラットケーブルで接続します。DIP ソケット対応のコネクタ端子は最近あまり見かけませんが、当時はそれなりに使われていました。

DIP ソケットのフラットケーブル

このケーブルは DigiKey で注文するとワンオフで受注生産してくれます。特に高価なものではありません。

キーボードケースとキーキャップ

これまで LMD-3420 キーボードは基板むき出しの状態で使用していましたが、完成を目指してケースと下部構造を追加します。下部構造として、適切な傾斜のついた桁構造で基板とスイッチプレートを下から支持します。左右に 2 本と、中央に小さな桁を 3 個組み合わせた構造を使用しています。左右の 2 本はケース上面の左右端を支える構造にもなります。これらの桁構造は自宅の 3 D プリンタで出力しました。インサートナットを取り付けてねじ止めが容易になるようにします。

桁構造部品の 3D デザイン

また ABS 板を切り出してキーボード底板を作りました。ここへ 3 本の桁構造をねじ止めします。ねじのうち 5 本はゴム足を取り付けるためにも利用します。

キーキャップは SA プロファイルの Aifei 製 Fishing 互換セットに変更しました。LMD-3420 キーボードは一部キー配列が変則的なので既製品のキーキャップセットでは形状・キーレジェンドが完全に適合するものが見つからない部分もありますが、今回使用したキーキャップセットでは少なくともサイズと行が合致するキーキャップがひと通り揃っています。

唯一不足するのは 8u のスペースバーです。こんな長いスペースバーを現代のキーキャップセットに期待するほうが間違っているので、あきらめて自作することにしました。ところが、スタビライザも 8u サイズのものは簡単に見つかりません。そこで 7u スタビライザが使えるように自作スペースバーのスタビライザ用ステムの位置をずらしました。スイッチプレート上のスタビライザ取り付け穴も 7u 相当の形状で設置しています。

スペースバーの 3D デザイン。スタビライザ取り付け位置は 7u 相当

このキーボードの上にケースを取り付けます。ケースは長方形の板からキースイッチ部分の穴をくり抜き、前部・後部を折り曲げた形状になっています。上面は桁構造で決まる斜面に沿って前傾しています。オリジナルの AKB-3420 ケースは金属板を折り曲げ加工しているのだと思いますが、実物を触ったことがないのでよくわかりません。今回は加工後の形状のケース部品を、8u スペースバー部品とともに 3D プリントサービスへ発注しました。ケースには 128×32 ドットの小型 OLED ディスプレイと Raspberry Pi Pico の USB コネクタ部分を外に出すための穴を開けてあります。

ケースの 3D デザイン

ケースのサイズは 36cm x 18cm で主要部分の厚さは 2mm です。サイズに比べて厚みが足りないようで、発注先 JLCPCB の 3D プリント部門から「細い部分でひずみが出るかも」というデザインレビュー警告が来ましたが「とりあえずこのままプリントしてください」と回答しました。到着した実物を確認すると案の定、ケース手前の一番細い部分が若干歪んでおりキーボードスペースバーと干渉しかねない形状になっています。ヒートガンで温風を当てつつ手で逆方向へ曲げることで問題ない程度まで修正しました。

ケース(ひずみ修正済み)と 8u スペースバーを取り付けた状態

レジン製のケースは乳白色の地味な色合いなので、この上にステッカー式のカスタム印刷デザインシートを貼付しました。以前 Λ-1 のフロントパネルに貼ったものと同じ製品です。色もフロントパネルに合わせてあります。

貼付け前のデザインシート。これは同時注文した色違い版
デザインシートを貼ったケース。OLED と USB コネクタの部分に 3D プリント製のカバーを追加しています

Apple II plus キーボード端子に接続

Apple II plus 純正キーボードは小文字入力モードがなくデフォルトで英大文字が入力されます [注 4]。また一部の記号キーが足りず Shift-P で ‘@’、Shift-N で ‘^’、Shift-M で ‘]’ を入力するようになっています。LMD-3420 キーボードではこれらの記号にもそれぞれ ANSI のキーが割り当てられているので、Shift-英文字キーによる記号入力機能は割愛しました。

前述のフラットケーブルで LMD-3420 と Apple II plus キーボードコネクタを接続し、電源投入して問題なく入力できることを確認しました。

なお上の画像では LMD-3420 キーボードが Apple II の幅より大きく見えますがこれは遠近法による錯覚で、実際には LMD-3420 も Apple II ケースも横幅はほぼ同じで 14 インチ(36 センチ)内外です。

ファームウェアの設定を変えると Λ-1 に対応

[1] 8 ビット幅の PIA A ポートに 7 ビット ASCII パラレル信号を接続するので、MSB 1 ビットが余ります。Λ-1 および Chick-Bug の設計ではこの MSB に VDG の書き込み禁止 FS 信号を入力しています。ということは、画面書き換え処理を行うたびに CA1 のキーボードストローブがクリアされるという動作になります。どうやらこれは意図的な設計らしく、Λ-1 システムでは画面書き換えが完了するまで次の文字は入力できないという挙動になります。

[2] オリジナル Apple II と Apple II plus の本体基板だけがパラレルキーボードインターフェイス対応のコネクタを備えています。Apple IIe 以降ではエンコード回路も本体基板に内蔵されるため、キーボードコネクタはもっとピン数の多いものになっています。

[3] ただし実際には左矢印キーの扱いなど一部例外的な処理があるので、キーコードマッピング自体も変更してあります。

[4] 後期リビジョンの Apple II plus では小文字入力も可能です。

コメントを残す