初代PC-8801キーボードの仕様・USB変換

# 概要
![DSC_0326.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/78e3356e-d44a-a291-0e7c-555c4762dbc3.jpeg)

1981年発売の初代NEC PC-8801のキーボードに関する情報、及び変換器の制作記録をまとめておきます。
PC-8801キーボードには複数の種類がありますが、無印88のキーボードを対象としています。

:::note warn
ここに記載されている情報について、できるだけ正確性を担保するように努めていますが、間違いが含まれている場合があります。本ページを参考にして何かあっても、私は一切の責任を負いません。
:::


# 物理的仕様
## サイズ・重量
サイズ(公称): (W)464 x (D)214 x (H)73 (mm)
重量(公称)：2.0 (Kg)
## キー配列
![keyboard-layout.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/0fc2d631-2430-7991-43d0-79b388beae76.png)

- JIS配列
- CTRLとCAPSが隣接
- 20キーのテンキー
- 右SHIFT付近に逆L字型配置されたカーソルキー
- メインクラスタ左右両端の列がOADGと比べ0.5u広い
- STOP COPY が右上に存在
- 配列図上では右SHIFT及びテンキーEnterが存在するが、マトリクス上では同一のキー

これらの特徴のうちカーソルキー以外は後のPC-9801に引き継がれる。
Aの隣はCapsかCtrlか紛争を40年前に解決していたNEC




## 軸
![IMG_20240627_212823.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/4c99afb7-ac3d-43b8-317a-ba42343f8eb0.jpeg)
![IMG_20240627_212846.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/856b0b32-ae63-921e-f254-02495314573e.jpeg)
SMK Vintage Linear (SMK J-M0404) NEC表記
- ノーマルオープンスイッチ
- ほとんどのキーは青い軸
- TAB ファンクション等の長いキーはLow frictionと呼ばれる茶色の軸
- STOPは押下圧が非常に強い。数回弾くとキーキャップが反動で吹っ飛ぶ
- Spaceにはステムレススイッチ
- 左SHIFT Enter Spaceにはダミースイッチが使われている
- CAPSとカナ はメカニカルロック式。一度押すと、導通し続け、もう一度押すとことで解除される

### スタビライザ
スペースキーのみ金属バー+穴と軸によるスタビライザーが使用されている。

## キーキャップ
- スフェリカル（お椀状）・ユニプロファイル（すべてのキーが同一形状）
- ホームポジションF, Jのみ、くぼみが深い
- 二色成形のABSと推定
- かな表記はカタカナ

## コード
- 非常に太いカールコード
- 本体直づけ、取り外し不可

# 電気的仕様
## 回路図
![logic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/2a9b7b32-0f5b-d0d8-cbec-1363af23c650.png)

川村清 PC-8801 N88 BASIC解析マニュアル 秀和システムトレーディング株式会社 1982年発行 より転載

- キーボード側にはファームウェアの類は入っておらず、キーマトリクスの配線がほぼそのまま出ている

- 入力側のみSN74159N(4to16デコーダIC)が使用されている
- 入力側は正論理、出力側は負論理であるため、アドレス選択は2進数で正論理、キー検知は負論理で行う
- ダイオードは一部のモディファイアキーにのみ存在

10行目までのマトリクスはPC-8001のキーボードと等しい。下2行がぐちゃぐちゃなのは、PC-8001の拡張として設計されていることを示唆する。
![IMG_20240626_160411.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/3cb07366-5fc8-9eac-05f6-b3f324e95bbb.jpeg)


## コネクター
![IMG_20240614_205432.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/3da1d362-de39-dbae-3345-cb001be06388.jpeg)

```
キーボード側（オス）
14pin DIN コネクタ
  
  _________
 /10 |_| 11\
/8	       9\
|6  12 13  7|
|4   14    5|
\ 2       3 /
 \    1    /
  ---------

キーボード内部
16pin MILコネクタ
ケーブル側(メス)

       +---+
+------+   +--------+
|1 3 5 7 9  11 13 15|
|2 4 6 8 10 12 14 16|
+-------------------+

+-------------------------------------------------+
|Pin    DIN	                                      |
+-------------------------------------------------+
|1-8  | ~KD0 - ~KD7 キーボードデータ出力	          |
|9-12 | KA0 - KA3	キーボードアドレス入力 (2進数表記) |
|13	  | 5V                                        |
|14   | GND                                       |
+-------------------------------------------------+
(~は負論理を表す)

```
信号線とは別にキーボードの鉄板にアース(FG?)線がつながっている

DINとは書いたが、DIN規格に14pinのものは存在しない（らしい）
この形状のコネクタはAtari STの外部記憶装置用にも使われている（らしい）

# 変換のための手法
## 非侵襲的手法
メス側のDINコネクタを用意し、そこからマイコンに接続する
### 利点
- キーボード側に破壊的影響を与えないため、PC-8801本体と共存できる
### 欠点
- 実質的にプロプライエタリな14pin DINコネクタは入手困難である
- qmk等の既存のファームウェアを使う場合、アドレス変換ロジックを書く必要がある

## 侵襲的手法
キーボードマトリクスにマイコンを直結
### 利点 
- qmk標準の検知ロジックが使用できる
- 用意するものが少ない
### 欠点
- PC-8801との共存が不可能になる
- 製品に破壊的な影響を与える

## 折衷案
- 内部のMILコネクタからマイコンに線を引き出す
- 14本もの信号線を持つケーブルをどう入手するかという問題は残る

# 変換の例
::: note alert
以下は、あくまで私個人の私的なプロジェクトの記録です。参考にした結果、キーボードが破損したり、焼きパイが出来上がっても、私は一切の責任を負いません。

:::
私の個体は1982-4・20製造のもの。
![IMG_20240620_214932.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/e68bf873-b3a0-c36b-ac9c-56ec5dba41ff.jpeg)

## ハードウェア
変換にはRaspberry Pi pico を使用した。
2024年現在、最も入手性の良いマイコンボードである。

しばらくArduino IDEを使って試してみると、SN74159Nが破損している（多分）ことに気がついた。
4to16デコーダICは2024年現在、入手困難であるため、マトリクスに直結する方法を選んだ。

逆流防止用のダイオードがないと、マイコンが破損するかもしれない。この記事を見て変換しようとする人は注意。
![IMG_20240626_225624.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/3446afb4-8578-1576-ba48-b25ab12691e3.jpeg)


## ソフトウェア
[PC-8801用QMKのリンク](https://github.com/Arei1126/qmk_firmware_88/tree/add_pc8801_firmware/keyboards/pc8801)
qmkについては初心者だし、個人用なので、色々多めに見て下さい。

メカニカルロックのCAPSとカナは、process_user_record()内で、状態に変化が起きたときに、make&breakが発生するようにした。

レイアウトで補足が必要なのは以下の通り
|キー表記|登録キー|
|:------|:------|
| GRAPH | 左Alt    |
|INS DEL|BackSpace
ROLL {UP DOWN}| Page {Up Down}
カナ|	半角/全角
HOME CLR| NumLock
COPY| Print Screen
STOP| Pause
HELP| Scroll Lock
テンキー(,)| 通常(,)

STOPは長押しでレイヤー切り替え
| キー表記|登録キー(レイヤー上)|
|:-----|:-----|
f・1 - f・5, ROLL UP, ROLL DOWN| F6 - F12
SHIFT, GRAPH, CTRL| 右SHIFT, 右Alt, 右Ctrl

HOMEやENDといったナビゲーションキーをレイヤー上に用意しなかったのは、テンキーの標準機能だから

# 感想


2020年代現在、日本国内で比較的安価に手に入る最古のキーボードの一つ。
当時の普及機種・現代の不人気機種なので古い割に入手性が良い。
70年代を引きずったデザインが美しい。

筐体は大きく、現代の基準からすれば重いが、大きさから想像する程は重くない。つまり空洞が多い。質感で一番近いのは普通のAC扇風機の土台部分だと思う。

軸は個体差にもよるがPC-9801の黒軸よりもスムーズ。非常にショートストロークで楽しい。ステムが長いため破損に注意（事実、私の個体は１つ破損していた）

ダイオードが省略されているため、少しでも早く打鍵すると簡単に誤入力が起きる。当時のCMで、俳優が両手の人差し指２本で打っているところを見るに、それで十分だったのだろう。

ただし、カーソルキーが絶望的に使いづらい。
PC(IBMの意味で)ではテンキーがカーソルキーを担うのでそれがなんとかなっている。

古来からのエディタが頑固としてカーソルキーを使わないのは、70年代にはこんな配列のキーボードばっかりだったということの現れなんだろうな。
![IMG_20240628_222712.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/27a77f7b-2d75-6009-bf3a-7dd562f5962c.jpeg)



----

総じて、こんな化石が自分のデスクに実用品として置いてあるというだけで、笑いが出てしまうほど楽しい。

![IMG_20240629_115909.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827789/c8c5b64e-5fbd-87fe-265b-c5091b3f34a1.jpeg)

ビンテージ・レトロキーボードと聞くと安易にIBM系を思い浮かべてしまいますが、この世界にはかつて、PC以外のPCが存在していた(らしい)のです。
PC-8801の発売の4ヶ月前の1981年、IBM PCが発売されました。
ある意味ではこのキーボードは日本のmodel F的なのです。
日本国内では不人気でも、国外ではレアを超えて、存在さえ知られていない東洋の秘宝なのかもしれません。

皆様も、この機会にビンテージ・キーボードの世界へいかかでしょうか。


# 参考
https://archive.org/details/pc-8801-n88-disk_basic_analysis_manual

https://www.alldatasheet.jp/datasheet-pdf/pdf/27373/TI/SN74159N.html

http://sandy55.fc2web.com/keyboard/pc8801.html

https://deskthority.net/wiki/SMK_J-M0404_series